| # SPDX-License-Identifier: Apache-2.0 |
| |
| 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(TOOLCHAIN_HOME ${ESPRESSIF_TOOLCHAIN_PATH}) |
| |
| set(COMPILER gcc) |
| set(LINKER ld) |
| set(BINTOOLS gnu) |
| |
| # find some toolchain |
| file(GLOB toolchain_paths |
| LIST_DIRECTORIES true |
| ${TOOLCHAIN_HOME}/*-esp32*/*-elf |
| ${TOOLCHAIN_HOME}/*-esp*/*-elf |
| ) |
| |
| # 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} |
| ) |
| |
| set(ESPRESSIF_DEPRECATED_PATH TRUE) |
| endif() |
| |
| 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") |