diff options
-rw-r--r-- | Modules/Platform/OpenBSD.cmake | 16 | ||||
-rw-r--r-- | Source/cmComputeLinkInformation.cxx | 10 | ||||
-rw-r--r-- | Source/cmComputeLinkInformation.h | 3 |
3 files changed, 29 insertions, 0 deletions
diff --git a/Modules/Platform/OpenBSD.cmake b/Modules/Platform/OpenBSD.cmake index e7df46d..b4ed66f 100644 --- a/Modules/Platform/OpenBSD.cmake +++ b/Modules/Platform/OpenBSD.cmake @@ -1,2 +1,18 @@ INCLUDE(Platform/NetBSD) + +# On OpenBSD, the compile time linker does not share it's configuration with +# the runtime linker. This will extract the library search paths from the +# system's ld.so.hints file which will allow CMake to set the appropriate +# -rpath-link flags +IF(NOT CMAKE_PLATFORM_RUNTIME_PATH) + EXECUTE_PROCESS(COMMAND /sbin/ldconfig -r + OUTPUT_VARIABLE LDCONFIG_HINTS + ERROR_QUIET) + STRING(REGEX REPLACE ".*search\\ directories:\\ ([^\n]*).*" "\\1" + LDCONFIG_HINTS "${LDCONFIG_HINTS}") + STRING(REGEX REPLACE ":" ";" + CMAKE_PLATFORM_RUNTIME_PATH + "${LDCONFIG_HINTS}") +ENDIF() + SET_PROPERTY(GLOBAL PROPERTY FIND_LIBRARY_USE_OPENBSD_VERSIONING 1) diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 69a4d22..d84da52 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -376,6 +376,8 @@ cmComputeLinkInformation { this->OrderDependentRPath ->SetImplicitDirectories(this->ImplicitLinkDirs); + this->OrderDependentRPath + ->AddLanguageDirectories(this->RuntimeLinkDirs); } // Decide whether to enable compatible library search path mode. @@ -1642,6 +1644,14 @@ void cmComputeLinkInformation::LoadImplicitLinkInfo() this->ImplicitLinkLibs.insert(item); } } + + // Get platform specific rpath link directories + if(const char *rpathDirs = + (this->Makefile->GetDefinition + ("CMAKE_PLATFORM_RUNTIME_PATH"))) + { + cmSystemTools::ExpandListArgument(rpathDirs, this->RuntimeLinkDirs); + } } //---------------------------------------------------------------------------- diff --git a/Source/cmComputeLinkInformation.h b/Source/cmComputeLinkInformation.h index ad2026b..bbeed68 100644 --- a/Source/cmComputeLinkInformation.h +++ b/Source/cmComputeLinkInformation.h @@ -163,6 +163,9 @@ private: std::set<cmStdString> ImplicitLinkDirs; std::set<cmStdString> ImplicitLinkLibs; + // Additional paths configured by the runtime linker + std::vector<std::string> RuntimeLinkDirs; + // Linker search path compatibility mode. std::set<cmStdString> OldLinkDirMask; std::vector<std::string> OldLinkDirItems; |