From f5913e68d2f79a920e676427d5840ba622ad42fa Mon Sep 17 00:00:00 2001 From: Juraj Smiesko Date: Tue, 28 Feb 2023 13:52:24 +0100 Subject: [PATCH] Applying the whole RPATH treatment --- CMakeLists.txt | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 54443a86..f9dee696 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,35 @@ if(NOT CMAKE_CXX_STANDARD MATCHES "14|17") message(FATAL_ERROR "Unsupported C++ standard: ${CMAKE_CXX_STANDARD}") endif() -# Setting RPATH ------------------------------------------------ -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +#---RPATH options------------------------------------------------------------------------------- +option(K4FWCORE_SET_RPATH "Link libraries with built-in RPATH (run-time search path)" ON) + +# When building, don't use the install RPATH already (but later on when installing) +set(CMAKE_SKIP_BUILD_RPATH FALSE) # don't skip the full RPATH for the build tree +set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # use always the build RPATH for the build tree +set(CMAKE_MACOSX_RPATH TRUE) # use RPATH for MacOSX +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # point to directories outside the build tree to the install RPATH + +# Check whether to add RPATH to the installation (the build tree always has the RPATH enabled) +if(APPLE) + set(CMAKE_INSTALL_NAME_DIR "@rpath") + set(CMAKE_INSTALL_RPATH "@loader_path/../lib") # self relative LIBDIR + # the RPATH to be used when installing, but only if it's not a system directory + list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) + if("${isSystemDir}" STREQUAL "-1") + set(CMAKE_INSTALL_RPATH "@loader_path/../lib") + endif("${isSystemDir}" STREQUAL "-1") +elseif(K4FWCORE_SET_RPATH) + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") # install LIBDIR + # the RPATH to be used when installing, but only if it's not a system directory + list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) + if("${isSystemDir}" STREQUAL "-1") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") + endif("${isSystemDir}" STREQUAL "-1") +else() + set(CMAKE_SKIP_INSTALL_RPATH TRUE) # skip the full RPATH for the install tree +endif() + add_subdirectory(k4FWCore) add_subdirectory(k4Interface)