19845a7489
Some distros set the environment variable CFLAGS, this will accidentally affect Zephyr builds. To fix this we clear the environment variable from within the Zephyr build system for the duration of the CMake execution. Until now we have been instructing the user to clear it, but it is easier for the user if we clear it for him. The same applies to CXXFLAGS. Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
72 lines
2.5 KiB
CMake
72 lines
2.5 KiB
CMake
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)
|
|
|
|
# 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 CONFIG_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(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(${ZEPHYR_BASE}/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})
|