Fix linker script incorrectly selected for bare-metal profile (#342)

mbed-os and mbed-baremetal library targets both are created, so we cannot
use if(TARGET mbed-os) or if(TARGET mbed-baremetal) to determine which one
the application target links to. Instead, determine by checking application
target's LINK_LIBRARIES property.
pull/15530/head
ccli8 2024-09-13 14:48:05 +08:00 committed by GitHub
parent 40e3056f3d
commit a49d8f2470
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 2 deletions

View File

@ -120,18 +120,21 @@ function(mbed_set_post_build target)
# add linker script. Skip for greentea test code, there the linker script is set in mbed_setup_linker_script() # add linker script. Skip for greentea test code, there the linker script is set in mbed_setup_linker_script()
if (NOT MBED_IS_STANDALONE) if (NOT MBED_IS_STANDALONE)
if("${ARGN}" STREQUAL "") if("${ARGN}" STREQUAL "")
if(TARGET mbed-os) get_target_property(POST_BUILD_TARGET_LINK_LIBRARIES ${target} LINK_LIBRARIES)
if("mbed-os" IN_LIST POST_BUILD_TARGET_LINK_LIBRARIES)
get_target_property(LINKER_SCRIPT_PATH mbed-os LINKER_SCRIPT_PATH) get_target_property(LINKER_SCRIPT_PATH mbed-os LINKER_SCRIPT_PATH)
target_link_options(${target} target_link_options(${target}
PRIVATE PRIVATE
"-T" "${LINKER_SCRIPT_PATH}" "-T" "${LINKER_SCRIPT_PATH}"
) )
elseif(TARGET mbed-baremetal) elseif("mbed-baremetal" IN_LIST POST_BUILD_TARGET_LINK_LIBRARIES)
get_target_property(LINKER_SCRIPT_PATH mbed-baremetal LINKER_SCRIPT_PATH) get_target_property(LINKER_SCRIPT_PATH mbed-baremetal LINKER_SCRIPT_PATH)
target_link_options(${target} target_link_options(${target}
PRIVATE PRIVATE
"-T" "${LINKER_SCRIPT_PATH}" "-T" "${LINKER_SCRIPT_PATH}"
) )
else()
message(FATAL_ERROR "Target ${target} used with mbed_set_post_build() but does not link to mbed-os or mbed-baremetal!")
endif() endif()
else() else()
message(STATUS "${target} uses custom linker script ${ARGV1}") message(STATUS "${target} uses custom linker script ${ARGV1}")