| # SPDX-License-Identifier: Apache-2.0 |
| |
| if(NOT TOOLCHAIN_ROOT) |
| if(DEFINED ENV{TOOLCHAIN_ROOT}) |
| # Support for out-of-tree toolchain |
| set(TOOLCHAIN_ROOT $ENV{TOOLCHAIN_ROOT}) |
| else() |
| # Default toolchain cmake file |
| set(TOOLCHAIN_ROOT ${ZEPHYR_BASE}) |
| endif() |
| endif() |
| |
| # Don't inherit compiler flags from the environment |
| foreach(var CFLAGS CXXFLAGS) |
| if(DEFINED ENV{${var}}) |
| message(WARNING "The environment variable '${var}' was set to $ENV{${var}}, |
| but Zephyr ignores flags from the environment. Use 'cmake -DEXTRA_${var}=$ENV{${var}}' instead.") |
| unset(ENV{${var}}) |
| endif() |
| endforeach() |
| |
| # Until we completely deprecate it |
| if(NOT DEFINED ENV{ZEPHYR_TOOLCHAIN_VARIANT}) |
| if(DEFINED ENV{ZEPHYR_GCC_VARIANT}) |
| message(WARNING "ZEPHYR_GCC_VARIANT is deprecated, please use ZEPHYR_TOOLCHAIN_VARIANT instead") |
| set(ZEPHYR_TOOLCHAIN_VARIANT $ENV{ZEPHYR_GCC_VARIANT}) |
| endif() |
| endif() |
| |
| if(NOT ZEPHYR_TOOLCHAIN_VARIANT) |
| if(DEFINED ENV{ZEPHYR_TOOLCHAIN_VARIANT}) |
| set(ZEPHYR_TOOLCHAIN_VARIANT $ENV{ZEPHYR_TOOLCHAIN_VARIANT}) |
| elseif(CROSS_COMPILE OR (DEFINED ENV{CROSS_COMPILE})) |
| set(ZEPHYR_TOOLCHAIN_VARIANT cross-compile) |
| endif() |
| endif() |
| |
| # Until we completely deprecate it |
| if("${ZEPHYR_TOOLCHAIN_VARIANT}" STREQUAL "gccarmemb") |
| message(WARNING "gccarmemb is deprecated, please use gnuarmemb instead") |
| set(ZEPHYR_TOOLCHAIN_VARIANT "gnuarmemb") |
| endif() |
| |
| # Host-tools don't unconditionally set TOOLCHAIN_HOME anymore, |
| # but in case Zephyr's SDK toolchain is used, set TOOLCHAIN_HOME |
| if("${ZEPHYR_TOOLCHAIN_VARIANT}" STREQUAL "zephyr") |
| set(TOOLCHAIN_HOME ${HOST_TOOLS_HOME}) |
| endif() |
| |
| set(TOOLCHAIN_ROOT ${TOOLCHAIN_ROOT} CACHE STRING "Zephyr toolchain root") |
| assert(TOOLCHAIN_ROOT "Zephyr toolchain root path invalid: please set the TOOLCHAIN_ROOT-variable") |
| |
| set(ZEPHYR_TOOLCHAIN_VARIANT ${ZEPHYR_TOOLCHAIN_VARIANT} CACHE STRING "Zephyr toolchain variant") |
| assert(ZEPHYR_TOOLCHAIN_VARIANT "Zephyr toolchain variant invalid: please set the ZEPHYR_TOOLCHAIN_VARIANT-variable") |
| |
| # Pick host system's toolchain if we are targeting posix |
| if(${ARCH} STREQUAL "posix") |
| if(NOT "${ZEPHYR_TOOLCHAIN_VARIANT}" STREQUAL "llvm") |
| set(ZEPHYR_TOOLCHAIN_VARIANT "host") |
| endif() |
| endif() |
| |
| # Configure the toolchain based on what SDK/toolchain is in use. |
| include(${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT}/generic.cmake) |
| |
| # Configure the toolchain based on what toolchain technology is used |
| # (gcc, host-gcc etc.) |
| include(${TOOLCHAIN_ROOT}/cmake/compiler/${COMPILER}/generic.cmake OPTIONAL) |
| include(${TOOLCHAIN_ROOT}/cmake/linker/${LINKER}/generic.cmake OPTIONAL) |
| include(${TOOLCHAIN_ROOT}/cmake/bintools/${BINTOOLS}/generic.cmake OPTIONAL) |