Skip to content

Commit e47eeec

Browse files
sylvioalvescfriedt
authored andcommitted
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 <[email protected]>
1 parent 207926c commit e47eeec

File tree

3 files changed

+62
-11
lines changed

3 files changed

+62
-11
lines changed

cmake/toolchain/espressif/generic.cmake

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,48 @@ set(COMPILER gcc)
1010
set(LINKER ld)
1111
set(BINTOOLS gnu)
1212

13+
# find some toolchain
1314
file(GLOB toolchain_paths
1415
LIST_DIRECTORIES true
15-
${TOOLCHAIN_HOME}
16+
${TOOLCHAIN_HOME}/*-esp32*/*-elf
17+
${TOOLCHAIN_HOME}/*-esp*/*-elf
1618
)
1719

20+
# Old toolchain installation path has been deprecated in 2.7.
21+
# This code and related code depending on ESPRESSIF_DEPRECATED_PATH can be removed after two releases.
22+
if(NOT toolchain_paths)
23+
# find some toolchain
24+
file(GLOB toolchain_paths
25+
LIST_DIRECTORIES true
26+
${TOOLCHAIN_HOME}
27+
)
28+
29+
set(ESPRESSIF_DEPRECATED_PATH TRUE)
30+
endif()
31+
1832
if(toolchain_paths)
19-
list(GET toolchain_paths 0 soc_toolchain_path)
33+
list(GET toolchain_paths 0 some_toolchain_path)
34+
35+
get_filename_component(one_toolchain_root "${some_toolchain_path}" DIRECTORY)
36+
get_filename_component(one_toolchain "${some_toolchain_path}" NAME)
2037

21-
get_filename_component(soc_toolchain "${soc_toolchain_path}" NAME)
38+
set(CROSS_COMPILE_TARGET ${one_toolchain})
39+
set(SYSROOT_TARGET ${one_toolchain})
40+
41+
if(ESPRESSIF_DEPRECATED_PATH)
42+
set(CROSS_COMPILE ${ESPRESSIF_TOOLCHAIN_PATH}/bin/${CROSS_COMPILE_TARGET}-)
43+
set(SYSROOT_DIR ${ESPRESSIF_TOOLCHAIN_PATH}/${SYSROOT_TARGET})
44+
else()
45+
set(CROSS_COMPILE ${one_toolchain_root}/bin/${CROSS_COMPILE_TARGET}-)
46+
set(SYSROOT_DIR ${one_toolchain_root}/${SYSROOT_TARGET})
47+
endif()
2248

23-
set(CROSS_COMPILE_TARGET ${soc_toolchain})
24-
set(SYSROOT_TARGET ${soc_toolchain})
2549
endif()
2650

27-
set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/${CROSS_COMPILE_TARGET}-)
28-
set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET})
51+
if(NOT CROSS_COMPILE_TARGET)
52+
message(FATAL_ERROR
53+
"Unable to find toolchain in ${TOOLCHAIN_HOME} "
54+
"Run `west espressif install` to download it. Then, export to path accordingly.")
55+
endif()
2956

3057
set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
31-
32-
message(STATUS "Found toolchain: espressif (${ESPRESSIF_TOOLCHAIN_PATH})")
Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,29 @@
11
# SPDX-License-Identifier: Apache-2.0
22

3-
# This file intentionally left blank.
3+
set_ifndef(ESPRESSIF_TOOLCHAIN_PATH "$ENV{ESPRESSIF_TOOLCHAIN_PATH}")
4+
set( ESPRESSIF_TOOLCHAIN_PATH ${ESPRESSIF_TOOLCHAIN_PATH} CACHE PATH "")
5+
assert( ESPRESSIF_TOOLCHAIN_PATH "ESPRESSIF_TOOLCHAIN_PATH is not set")
6+
7+
set(COMPILER gcc)
8+
set(LINKER ld)
9+
set(BINTOOLS gnu)
10+
11+
set(CROSS_COMPILE_TARGET_xtensa_esp32 xtensa-esp32-elf)
12+
set(CROSS_COMPILE_TARGET_xtensa_esp32s2 xtensa-esp32s2-elf)
13+
set(CROSS_COMPILE_TARGET_riscv_esp32c3 riscv32-esp-elf)
14+
15+
set(CROSS_COMPILE_TARGET ${CROSS_COMPILE_TARGET_${ARCH}_${CONFIG_SOC}})
16+
set(SYSROOT_TARGET ${CROSS_COMPILE_TARGET})
17+
18+
if(ESPRESSIF_DEPRECATED_PATH)
19+
set(TOOLCHAIN_HOME ${ESPRESSIF_TOOLCHAIN_PATH})
20+
else()
21+
set(TOOLCHAIN_HOME ${ESPRESSIF_TOOLCHAIN_PATH}/${CROSS_COMPILE_TARGET})
22+
endif()
23+
24+
set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/${CROSS_COMPILE_TARGET}-)
25+
set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET})
26+
27+
set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
28+
29+
message(STATUS "Found toolchain: espressif (${ESPRESSIF_TOOLCHAIN_PATH})")

west.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ manifest:
6262
groups:
6363
- hal
6464
- name: hal_espressif
65-
revision: 0d30edf01a41b2c12e6715ff909f81421e96127e
65+
revision: 6cb37487b6ee42f96b4ba0d4719bb5759b098822
6666
path: modules/hal/espressif
6767
west-commands: west/west-commands.yml
6868
groups:

0 commit comments

Comments
 (0)