cmake: configure_linker_script: accept argument with file extension
Reduce the amount of {pre,post}fixing magic: I.e. let it be clearer at call sites that "linker.cmd" is a file, rather than having to know that "linker" will be postfixed with ".cmd" internally. Change argument name to linker_script_gen, to better indicate that we are producing a generated file. No functional change expected. Signed-off-by: Mark Ruvald Pedersen <mped@oticon.com>
This commit is contained in:
parent
4c811971f5
commit
1073fbaa00
|
@ -408,14 +408,13 @@ endif()
|
||||||
|
|
||||||
configure_file(version.h.in ${PROJECT_BINARY_DIR}/include/generated/version.h)
|
configure_file(version.h.in ${PROJECT_BINARY_DIR}/include/generated/version.h)
|
||||||
|
|
||||||
# Run $LINKER_SCRIPT file through the C preprocessor, producing ${linker_output_name}.cmd
|
# Run $LINKER_SCRIPT file through the C preprocessor, producing ${linker_script_gen}
|
||||||
macro(configure_linker_script linker_output_name)
|
macro(configure_linker_script linker_script_gen)
|
||||||
set(extra_dependencies ${ARGN})
|
set(extra_dependencies ${ARGN})
|
||||||
set(linker_cmd_file_name ${linker_output_name}.cmd)
|
|
||||||
|
|
||||||
if (${linker_output_name} MATCHES "^linker_pass_final$")
|
if (${linker_script_gen} MATCHES "^linker_pass_final.cmd$")
|
||||||
set(linker_pass_define -DLINKER_PASS2)
|
set(linker_pass_define -DLINKER_PASS2)
|
||||||
elseif (${linker_output_name} MATCHES "^linker_app_smem_unaligned$")
|
elseif (${linker_script_gen} MATCHES "^linker_app_smem_unaligned.cmd$")
|
||||||
set(linker_pass_define -DLINKER_APP_SMEM_UNALIGNED)
|
set(linker_pass_define -DLINKER_APP_SMEM_UNALIGNED)
|
||||||
else()
|
else()
|
||||||
set(linker_pass_define "")
|
set(linker_pass_define "")
|
||||||
|
@ -428,7 +427,7 @@ macro(configure_linker_script linker_output_name)
|
||||||
set(linker_script_dep IMPLICIT_DEPENDS C ${LINKER_SCRIPT})
|
set(linker_script_dep IMPLICIT_DEPENDS C ${LINKER_SCRIPT})
|
||||||
elseif(CMAKE_GENERATOR STREQUAL "Ninja")
|
elseif(CMAKE_GENERATOR STREQUAL "Ninja")
|
||||||
# Using DEPFILE with other generators than Ninja is an error.
|
# Using DEPFILE with other generators than Ninja is an error.
|
||||||
set(linker_script_dep DEPFILE ${PROJECT_BINARY_DIR}/${linker_cmd_file_name}.dep)
|
set(linker_script_dep DEPFILE ${PROJECT_BINARY_DIR}/${linker_script_gen}.dep)
|
||||||
else()
|
else()
|
||||||
# TODO: How would the linker script dependencies work for non-linker
|
# TODO: How would the linker script dependencies work for non-linker
|
||||||
# script generators.
|
# script generators.
|
||||||
|
@ -442,7 +441,7 @@ macro(configure_linker_script linker_output_name)
|
||||||
get_property(current_defines GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES)
|
get_property(current_defines GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${linker_cmd_file_name}
|
OUTPUT ${linker_script_gen}
|
||||||
DEPENDS
|
DEPENDS
|
||||||
${LINKER_SCRIPT}
|
${LINKER_SCRIPT}
|
||||||
${extra_dependencies}
|
${extra_dependencies}
|
||||||
|
@ -451,13 +450,13 @@ macro(configure_linker_script linker_output_name)
|
||||||
COMMAND ${CMAKE_C_COMPILER}
|
COMMAND ${CMAKE_C_COMPILER}
|
||||||
-x assembler-with-cpp
|
-x assembler-with-cpp
|
||||||
${NOSYSDEF_CFLAG}
|
${NOSYSDEF_CFLAG}
|
||||||
-MD -MF ${linker_cmd_file_name}.dep -MT ${base_name}/${linker_cmd_file_name}
|
-MD -MF ${linker_script_gen}.dep -MT ${base_name}/${linker_script_gen}
|
||||||
${current_includes}
|
${current_includes}
|
||||||
${current_defines}
|
${current_defines}
|
||||||
${linker_pass_define}
|
${linker_pass_define}
|
||||||
-E ${LINKER_SCRIPT}
|
-E ${LINKER_SCRIPT}
|
||||||
-P # Prevent generation of debug `#line' directives.
|
-P # Prevent generation of debug `#line' directives.
|
||||||
-o ${linker_cmd_file_name}
|
-o ${linker_script_gen}
|
||||||
VERBATIM
|
VERBATIM
|
||||||
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
@ -731,7 +730,7 @@ if (CONFIG_CODE_DATA_RELOCATION)
|
||||||
endif() # CONFIG_CODE_DATA_RELOCATION
|
endif() # CONFIG_CODE_DATA_RELOCATION
|
||||||
|
|
||||||
configure_linker_script(
|
configure_linker_script(
|
||||||
linker
|
linker.cmd
|
||||||
${PRIV_STACK_DEP}
|
${PRIV_STACK_DEP}
|
||||||
${APP_SMEM_ALIGNED_DEP}
|
${APP_SMEM_ALIGNED_DEP}
|
||||||
${CODE_RELOCATION_DEP}
|
${CODE_RELOCATION_DEP}
|
||||||
|
@ -1159,7 +1158,7 @@ if(CONFIG_USERSPACE)
|
||||||
)
|
)
|
||||||
|
|
||||||
configure_linker_script(
|
configure_linker_script(
|
||||||
linker_app_smem_unaligned
|
linker_app_smem_unaligned.cmd
|
||||||
${CODE_RELOCATION_DEP}
|
${CODE_RELOCATION_DEP}
|
||||||
${APP_SMEM_UNALIGNED_DEP}
|
${APP_SMEM_UNALIGNED_DEP}
|
||||||
${APP_SMEM_UNALIGNED_LD}
|
${APP_SMEM_UNALIGNED_LD}
|
||||||
|
@ -1203,7 +1202,7 @@ endif()
|
||||||
|
|
||||||
if(CONFIG_USERSPACE AND CONFIG_ARM)
|
if(CONFIG_USERSPACE AND CONFIG_ARM)
|
||||||
configure_linker_script(
|
configure_linker_script(
|
||||||
linker_priv_stacks
|
linker_priv_stacks.cmd
|
||||||
${CODE_RELOCATION_DEP}
|
${CODE_RELOCATION_DEP}
|
||||||
${APP_SMEM_ALIGNED_DEP}
|
${APP_SMEM_ALIGNED_DEP}
|
||||||
${APP_SMEM_ALIGNED_LD}
|
${APP_SMEM_ALIGNED_LD}
|
||||||
|
@ -1249,7 +1248,7 @@ else()
|
||||||
# first pass (LINKER_SCRIPT), but this time with a different output
|
# first pass (LINKER_SCRIPT), but this time with a different output
|
||||||
# file and preprocessed with the define LINKER_PASS2.
|
# file and preprocessed with the define LINKER_PASS2.
|
||||||
configure_linker_script(
|
configure_linker_script(
|
||||||
linker_pass_final
|
linker_pass_final.cmd
|
||||||
${PRIV_STACK_DEP}
|
${PRIV_STACK_DEP}
|
||||||
${CODE_RELOCATION_DEP}
|
${CODE_RELOCATION_DEP}
|
||||||
${ZEPHYR_PREBUILT_EXECUTABLE}
|
${ZEPHYR_PREBUILT_EXECUTABLE}
|
||||||
|
|
Loading…
Reference in a new issue