From 1fa3f15137987ec66ef2653d2ab1ab136cd38569 Mon Sep 17 00:00:00 2001 From: Torsten Rasmussen Date: Mon, 1 Nov 2021 12:53:28 +0100 Subject: [PATCH] cmake: update configure_linker_script() to prepend `-D` on defines Currently all calls to `configure_linker_script()` specifies `-D` when calling `configure_linker_script()`. This works well for the gcc pre-processed ld linker script templates, but Zephyr also supports a CMake linker script generator which can be used for ld scripts and armlink scatter files. In this case, a `-D` must be stripped. This commit changes this so that Zephyr CMake build system calls `configure_linker_script()` without `-D`. Thus the `LINKER_SCRIPT` choice can decide how this information should be passed to underlying linker script functionality, that is `-D` for linker script template and CMake variable for the CMake linker script generator. Signed-off-by: Torsten Rasmussen --- CMakeLists.txt | 6 +++--- cmake/linker/arcmwdt/target.cmake | 4 +++- cmake/linker/armlink/target.cmake | 4 ++-- cmake/linker/ld/target.cmake | 9 ++++++--- cmake/linker/lld/target.cmake | 4 +++- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d1c502c61e..22caa5ea549 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1061,7 +1061,7 @@ if(CONFIG_USERSPACE) configure_linker_script( linker_app_smem_unaligned.cmd - "-DLINKER_APP_SMEM_UNALIGNED" + "LINKER_APP_SMEM_UNALIGNED" ${CODE_RELOCATION_DEP} ${APP_SMEM_UNALIGNED_DEP} ${APP_SMEM_UNALIGNED_LD} @@ -1246,7 +1246,7 @@ endif() configure_linker_script( linker_zephyr_prebuilt.cmd - "-DLINKER_ZEPHYR_PREBUILT" + "LINKER_ZEPHYR_PREBUILT" ${APP_SMEM_ALIGNED_DEP} ${KOBJECT_LINKER_DEP} ${CODE_RELOCATION_DEP} @@ -1298,7 +1298,7 @@ else() # file and preprocessed with the define LINKER_ZEPHYR_FINAL. configure_linker_script( linker.cmd - "-DLINKER_ZEPHYR_FINAL" + "LINKER_ZEPHYR_FINAL" ${CODE_RELOCATION_DEP} ${ZEPHYR_PREBUILT_EXECUTABLE} zephyr_generated_headers diff --git a/cmake/linker/arcmwdt/target.cmake b/cmake/linker/arcmwdt/target.cmake index e93cb47f908..fca58265c73 100644 --- a/cmake/linker/arcmwdt/target.cmake +++ b/cmake/linker/arcmwdt/target.cmake @@ -10,6 +10,8 @@ set_ifndef(LINKERFLAGPREFIX -Wl,) # NOTE: ${linker_script_gen} will be produced at build-time; not at configure-time macro(configure_linker_script linker_script_gen linker_pass_define) set(extra_dependencies ${ARGN}) + set(template_script_defines ${linker_pass_define}) + list(TRANSFORM template_script_defines PREPEND "-D") # Different generators deal with depfiles differently. if(CMAKE_GENERATOR STREQUAL "Unix Makefiles") @@ -50,7 +52,7 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -imacros ${AUTOCONF_H} ${current_includes} ${current_defines} - ${linker_pass_define} + ${template_script_defines} ${LINKER_SCRIPT} -E -o ${linker_script_gen} diff --git a/cmake/linker/armlink/target.cmake b/cmake/linker/armlink/target.cmake index 0943e255be0..359d3e7454b 100644 --- a/cmake/linker/armlink/target.cmake +++ b/cmake/linker/armlink/target.cmake @@ -31,9 +31,9 @@ macro(configure_linker_script linker_script_gen linker_pass_define) set(STEERING_FILE_ARG) set(STEERING_C_ARG) - if("${linker_pass_define}" STREQUAL "-DLINKER_ZEPHYR_PREBUILT") + if("${linker_pass_define}" STREQUAL "LINKER_ZEPHYR_PREBUILT") set(PASS 1) - elseif("${linker_pass_define}" STREQUAL "-DLINKER_ZEPHYR_FINAL") + elseif("${linker_pass_define}" STREQUAL "LINKER_ZEPHYR_FINAL") set(PASS 2) set(STEERING_FILE ${CMAKE_CURRENT_BINARY_DIR}/armlink_symbol_steering.steer) set(STEERING_C ${CMAKE_CURRENT_BINARY_DIR}/armlink_symbol_steering.c) diff --git a/cmake/linker/ld/target.cmake b/cmake/linker/ld/target.cmake index fd4b6df4fd1..ce2a4388fc1 100644 --- a/cmake/linker/ld/target.cmake +++ b/cmake/linker/ld/target.cmake @@ -32,9 +32,9 @@ macro(configure_linker_script linker_script_gen linker_pass_define) set(extra_dependencies ${ARGN}) if(CONFIG_CMAKE_LINKER_GENERATOR) - if("${linker_pass_define}" STREQUAL "-DLINKER_ZEPHYR_PREBUILT") + if("${linker_pass_define}" STREQUAL "LINKER_ZEPHYR_PREBUILT") set(PASS 1) - elseif("${linker_pass_define}" STREQUAL "-DLINKER_ZEPHYR_FINAL") + elseif("${linker_pass_define}" STREQUAL "LINKER_ZEPHYR_FINAL") set(PASS 2) endif() @@ -53,6 +53,9 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -P ${ZEPHYR_BASE}/cmake/linker/ld/ld_script.cmake ) else() + set(template_script_defines ${linker_pass_define}) + list(TRANSFORM template_script_defines PREPEND "-D") + # Different generators deal with depfiles differently. if(CMAKE_GENERATOR STREQUAL "Unix Makefiles") # Note that the IMPLICIT_DEPENDS option is currently supported only @@ -90,7 +93,7 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -imacros ${AUTOCONF_H} ${current_includes} ${current_defines} - ${linker_pass_define} + ${template_script_defines} -E ${LINKER_SCRIPT} -P # Prevent generation of debug `#line' directives. -o ${linker_script_gen} diff --git a/cmake/linker/lld/target.cmake b/cmake/linker/lld/target.cmake index 6aca2d6f35b..e9ac00ff96a 100644 --- a/cmake/linker/lld/target.cmake +++ b/cmake/linker/lld/target.cmake @@ -9,6 +9,8 @@ set_ifndef(LINKERFLAGPREFIX -Wl) # NOTE: ${linker_script_gen} will be produced at build-time; not at configure-time macro(configure_linker_script linker_script_gen linker_pass_define) set(extra_dependencies ${ARGN}) + set(template_script_defines ${linker_pass_define}) + list(TRANSFORM template_script_defines PREPEND "-D") # Different generators deal with depfiles differently. if(CMAKE_GENERATOR STREQUAL "Unix Makefiles") @@ -45,7 +47,7 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -D_ASMLANGUAGE ${current_includes} ${current_defines} - ${linker_pass_define} + ${template_script_defines} -E ${LINKER_SCRIPT} -P # Prevent generation of debug `#line' directives. -o ${linker_script_gen}