diff --git a/arch/xtensa/core/CMakeLists.txt b/arch/xtensa/core/CMakeLists.txt index d03e3641b42b4b..7d7e260ca0b086 100644 --- a/arch/xtensa/core/CMakeLists.txt +++ b/arch/xtensa/core/CMakeLists.txt @@ -53,7 +53,7 @@ set(CORE_ISA_DM ${CMAKE_BINARY_DIR}/zephyr/include/generated/zephyr/core-isa-dM. set(CORE_ISA_IN ${CMAKE_BINARY_DIR}/zephyr/include/generated/core-isa-dM.c) file(WRITE ${CORE_ISA_IN} "#include \n") add_custom_command(OUTPUT ${CORE_ISA_DM} - COMMAND ${CMAKE_C_COMPILER} -E -dM -U__XCC__ + COMMAND ${CMAKE_C_COMPILER} -E -dM -U__XCC__ ${XTENSA_CORE_LOCAL_C_FLAG} -I${ZEPHYR_XTENSA_MODULE_DIR}/zephyr/soc/${CONFIG_SOC} -I${SOC_FULL_DIR} ${CORE_ISA_IN} -o ${CORE_ISA_DM}) diff --git a/cmake/compiler/xcc/generic.cmake b/cmake/compiler/xcc/generic.cmake index b6be58ceb9f467..d9020bf59bff88 100644 --- a/cmake/compiler/xcc/generic.cmake +++ b/cmake/compiler/xcc/generic.cmake @@ -17,13 +17,13 @@ TOOLCHAIN_VER: ${TOOLCHAIN_VER} endif() execute_process( - COMMAND ${CMAKE_C_COMPILER} --version + COMMAND ${CMAKE_C_COMPILER} --version ${XTENSA_CORE_LOCAL_C_FLAG} RESULT_VARIABLE ret OUTPUT_VARIABLE stdoutput ) if(ret) message(FATAL_ERROR "Executing the below command failed. Are permissions set correctly? - ${CMAKE_C_COMPILER} --version + ${CMAKE_C_COMPILER} --version ${XTENSA_CORE_LOCAL_C_FLAG} ${stdoutput} " ) diff --git a/cmake/toolchain/xcc/common.cmake b/cmake/toolchain/xcc/common.cmake index 7bca32f4e454b6..ad98033e631a71 100644 --- a/cmake/toolchain/xcc/common.cmake +++ b/cmake/toolchain/xcc/common.cmake @@ -7,7 +7,24 @@ if(NOT EXISTS ${XTENSA_TOOLCHAIN_PATH}) message(FATAL_ERROR "Nothing found at XTENSA_TOOLCHAIN_PATH: '${XTENSA_TOOLCHAIN_PATH}'") endif() -set(TOOLCHAIN_HOME ${XTENSA_TOOLCHAIN_PATH}/$ENV{TOOLCHAIN_VER}/XtensaTools) +if(DEFINED ENV{TOOLCHAIN_VER}) + set(XTENSA_TOOLCHAIN_VER $ENV{TOOLCHAIN_VER}) +elseif(DEFINED ENV{TOOLCHAIN_VER_${NORMALIZED_BOARD_TARGET}}) + set(XTENSA_TOOLCHAIN_VER $ENV{TOOLCHAIN_VER_${NORMALIZED_BOARD_TARGET}}) +else() + message(FATAL "Environment variable TOOLCHAIN_VER must be set") +endif() + +if(DEFINED ENV{XTENSA_CORE_${NORMALIZED_BOARD_TARGET}}) + set(XTENSA_CORE_LOCAL_C_FLAG "--xtensa-core=$ENV{XTENSA_CORE_${NORMALIZED_BOARD_TARGET}}") + list(APPEND TOOLCHAIN_C_FLAGS "--xtensa-core=$ENV{XTENSA_CORE_${NORMALIZED_BOARD_TARGET}}") +else() + # Not having XTENSA_CORE is not necessarily fatal as + # the toolchain can have a default core configuration to use. + set(XTENSA_CORE_LOCAL_C_FLAG) +endif() + +set(TOOLCHAIN_HOME ${XTENSA_TOOLCHAIN_PATH}/${XTENSA_TOOLCHAIN_VER}/XtensaTools) set(LINKER ld) set(BINTOOLS gnu)