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>
30 lines
1.1 KiB
CMake
30 lines
1.1 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Until we completely deprecate it
|
|
if(NOT DEFINED ENV{GNUARMEMB_TOOLCHAIN_PATH})
|
|
if(DEFINED ENV{GCCARMEMB_TOOLCHAIN_PATH})
|
|
message(WARNING "GCCARMEMB_TOOLCHAIN_PATH is deprecated, please use GNUARMEMB_TOOLCHAIN_PATH instead")
|
|
set(GNUARMEMB_TOOLCHAIN_PATH $ENV{GCCARMEMB_TOOLCHAIN_PATH})
|
|
endif()
|
|
endif()
|
|
|
|
set_ifndef(GNUARMEMB_TOOLCHAIN_PATH "$ENV{GNUARMEMB_TOOLCHAIN_PATH}")
|
|
set( GNUARMEMB_TOOLCHAIN_PATH ${GNUARMEMB_TOOLCHAIN_PATH} CACHE PATH "gnuarmemb install directory")
|
|
assert( GNUARMEMB_TOOLCHAIN_PATH "GNUARMEMB_TOOLCHAIN_PATH is not set")
|
|
|
|
if(NOT EXISTS ${GNUARMEMB_TOOLCHAIN_PATH})
|
|
message(FATAL_ERROR "Nothing found at GNUARMEMB_TOOLCHAIN_PATH: '${GNUARMEMB_TOOLCHAIN_PATH}'")
|
|
endif()
|
|
|
|
set(TOOLCHAIN_HOME ${GNUARMEMB_TOOLCHAIN_PATH})
|
|
|
|
set(COMPILER gcc)
|
|
set(LINKER ld)
|
|
|
|
set(CROSS_COMPILE_TARGET arm-none-eabi)
|
|
set(SYSROOT_TARGET arm-none-eabi)
|
|
|
|
set(CROSS_COMPILE ${TOOLCHAIN_HOME}/bin/${CROSS_COMPILE_TARGET}-)
|
|
set(SYSROOT_DIR ${TOOLCHAIN_HOME}/${SYSROOT_TARGET})
|
|
set(TOOLCHAIN_HAS_NEWLIB ON CACHE BOOL "True if toolchain supports newlib")
|