toolchain: esp32: define target toolchain
In order to retrieve TOOLCHAIN_NAME from Kconfig, generic.cmake points to any toolchain as a boilerplate implementation. Now, target.cmake file handles proper toolchain selection. Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
This commit is contained in:
parent
207926c479
commit
e47eeec810
3 changed files with 64 additions and 13 deletions
|
@ -10,23 +10,48 @@ set(COMPILER gcc)
|
|||
set(LINKER ld)
|
||||
set(BINTOOLS gnu)
|
||||
|
||||
# find some toolchain
|
||||
file(GLOB toolchain_paths
|
||||
LIST_DIRECTORIES true
|
||||
${TOOLCHAIN_HOME}
|
||||
${TOOLCHAIN_HOME}/*-esp32*/*-elf
|
||||
${TOOLCHAIN_HOME}/*-esp*/*-elf
|
||||
)
|
||||
|
||||
if(toolchain_paths)
|
||||
list(GET toolchain_paths 0 soc_toolchain_path)
|
||||
# Old toolchain installation path has been deprecated in 2.7.
|
||||
# This code and related code depending on ESPRESSIF_DEPRECATED_PATH can be removed after two releases.
|
||||
if(NOT toolchain_paths)
|
||||
# find some toolchain
|
||||
file(GLOB toolchain_paths
|
||||
LIST_DIRECTORIES true
|
||||
${TOOLCHAIN_HOME}
|
||||
)
|
||||
|
||||
get_filename_component(soc_toolchain "${soc_toolchain_path}" NAME)
|
||||
|
||||
set(CROSS_COMPILE_TARGET ${soc_toolchain})
|
||||
set(SYSROOT_TARGET ${soc_toolchain})
|
||||
set(ESPRESSIF_DEPRECATED_PATH TRUE)
|
||||
endif()
|
||||
|
||||
set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/${CROSS_COMPILE_TARGET}-)
|
||||
set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET})
|
||||
if(toolchain_paths)
|
||||
list(GET toolchain_paths 0 some_toolchain_path)
|
||||
|
||||
get_filename_component(one_toolchain_root "${some_toolchain_path}" DIRECTORY)
|
||||
get_filename_component(one_toolchain "${some_toolchain_path}" NAME)
|
||||
|
||||
set(CROSS_COMPILE_TARGET ${one_toolchain})
|
||||
set(SYSROOT_TARGET ${one_toolchain})
|
||||
|
||||
if(ESPRESSIF_DEPRECATED_PATH)
|
||||
set(CROSS_COMPILE ${ESPRESSIF_TOOLCHAIN_PATH}/bin/${CROSS_COMPILE_TARGET}-)
|
||||
set(SYSROOT_DIR ${ESPRESSIF_TOOLCHAIN_PATH}/${SYSROOT_TARGET})
|
||||
else()
|
||||
set(CROSS_COMPILE ${one_toolchain_root}/bin/${CROSS_COMPILE_TARGET}-)
|
||||
set(SYSROOT_DIR ${one_toolchain_root}/${SYSROOT_TARGET})
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
if(NOT CROSS_COMPILE_TARGET)
|
||||
message(FATAL_ERROR
|
||||
"Unable to find toolchain in ${TOOLCHAIN_HOME} "
|
||||
"Run `west espressif install` to download it. Then, export to path accordingly.")
|
||||
endif()
|
||||
|
||||
set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
|
||||
|
||||
message(STATUS "Found toolchain: espressif (${ESPRESSIF_TOOLCHAIN_PATH})")
|
||||
|
|
|
@ -1,3 +1,29 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# This file intentionally left blank.
|
||||
set_ifndef(ESPRESSIF_TOOLCHAIN_PATH "$ENV{ESPRESSIF_TOOLCHAIN_PATH}")
|
||||
set( ESPRESSIF_TOOLCHAIN_PATH ${ESPRESSIF_TOOLCHAIN_PATH} CACHE PATH "")
|
||||
assert( ESPRESSIF_TOOLCHAIN_PATH "ESPRESSIF_TOOLCHAIN_PATH is not set")
|
||||
|
||||
set(COMPILER gcc)
|
||||
set(LINKER ld)
|
||||
set(BINTOOLS gnu)
|
||||
|
||||
set(CROSS_COMPILE_TARGET_xtensa_esp32 xtensa-esp32-elf)
|
||||
set(CROSS_COMPILE_TARGET_xtensa_esp32s2 xtensa-esp32s2-elf)
|
||||
set(CROSS_COMPILE_TARGET_riscv_esp32c3 riscv32-esp-elf)
|
||||
|
||||
set(CROSS_COMPILE_TARGET ${CROSS_COMPILE_TARGET_${ARCH}_${CONFIG_SOC}})
|
||||
set(SYSROOT_TARGET ${CROSS_COMPILE_TARGET})
|
||||
|
||||
if(ESPRESSIF_DEPRECATED_PATH)
|
||||
set(TOOLCHAIN_HOME ${ESPRESSIF_TOOLCHAIN_PATH})
|
||||
else()
|
||||
set(TOOLCHAIN_HOME ${ESPRESSIF_TOOLCHAIN_PATH}/${CROSS_COMPILE_TARGET})
|
||||
endif()
|
||||
|
||||
set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/${CROSS_COMPILE_TARGET}-)
|
||||
set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET})
|
||||
|
||||
set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
|
||||
|
||||
message(STATUS "Found toolchain: espressif (${ESPRESSIF_TOOLCHAIN_PATH})")
|
||||
|
|
2
west.yml
2
west.yml
|
@ -62,7 +62,7 @@ manifest:
|
|||
groups:
|
||||
- hal
|
||||
- name: hal_espressif
|
||||
revision: 0d30edf01a41b2c12e6715ff909f81421e96127e
|
||||
revision: 6cb37487b6ee42f96b4ba0d4719bb5759b098822
|
||||
path: modules/hal/espressif
|
||||
west-commands: west/west-commands.yml
|
||||
groups:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue