| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- include(component_utils)
- macro(idf_set_target)
- # Input is IDF_TARGET environement variable
- set(env_idf_target $ENV{IDF_TARGET})
- if(NOT env_idf_target)
- # IDF_TARGET not set in environment, see if it is set in cache
- if(IDF_TARGET)
- set(env_idf_target ${IDF_TARGET})
- else()
- set(env_idf_target esp32)
- message(STATUS "IDF_TARGET not set, using default target: ${env_idf_target}")
- endif()
- else()
- # IDF_TARGET set both in environment and in cache, must be the same
- if(NOT ${IDF_TARGET} STREQUAL ${env_idf_target})
- message(FATAL_ERROR "IDF_TARGET in CMake cache does not match "
- "IDF_TARGET environment variable. To change the target, clear "
- "the build directory and sdkconfig file, and build the project again")
- endif()
- endif()
- # IDF_TARGET will be used by Kconfig, make sure it is set
- set(ENV{IDF_TARGET} ${env_idf_target})
- # Finally, set IDF_TARGET in cache
- set(IDF_TARGET ${env_idf_target} CACHE STRING "IDF Build Target")
- message(STATUS "Building for target ${IDF_TARGET}")
- endmacro()
- macro(idf_check_config_target)
- if(NOT ${IDF_TARGET} STREQUAL ${CONFIG_IDF_TARGET})
- message(FATAL_ERROR "CONFIG_IDF_TARGET in sdkconfig does not match "
- "IDF_TARGET environement variable. To change the target, delete "
- "sdkconfig file and build the project again.")
- endif()
- endmacro()
- macro(idf_set_toolchain)
- # First try to load the toolchain file from the tools/cmake/ directory of IDF
- set(toolchain_file_global $ENV{IDF_PATH}/tools/cmake/toolchain-${IDF_TARGET}.cmake)
- if(EXISTS ${toolchain_file_global})
- set(CMAKE_TOOLCHAIN_FILE ${toolchain_file_global})
- else()
- # Try to load the toolchain file from the directory of ${IDF_TARGET} component
- components_find_all("${IDF_COMPONENT_DIRS}" ALL_COMPONENT_PATHS ALL_COMPONENTS ALL_TEST_COMPONENTS)
- find_component_path(${IDF_TARGET} "${ALL_COMPONENTS}" "${ALL_COMPONENT_PATHS}" target_component_path)
- set(toolchain_file_component ${target_component_path}/toolchain-${IDF_TARGET}.cmake)
- if(EXISTS ${toolchain_file_component})
- set(CMAKE_TOOLCHAIN_FILE ${toolchain_file_component})
- else()
- message(FATAL_ERROR "Toolchain file toolchain-${IDF_TARGET}.cmake not found,"
- "checked ${toolchain_file_global} and ${toolchain_file_component}")
- endif()
- endif()
- endmacro()
|