5e21434692
Zephyr does not use CFLAGS, CXXFLAGS, CPPFLAGS if they are defined in the environment but provides the option to pass them via extra cmake flags. The option is also for seen to pass AFLAGS and LDFLAGS as extra cmake flags but both of them are not ignored if they are defined in the environment which could lead to unexpected behaviour. As such lineup the behaviour between all the flags and ignore them, and generate a warning, if they are defined in the environment. Signed-off-by: Jan Van Winkel <jan.van_winkel@dxplore.eu>
74 lines
2.7 KiB
CMake
74 lines
2.7 KiB
CMake
# 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()
|
|
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()
|
|
|
|
# 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" 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")
|
|
|
|
# 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)
|
|
|
|
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)
|