mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-06 13:25:24 +00:00
This adds the necessary bits to utilize the x86_64 toolchain built by sdk-ng for x86_64 when toolchain variant is either zephyr or xtools. This allows decoupling the builds from the host toolchain. Newlib is also available with this toolchain so remove the Kconfig restriction on CONFIG_NEWLIB_LIBC. Signed-off-by: Daniel Leung <daniel.leung@intel.com>
69 lines
2.5 KiB
CMake
69 lines
2.5 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()
|
|
|
|
# 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(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/generic.cmake OPTIONAL)
|