From 9bb014052204e0b1a72839d5657a8a9117e33ff4 Mon Sep 17 00:00:00 2001 From: Torsten Rasmussen Date: Fri, 30 Aug 2024 21:44:56 +0200 Subject: [PATCH] cmake: remove the use of PROPERTY_LINKER_SCRIPT_DEFINES The support of PROPERTY_LINKER_SCRIPT_DEFINES has been broken since the transition to CMake in 12f8f7616567f224b920512b6f81a65421e30bae. The intention was probably to allow users / projects to adjust PROPERTY_LINKER_SCRIPT_DEFINES by setting a CMake cache variable. The implementation tests for the CMake variable (local scope or cache) PROPERTY_LINKER_SCRIPT_DEFINES, but it never uses such CMake variable. Instead it uses a CMake global property named PROPERTY_LINKER_SCRIPT_DEFINES. CMake variables and CMake global properties are two very different things, and therefore the current implementation has never worked. The fact that no one has never noticed this flaw, means that the feature has never been used as intended. Simplify the code by removing the use of the global CMake property and instead set the value of the property on the linker script pre-processing invocation. Signed-off-by: Torsten Rasmussen --- cmake/linker/arcmwdt/target.cmake | 7 +------ cmake/linker/ld/target.cmake | 3 +-- cmake/linker/ld/target_base.cmake | 5 ----- cmake/linker/lld/target.cmake | 3 +-- cmake/linker/lld/target_base.cmake | 5 ----- cmake/linker/xt-ld/target.cmake | 3 +-- cmake/linker/xt-ld/target_base.cmake | 5 ----- 7 files changed, 4 insertions(+), 27 deletions(-) diff --git a/cmake/linker/arcmwdt/target.cmake b/cmake/linker/arcmwdt/target.cmake index f2247ba4540..3480749c32a 100644 --- a/cmake/linker/arcmwdt/target.cmake +++ b/cmake/linker/arcmwdt/target.cmake @@ -30,7 +30,6 @@ macro(configure_linker_script linker_script_gen linker_pass_define) endif() zephyr_get_include_directories_for_lang(C current_includes) - get_property(current_defines GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES) # the command to generate linker file from template add_custom_command( @@ -48,9 +47,9 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -MD -MF ${linker_script_gen}.dep -MT ${linker_script_gen} -D_LINKER -D_ASMLANGUAGE + -D__MWDT_LINKER_CMD__ -imacros ${AUTOCONF_H} ${current_includes} - ${current_defines} ${template_script_defines} ${LINKER_SCRIPT} -E @@ -160,10 +159,6 @@ endmacro() # base linker options macro(toolchain_ld_base) - if(NOT PROPERTY_LINKER_SCRIPT_DEFINES) - set_property(GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES -D__MWDT_LINKER_CMD__) - endif() - # Sort the common symbols and each input section by alignment # in descending order to minimize padding between these symbols. zephyr_ld_option_ifdef( diff --git a/cmake/linker/ld/target.cmake b/cmake/linker/ld/target.cmake index 2d60e8ea63d..8c0eea50297 100644 --- a/cmake/linker/ld/target.cmake +++ b/cmake/linker/ld/target.cmake @@ -56,7 +56,6 @@ macro(configure_linker_script linker_script_gen linker_pass_define) endif() zephyr_get_include_directories_for_lang(C current_includes) - get_property(current_defines GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES) if(DEFINED SOC_LINKER_SCRIPT) cmake_path(GET SOC_LINKER_SCRIPT PARENT_PATH soc_linker_script_includes) set(soc_linker_script_includes -I${soc_linker_script_includes}) @@ -76,10 +75,10 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -MD -MF ${linker_script_gen}.dep -MT ${linker_script_gen} -D_LINKER -D_ASMLANGUAGE + -D__GCC_LINKER_CMD__ -imacros ${AUTOCONF_H} ${current_includes} ${soc_linker_script_includes} - ${current_defines} ${template_script_defines} -E ${LINKER_SCRIPT} -P # Prevent generation of debug `#line' directives. diff --git a/cmake/linker/ld/target_base.cmake b/cmake/linker/ld/target_base.cmake index b92ec877371..f70f5c26b68 100644 --- a/cmake/linker/ld/target_base.cmake +++ b/cmake/linker/ld/target_base.cmake @@ -3,11 +3,6 @@ # See root CMakeLists.txt for description and expectations of these macros macro(toolchain_ld_base) - - if(NOT PROPERTY_LINKER_SCRIPT_DEFINES) - set_property(GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES -D__GCC_LINKER_CMD__) - endif() - # TOOLCHAIN_LD_FLAGS comes from compiler/gcc/target.cmake # LINKERFLAGPREFIX comes from linker/ld/target.cmake zephyr_ld_options( diff --git a/cmake/linker/lld/target.cmake b/cmake/linker/lld/target.cmake index 5deab047100..813c7c5f923 100644 --- a/cmake/linker/lld/target.cmake +++ b/cmake/linker/lld/target.cmake @@ -30,7 +30,6 @@ macro(configure_linker_script linker_script_gen linker_pass_define) endif() zephyr_get_include_directories_for_lang(C current_includes) - get_property(current_defines GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES) add_custom_command( OUTPUT ${linker_script_gen} @@ -45,9 +44,9 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -MD -MF ${linker_script_gen}.dep -MT ${linker_script_gen} -D_LINKER -D_ASMLANGUAGE + -D__LLD_LINKER_CMD__ -imacros ${AUTOCONF_H} ${current_includes} - ${current_defines} ${template_script_defines} -E ${LINKER_SCRIPT} -P # Prevent generation of debug `#line' directives. diff --git a/cmake/linker/lld/target_base.cmake b/cmake/linker/lld/target_base.cmake index 44f43839d37..203322a9019 100644 --- a/cmake/linker/lld/target_base.cmake +++ b/cmake/linker/lld/target_base.cmake @@ -3,11 +3,6 @@ # See root CMakeLists.txt for description and expectations of these macros macro(toolchain_ld_base) - - if(NOT PROPERTY_LINKER_SCRIPT_DEFINES) - set_property(GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES -D__LLD_LINKER_CMD__) - endif() - # TOOLCHAIN_LD_FLAGS comes from compiler/clang/target.cmake # LINKERFLAGPREFIX comes from linker/lld/target.cmake zephyr_ld_options( diff --git a/cmake/linker/xt-ld/target.cmake b/cmake/linker/xt-ld/target.cmake index 20209107ff7..dd48eac1557 100644 --- a/cmake/linker/xt-ld/target.cmake +++ b/cmake/linker/xt-ld/target.cmake @@ -59,7 +59,6 @@ macro(configure_linker_script linker_script_gen linker_pass_define) endif() zephyr_get_include_directories_for_lang(C current_includes) - get_property(current_defines GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES) add_custom_command( OUTPUT ${linker_script_gen} @@ -75,9 +74,9 @@ macro(configure_linker_script linker_script_gen linker_pass_define) -MD -MF ${linker_script_gen}.dep -MT ${linker_script_gen} -D_LINKER -D_ASMLANGUAGE + -D__GCC_LINKER_CMD__ -imacros ${AUTOCONF_H} ${current_includes} - ${current_defines} ${template_script_defines} -E ${LINKER_SCRIPT} -P # Prevent generation of debug `#line' directives. diff --git a/cmake/linker/xt-ld/target_base.cmake b/cmake/linker/xt-ld/target_base.cmake index c6c1566a920..6d486cbc86e 100644 --- a/cmake/linker/xt-ld/target_base.cmake +++ b/cmake/linker/xt-ld/target_base.cmake @@ -3,11 +3,6 @@ # See root CMakeLists.txt for description and expectations of these macros macro(toolchain_ld_base) - - if(NOT PROPERTY_LINKER_SCRIPT_DEFINES) - set_property(GLOBAL PROPERTY PROPERTY_LINKER_SCRIPT_DEFINES -D__GCC_LINKER_CMD__) - endif() - # TOOLCHAIN_LD_FLAGS comes from compiler/gcc/target.cmake # LINKERFLAGPREFIX comes from linker/xt-ld/target.cmake zephyr_ld_options(