set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR ${ARCH}) set(BUILD_SHARED_LIBS OFF) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) 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() 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") if(CONFIG_ARCH_POSIX OR (ZEPHYR_TOOLCHAIN_VARIANT STREQUAL "host")) set(COMPILER host-gcc) endif() # Configure the toolchain based on what SDK/toolchain is in use. if(NOT (COMPILER STREQUAL "host-gcc")) include(${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT}.cmake) endif() # Configure the toolchain based on what toolchain technology is used # (gcc, host-gcc etc.) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}.cmake OPTIONAL) # Uniquely identify the toolchain wrt. it's capabilities. # # What we are looking for, is a signature definition that is defined # like this: # Toolchains with the same signature will always support the same set # of flags. # It is not clear how this signature should be constructed. The # strategy chosen is to md5sum the CC binary. file(MD5 ${CMAKE_C_COMPILER} CMAKE_C_COMPILER_MD5_SUM) set(TOOLCHAIN_SIGNATURE ${CMAKE_C_COMPILER_MD5_SUM})