The current gen_handles.py script uses linker defined symbols. As preparation for support of more linkers the gen_tables.py now takes the device start symbol as argument. For example, armlink and ld uses different symbols. With ld those can be named explicitly, but for armlink the linker decides the names. For ld, Zephyr defines: __device_start For armlink, the symbol is defined as: Image$$<section name>$$Base Therefore knowledge of the linker symbol to be used must be passed to gen_handles.py so that the correct symbol can be used for locating devices. To support this change, the creation of the asm, compiler, compiler-cpp, linker targets has been moved from target_toolchain_flags.cmake to target_toolchain.cmake. All linkers has been updated to support the use of the device_start_symbol on the linker target. List of linkers updated: - ld - lld - arcmwdt Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
61 lines
2.6 KiB
CMake
61 lines
2.6 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# No official documentation exists for the "Generic" value, except their wiki.
|
|
#
|
|
# https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling:
|
|
# CMAKE_SYSTEM_NAME : this one is mandatory, it is the name of the target
|
|
# system, i.e. the same as CMAKE_SYSTEM_NAME would have if CMake would run
|
|
# on the target system. Typical examples are "Linux" and "Windows". This
|
|
# variable is used for constructing the file names of the platform files
|
|
# like Linux.cmake or Windows-gcc.cmake. If your target is an embedded
|
|
# system without OS set CMAKE_SYSTEM_NAME to "Generic".
|
|
set(CMAKE_SYSTEM_NAME Generic)
|
|
|
|
# https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PROCESSOR.html:
|
|
# The name of the CPU CMake is building for.
|
|
#
|
|
# https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling:
|
|
# CMAKE_SYSTEM_PROCESSOR : optional, processor (or hardware) of the
|
|
# target system. This variable is not used very much except for one
|
|
# purpose, it is used to load a
|
|
# CMAKE_SYSTEM_NAME-compiler-CMAKE_SYSTEM_PROCESSOR.cmake file,
|
|
# which can be used to modify settings like compiler flags etc. for
|
|
# the target
|
|
set(CMAKE_SYSTEM_PROCESSOR ${ARCH})
|
|
|
|
# https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_VERSION.html:
|
|
# When the CMAKE_SYSTEM_NAME variable is set explicitly to enable cross
|
|
# compiling then the value of CMAKE_SYSTEM_VERSION must also be set
|
|
# explicitly to specify the target system version.
|
|
set(CMAKE_SYSTEM_VERSION ${PROJECT_VERSION})
|
|
|
|
# We are not building dynamically loadable libraries
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
|
|
# Custom targets for compiler and linker flags.
|
|
add_custom_target(asm)
|
|
add_custom_target(compiler)
|
|
add_custom_target(compiler-cpp)
|
|
add_custom_target(linker)
|
|
|
|
if(NOT (COMPILER STREQUAL "host-gcc"))
|
|
include(${TOOLCHAIN_ROOT}/cmake/toolchain/${ZEPHYR_TOOLCHAIN_VARIANT}/target.cmake)
|
|
endif()
|
|
|
|
# The 'generic' compiler and the 'target' compiler might be different,
|
|
# so we unset the 'generic' one and thereby force the 'target' to
|
|
# re-set it.
|
|
unset(CMAKE_C_COMPILER)
|
|
unset(CMAKE_C_COMPILER CACHE)
|
|
|
|
# A toolchain consist of a compiler and a linker.
|
|
# In Zephyr, toolchains require a port under cmake/toolchain/.
|
|
# Each toolchain port must set COMPILER and LINKER.
|
|
# E.g. toolchain/llvm may pick {clang, ld} or {clang, lld}.
|
|
add_custom_target(bintools)
|
|
|
|
include(${TOOLCHAIN_ROOT}/cmake/compiler/${COMPILER}/target.cmake OPTIONAL)
|
|
include(${TOOLCHAIN_ROOT}/cmake/linker/${LINKER}/target.cmake OPTIONAL)
|
|
include(${CMAKE_CURRENT_LIST_DIR}/bintools/bintools_template.cmake)
|
|
include(${TOOLCHAIN_ROOT}/cmake/bintools/${BINTOOLS}/target.cmake OPTIONAL)
|