[Cmake-commits] CMake branch, next, updated. v2.8.7-2620-g6d1de03

Rolf Eike Beer eike at sf-mail.de
Wed Feb 15 14:22:08 EST 2012


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, next has been updated
       via  6d1de03ade6f3d6006c33e05ffadf65ba677b3cb (commit)
       via  630ea5f7049370557280c495b4b4b5b1616d4edb (commit)
       via  a8b57149351168425f4040c8b99167238cca041d (commit)
      from  0fad59a04fb216fe47c4beaf7debe0aaf7de97b2 (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=6d1de03ade6f3d6006c33e05ffadf65ba677b3cb
commit 6d1de03ade6f3d6006c33e05ffadf65ba677b3cb
Merge: 0fad59a 630ea5f
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Wed Feb 15 14:21:59 2012 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Feb 15 14:21:59 2012 -0500

    Merge topic 'findlibrary-versioned-libraries' into next
    
    630ea5f Find_library(): allow searching for versioned shared objects
    a8b5714 KWSys Nightly Date Stamp


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=630ea5f7049370557280c495b4b4b5b1616d4edb
commit 630ea5f7049370557280c495b4b4b5b1616d4edb
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Wed Feb 15 19:55:57 2012 +0100
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Wed Feb 15 20:21:24 2012 +0100

    Find_library(): allow searching for versioned shared objects
    
    This did not work because find_library() did only treat the given name as
    complete filename if is matched "PREFIX.*SUFFIX":
    
    find_library(MYLIB libfoo.so.2)
    
    Now it is also taken as a whole if the name matches "PREFIX.*SUFFIX\..*".

diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx
index 2fa2cca..a726849 100644
--- a/Source/cmFindLibraryCommand.cxx
+++ b/Source/cmFindLibraryCommand.cxx
@@ -354,13 +354,23 @@ void cmFindLibraryHelper::RegexFromList(std::string& out,
 //----------------------------------------------------------------------------
 bool cmFindLibraryHelper::HasValidSuffix(std::string const& name)
 {
-  // Check if the given name ends in a valid library suffix.
   for(std::vector<std::string>::const_iterator si = this->Suffixes.begin();
       si != this->Suffixes.end(); ++si)
     {
-    std::string const& suffix = *si;
-    if(name.length() > suffix.length() &&
-       name.substr(name.size()-suffix.length()) == suffix)
+    std::string suffix = *si;
+    if(name.length() <= suffix.length())
+      {
+      continue;
+      }
+    // Check if the given name ends in a valid library suffix.
+    if(name.substr(name.size()-suffix.length()) == suffix)
+      {
+      return true;
+      }
+    // Check if a valid library suffix is somewhere in the name,
+    // this may happen e.g. for versioned shared libraries: libfoo.so.2
+    suffix += ".";
+    if(name.find(suffix) != name.npos)
       {
       return true;
       }
diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt
index b505019..3e716cf 100644
--- a/Tests/Complex/CMakeLists.txt
+++ b/Tests/Complex/CMakeLists.txt
@@ -199,7 +199,7 @@ CONFIGURE_FILE(
   ${Complex_SOURCE_DIR}/Library/dummy
   ${Complex_BINARY_DIR}/Library/dummylib.lib
   COPYONLY IMMEDIATE)
-FOREACH (ext ${CMAKE_SHLIB_SUFFIX};.so;.a;.sl)
+FOREACH (ext ${CMAKE_SHLIB_SUFFIX};.so;.a;.sl;.so.2)
   CONFIGURE_FILE(
     ${Complex_SOURCE_DIR}/Library/dummy
     ${Complex_BINARY_DIR}/Library/libdummylib${ext}
@@ -216,6 +216,12 @@ FIND_LIBRARY(FIND_DUMMY_LIB
              PATHS
              ${Complex_BINARY_DIR}/Library DOC "find dummy lib")
 
+FIND_LIBRARY(FIND_DUMMY_LIB_VERSIONED
+             NAMES libdummylib.so.2
+             PATHS ${Complex_BINARY_DIR}/Library
+             DOC "find versioned dummy lib"
+             NO_DEFAULT_PATH)
+
 #
 # Test SET_SOURCE_FILES_PROPERTIES 
 #
diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx
index 1901d99..e6a9fb3 100644
--- a/Tests/Complex/Executable/complex.cxx
+++ b/Tests/Complex/Executable/complex.cxx
@@ -849,6 +849,23 @@ int main()
     }
 #endif
 
+#ifndef FIND_DUMMY_LIB_VERSIONED
+  cmFailed("the CONFIGURE_FILE command is broken, "
+         "FIND_DUMMY_LIB_VERSIONED is not defined.");
+#else
+  const char *libmatch = strstr(FIND_DUMMY_LIB_VERSIONED,
+                                "/libdummylib.so.2");
+  if(libmatch == NULL || strlen(libmatch) != strlen("/libdummylib.so.2"))
+    {
+    cmFailed("the FIND_LIBRARY or CONFIGURE_FILE command is broken, "
+           "FIND_DUMMY_LIB_VERSIONED == ", FIND_DUMMY_LIB_VERSIONED);
+    }
+  else
+    {
+    cmPassed("FIND_DUMMY_LIB_VERSIONED == ", FIND_DUMMY_LIB_VERSIONED);
+    }
+#endif
+
   // ----------------------------------------------------------------------
   // Test SET_SOURCE_FILES_PROPERTIES
 
diff --git a/Tests/Complex/cmTestConfigure.h.in b/Tests/Complex/cmTestConfigure.h.in
index 7741b6f..03cf3dc 100644
--- a/Tests/Complex/cmTestConfigure.h.in
+++ b/Tests/Complex/cmTestConfigure.h.in
@@ -48,6 +48,7 @@
 // Test FIND_LIBRARY
 
 #define FIND_DUMMY_LIB "${FIND_DUMMY_LIB}"
+#define FIND_DUMMY_LIB_VERSIONED "${FIND_DUMMY_LIB_VERSIONED}"
 
 // Test SET_SOURCE_FILES_PROPERTIES
 

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

Summary of changes:
 Source/cmFindLibraryCommand.cxx      |   18 ++++++++++++++----
 Source/kwsys/kwsysDateStamp.cmake    |    2 +-
 Tests/Complex/CMakeLists.txt         |    8 +++++++-
 Tests/Complex/Executable/complex.cxx |   17 +++++++++++++++++
 Tests/Complex/cmTestConfigure.h.in   |    1 +
 5 files changed, 40 insertions(+), 6 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list