The LINKER variable is introduced to follow the same logic and flow as the existing COMPILER variable: That is, each TOOLCHAIN is responsible for choosing COMPILER and LINKER. Currently, Zephyr's build system is hardcoded for GNU ld. Reflect this in LINKER by letting all existing toolchains use GNU ld. No functional change expected. This is motivated by the wish to abstract Zephyr's usage of toolchains, permitting non-intrusive porting to other (commercial) toolchains. Signed-off-by: Mark Ruvald Pedersen <mped@oticon.com>
29 lines
1.2 KiB
CMake
29 lines
1.2 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
set_ifndef(XTOOLS_TOOLCHAIN_PATH "$ENV{XTOOLS_TOOLCHAIN_PATH}")
|
|
set( XTOOLS_TOOLCHAIN_PATH ${XTOOLS_TOOLCHAIN_PATH} CACHE PATH "")
|
|
assert( XTOOLS_TOOLCHAIN_PATH "XTOOLS_TOOLCHAIN_PATH is not set")
|
|
|
|
set(TOOLCHAIN_HOME ${XTOOLS_TOOLCHAIN_PATH})
|
|
|
|
set(COMPILER gcc)
|
|
set(LINKER ld)
|
|
|
|
# Choose one of the toolchains in 'TOOLCHAIN_HOME' at random to use as
|
|
# a 'generic' toolchain until we know for sure which toolchain we
|
|
# should use. Note that we can't use ARCH to distingush between
|
|
# toolchains because choosing between iamcu and non-iamcu is dependent
|
|
# on Kconfig, not ARCH.
|
|
file(GLOB toolchain_paths ${TOOLCHAIN_HOME}/*)
|
|
list(REMOVE_ITEM toolchain_paths ${TOOLCHAIN_HOME}/sources)
|
|
list(GET toolchain_paths 0 some_toolchain_path)
|
|
get_filename_component(some_toolchain "${some_toolchain_path}" NAME)
|
|
|
|
set(CROSS_COMPILE_TARGET ${some_toolchain})
|
|
|
|
set(SYSROOT_TARGET ${CROSS_COMPILE_TARGET})
|
|
|
|
set(CROSS_COMPILE ${TOOLCHAIN_HOME}/${CROSS_COMPILE_TARGET}/bin/${CROSS_COMPILE_TARGET}-)
|
|
set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET}/${SYSROOT_TARGET})
|
|
set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
|