From 86a3e8ff4047a2889803521e0c37f3f6f76bd897 Mon Sep 17 00:00:00 2001 From: Mark Ruvald Pedersen Date: Fri, 3 May 2019 10:33:03 +0200 Subject: [PATCH] cmake: Toolchain abstraction: Introduce toolchain_ld_relocation macro 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 --- CMakeLists.txt | 21 ++------------------- cmake/linker/ld/target.cmake | 1 + cmake/linker/ld/target_relocation.cmake | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 19 deletions(-) create mode 100644 cmake/linker/ld/target_relocation.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 70e81d6d8a5..a4d8cfb98b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -750,25 +750,8 @@ if(CONFIG_GEN_ISR_TABLES) endif() if(CONFIG_CODE_DATA_RELOCATION) - set(MEM_RELOCATAION_LD "${PROJECT_BINARY_DIR}/include/generated/linker_relocate.ld") - set(MEM_RELOCATAION_CODE "${PROJECT_BINARY_DIR}/code_relocation.c") - - add_custom_command( - OUTPUT ${MEM_RELOCATAION_CODE} ${MEM_RELOCATAION_LD} - COMMAND - ${PYTHON_EXECUTABLE} - ${ZEPHYR_BASE}/scripts/gen_relocate_app.py - $<$:--verbose> - -d ${APPLICATION_BINARY_DIR} - -i '$' - -o ${MEM_RELOCATAION_LD} - -c ${MEM_RELOCATAION_CODE} - DEPENDS app kernel ${ZEPHYR_LIBS_PROPERTY} - ) - - add_library(code_relocation_source_lib STATIC ${MEM_RELOCATAION_CODE}) - target_link_libraries(code_relocation_source_lib zephyr_interface) - + # @Intent: Linker script to relocate .text, data and .bss sections + toolchain_ld_relocation() endif() if(CONFIG_USERSPACE) diff --git a/cmake/linker/ld/target.cmake b/cmake/linker/ld/target.cmake index 0c412a42f01..b2fcce397e6 100644 --- a/cmake/linker/ld/target.cmake +++ b/cmake/linker/ld/target.cmake @@ -57,3 +57,4 @@ endmacro() include(${ZEPHYR_BASE}/cmake/linker/${LINKER}/target_base.cmake) include(${ZEPHYR_BASE}/cmake/linker/${LINKER}/target_baremetal.cmake) include(${ZEPHYR_BASE}/cmake/linker/${LINKER}/target_cpp.cmake) +include(${ZEPHYR_BASE}/cmake/linker/${LINKER}/target_relocation.cmake) diff --git a/cmake/linker/ld/target_relocation.cmake b/cmake/linker/ld/target_relocation.cmake new file mode 100644 index 00000000000..a2ce7482872 --- /dev/null +++ b/cmake/linker/ld/target_relocation.cmake @@ -0,0 +1,24 @@ +# SPDX-License-Identifier: Apache-2.0 + +# See root CMakeLists.txt for description and expectations of these macros + +macro(toolchain_ld_relocation) + set(MEM_RELOCATAION_LD "${PROJECT_BINARY_DIR}/include/generated/linker_relocate.ld") + set(MEM_RELOCATAION_CODE "${PROJECT_BINARY_DIR}/code_relocation.c") + + add_custom_command( + OUTPUT ${MEM_RELOCATAION_CODE} ${MEM_RELOCATAION_LD} + COMMAND + ${PYTHON_EXECUTABLE} + ${ZEPHYR_BASE}/scripts/gen_relocate_app.py + $<$:--verbose> + -d ${APPLICATION_BINARY_DIR} + -i '$' + -o ${MEM_RELOCATAION_LD} + -c ${MEM_RELOCATAION_CODE} + DEPENDS app kernel ${ZEPHYR_LIBS_PROPERTY} + ) + + add_library(code_relocation_source_lib STATIC ${MEM_RELOCATAION_CODE}) + target_link_libraries(code_relocation_source_lib zephyr_interface) +endmacro()