diff --git a/cmake/linker/ld/linker_flags.cmake b/cmake/linker/ld/linker_flags.cmake index 18100b6eff21b2..8209f4dfbdc457 100644 --- a/cmake/linker/ld/linker_flags.cmake +++ b/cmake/linker/ld/linker_flags.cmake @@ -10,6 +10,8 @@ else() set_property(TARGET linker PROPERTY no_position_independent) endif() +set_property(TARGET linker PROPERTY partial_linking "-r") + # Some linker flags might not be purely ld specific, but a combination of # linker and compiler, such as: # --coverage for clang diff --git a/cmake/linker/linker_flags_template.cmake b/cmake/linker/linker_flags_template.cmake index df6ccfc0187203..2ef080d621603c 100644 --- a/cmake/linker/linker_flags_template.cmake +++ b/cmake/linker/linker_flags_template.cmake @@ -16,3 +16,7 @@ set_property(TARGET linker PROPERTY warnings_as_errors) # Linker flag for disabling position independent binaries, # such as, "-no-pie" for LD, and "--no-pie" for LLD. set_property(TARGET linker PROPERTY no_position_independent) + +# Linker flag for doing partial linking +# such as, "-r" or "--relocatable" for LD and LLD. +set_property(TARGET linker PROPERTY partial_linking) diff --git a/cmake/linker/lld/linker_flags.cmake b/cmake/linker/lld/linker_flags.cmake index f9e8cca246a826..61e72093c0fffb 100644 --- a/cmake/linker/lld/linker_flags.cmake +++ b/cmake/linker/lld/linker_flags.cmake @@ -5,3 +5,5 @@ include(${ZEPHYR_BASE}/cmake/linker/ld/${COMPILER}/linker_flags.cmake OPTIONAL) set_property(TARGET linker PROPERTY no_position_independent "${LINKERFLAGPREFIX},--no-pie") + +set_property(TARGET linker PROPERTY partial_linking "-r")