From 1da21dbcbc9dda9bf45868ca88f25aa226a7e50a Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Sat, 5 Jul 2025 09:49:26 +0200 Subject: [PATCH] BackwardConfigAment: Only use --as-needed on ELF platforms --- cmake/BackwardConfigAment.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmake/BackwardConfigAment.cmake b/cmake/BackwardConfigAment.cmake index 273a51a..db36fde 100644 --- a/cmake/BackwardConfigAment.cmake +++ b/cmake/BackwardConfigAment.cmake @@ -24,5 +24,14 @@ foreach(lib ${backward_ros_forced_LIBRARIES}) set(backward_ros_full_path_LIBRARIES "${backward_ros_full_path_LIBRARIES} ${lib}") endif() endforeach() -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--no-as-needed ${backward_ros_full_path_LIBRARIES} -Wl,--as-needed ${CMAKE_EXE_LINKER_FLAGS}") +# --no-as-needed and --as-needed only make sense on ELF platforms, so let's try to only set there +set(no_as_needed) +set(as_needed) +# CMake does not provide any way to directly check if platform is ELF, but UNIX AND NOT APPLE should work fine at +# least in ROS context +if(UNIX AND NOT APPLE) + set(no_as_needed "-Wl,--no-as-needed") + set(as_needed "-Wl,--as-needed") +endif() +SET(CMAKE_EXE_LINKER_FLAGS "${no_as_needed} ${backward_ros_full_path_LIBRARIES} ${as_needed} ${CMAKE_EXE_LINKER_FLAGS}")