54 lines
1.9 KiB
CMake
54 lines
1.9 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
include(extensions)
|
|
include(verify-toolchain)
|
|
|
|
# Prevent CMake from testing the toolchain
|
|
set(CMAKE_C_COMPILER_FORCED 1)
|
|
set(CMAKE_CXX_COMPILER_FORCED 1)
|
|
|
|
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()
|
|
zephyr_file(APPLICATION_ROOT TOOLCHAIN_ROOT)
|
|
|
|
# Don't inherit compiler flags from the environment
|
|
foreach(var AFLAGS CFLAGS CXXFLAGS CPPFLAGS LDFLAGS)
|
|
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()
|
|
|
|
# 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" FORCE)
|
|
assert(TOOLCHAIN_ROOT "Zephyr toolchain root path invalid: please set the TOOLCHAIN_ROOT-variable")
|
|
|
|
# Set cached ZEPHYR_TOOLCHAIN_VARIANT.
|
|
set(ZEPHYR_TOOLCHAIN_VARIANT ${ZEPHYR_TOOLCHAIN_VARIANT} CACHE STRING "Zephyr toolchain variant")
|
|
|
|
# Configure the toolchain based on what SDK/toolchain is in use.
|
|
include(${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT}/generic.cmake)
|
|
|
|
set_ifndef(TOOLCHAIN_KCONFIG_DIR ${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT})
|
|
|
|
# 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)
|