cmake: update configure_linker_script() to prepend -D
on defines
Currently all calls to `configure_linker_script()` specifies `-D<name>` 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 <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
parent
43856f2dc6
commit
1fa3f15137
5 changed files with 17 additions and 10 deletions
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue