diff --git a/CMakeLists.txt b/CMakeLists.txt index 90cd59983..9b356c44d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,8 @@ configure_file ( LIST( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ) +option(LCIO_SET_RPATH "Link libraries with built-in RPATH (run-time search path)" ON) + #FIND_PACKAGE( ILCUTIL COMPONENTS ILCSOFT_CMAKE_MODULES REQUIRED ) # load default settings from ILCSOFT_CMAKE_MODULES diff --git a/cmake/ilcsoft_default_rpath_settings.cmake b/cmake/ilcsoft_default_rpath_settings.cmake index 086f679b3..5bbee4514 100644 --- a/cmake/ilcsoft_default_rpath_settings.cmake +++ b/cmake/ilcsoft_default_rpath_settings.cmake @@ -1,14 +1,27 @@ +#---RPATH options------------------------------------------------------------------------------- # 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 -set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}) # install LIBDIR -set(CMAKE_SKIP_INSTALL_RPATH FALSE) # don't skip the full RPATH for the install tree +# 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 - set(CMAKE_SKIP_INSTALL_RPATH FALSE) # don't skip the full RPATH for the install tree + # 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(LCIO_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()