[Cmake-commits] CMake branch, master, updated. e750761857fa2e35ad9630b13606570c561ae829

cmake-commits at cmake.org cmake-commits at cmake.org
Fri Mar 26 09:33:58 EDT 2010


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, master has been updated
       via  e750761857fa2e35ad9630b13606570c561ae829 (commit)
      from  a8abb30c38443dbd5063df05bcdceb233c9678ff (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e750761857fa2e35ad9630b13606570c561ae829
commit e750761857fa2e35ad9630b13606570c561ae829
Author: Chuck Atkins <chuck.atkins at kitware.com>
Date:   Mon Feb 15 11:22:36 2010 -0500

    OpenBSD: Work-around static/runtime linker inconsistency
    
    Detect the runtime linker's search path and add to the compile time
    linker's search path.  This is needed because OpenBSD's static linker
    does not search for shared library dependencies in the same places as
    the runtime linker.

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;

-----------------------------------------------------------------------

Summary of changes:
 Modules/Platform/OpenBSD.cmake      |   16 ++++++++++++++++
 Source/cmComputeLinkInformation.cxx |   10 ++++++++++
 Source/cmComputeLinkInformation.h   |    3 +++
 3 files changed, 29 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list