commontk / CTK

A set of common support code for medical imaging, surgical navigation, and related purposes.
https://commontk.org
Apache License 2.0
855 stars 490 forks source link

ENH: Enable propagation of linker flags #1151

Open RafaelPalomar opened 11 months ago

RafaelPalomar commented 11 months ago

This change allows customizing the linker flags at the superbuild level. The motivation behind this modification was to enable the use of the gold linker in 3D Slicer, as referenced in Slicer/Slicer#7294, to expedite the linking phase during the build process.

jcfr commented 11 months ago

For reference, in an existing build tree, we wouldn't be overriding existing value:

Linux ``` for f in $(fd "CMakeCache.txt$"); do echo "$f"; cat $f | grep -E "^CMAKE_(SHARED|EXE|MODULE)_LINKER_FLAGS\:"; done CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= CMakeFiles/ctkLinkerAsNeededFlagCheck/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= CTK-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING=' ' CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= CTK-build/CMakeFiles/ctkLinkerAsNeededFlagCheck/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= CTK-build/Utilities/DGraph/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= DCMTK-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= ITK-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= ITK-build/ITKInternalEigen3-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= ITK-build/Modules/Core/Common/CMakeTmp/ITK_PRIVATE_DYNAMIC_CAST/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= Log4Qt-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= PythonQt-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= QtSOAP-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= QtTesting-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= Utilities/DGraph/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= VTK-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= VTK-build/Utilities/Python/CMakeTmp/vtk_undefined_symbols_allowed/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= -Wl,-lc qRestAPI-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= qxmlrpc-build/CMakeCache.txt CMAKE_EXE_LINKER_FLAGS:STRING= CMAKE_MODULE_LINKER_FLAGS:STRING= CMAKE_SHARED_LINKER_FLAGS:STRING= ```
RafaelPalomar commented 11 months ago

Updated this PR and Slicer/Slicer#7294 to update CMakeCache.txt values related to gold linker. @jcfr