[Cmake-commits] CMake branch, next, updated. v2.8.11.2-3143-gce30629

Clinton Stimpson clinton at elemtech.com
Tue Jul 16 01:07:08 EDT 2013


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  ce30629c46948c0670c36d7819c445e3e27c7659 (commit)
       via  e645ff0b10567e400c722dfc28c58dc4fd8d181b (commit)
      from  966f5dc5b42d90fe44edfd9c9bc0a0e921b65986 (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=ce30629c46948c0670c36d7819c445e3e27c7659
commit ce30629c46948c0670c36d7819c445e3e27c7659
Merge: 966f5dc e645ff0
Author:     Clinton Stimpson <clinton at elemtech.com>
AuthorDate: Tue Jul 16 01:07:06 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Jul 16 01:07:06 2013 -0400

    Merge topic 'rpath-on-mac' into next
    
    e645ff0 OS X: Enable rpath support on Mac OS X when find_library() is used.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e645ff0b10567e400c722dfc28c58dc4fd8d181b
commit e645ff0b10567e400c722dfc28c58dc4fd8d181b
Author:     Clinton Stimpson <clinton at elemtech.com>
AuthorDate: Mon Jul 15 22:23:12 2013 -0600
Commit:     Clinton Stimpson <clinton at elemtech.com>
CommitDate: Mon Jul 15 22:39:08 2013 -0600

    OS X: Enable rpath support on Mac OS X when find_library() is used.

diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index ab9eb14..fb7b5b6 100644
--- a/Source/cmComputeLinkInformation.cxx
+++ b/Source/cmComputeLinkInformation.cxx
@@ -1345,12 +1345,23 @@ void cmComputeLinkInformation::AddFrameworkItem(std::string const& item)
     return;
     }
 
+  std::string fw_path = this->SplitFramework.match(1);
+  std::string fw = this->SplitFramework.match(2);
+  std::string full_fw = fw_path;
+  full_fw += "/";
+  full_fw += fw;
+  full_fw += ".framework";
+  full_fw += "/";
+  full_fw += fw;
+
   // Add the directory portion to the framework search path.
-  this->AddFrameworkPath(this->SplitFramework.match(1));
+  this->AddFrameworkPath(fw_path);
+
+  // add runtime information
+  this->AddLibraryRuntimeInfo(full_fw);
 
   // Add the item using the -framework option.
   this->Items.push_back(Item("-framework", false));
-  std::string fw = this->SplitFramework.match(2);
   fw = this->LocalGenerator->EscapeForShell(fw.c_str());
   this->Items.push_back(Item(fw, false));
 }
@@ -1813,9 +1824,10 @@ cmComputeLinkInformation::AddLibraryRuntimeInfo(std::string const& fullPath)
     if(fullPath.find(".framework") != std::string::npos)
       {
       cmsys::RegularExpression splitFramework;
-      splitFramework.compile("^(.*)/(.*).framework/.*/(.*)$");
+      splitFramework.compile("^(.*)/(.*).framework/(.*)$");
       if(splitFramework.find(fullPath) &&
-        (splitFramework.match(2) == splitFramework.match(3)))
+        (std::string::npos !=
+         splitFramework.match(3).find(splitFramework.match(2))))
         {
         is_shared_library = true;
         }
diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx
index 93885b2..0220825 100644
--- a/Source/cmOrderDirectories.cxx
+++ b/Source/cmOrderDirectories.cxx
@@ -40,9 +40,10 @@ public:
     if(file.rfind(".framework") != std::string::npos)
       {
       cmsys::RegularExpression splitFramework;
-      splitFramework.compile("^(.*)/(.*).framework/.*/(.*)$");
+      splitFramework.compile("^(.*)/(.*).framework/(.*)$");
       if(splitFramework.find(file) &&
-        (splitFramework.match(2) == splitFramework.match(3)))
+        (std::string::npos !=
+         splitFramework.match(3).find(splitFramework.match(2))))
         {
         this->Directory = splitFramework.match(1);
         this->FileName =
@@ -318,7 +319,6 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath,
   // Add the runtime library at most once.
   if(this->EmmittedConstraintSOName.insert(fullPath).second)
     {
-    std::string soname2 = soname ? soname : "";
     // Implicit link directories need special handling.
     if(!this->ImplicitDirectories.empty())
       {
@@ -327,16 +327,12 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath,
       if(fullPath.rfind(".framework") != std::string::npos)
         {
         cmsys::RegularExpression splitFramework;
-        splitFramework.compile("^(.*)/(.*).framework/(.*)/(.*)$");
+        splitFramework.compile("^(.*)/(.*).framework/(.*)$");
         if(splitFramework.find(fullPath) &&
-          (splitFramework.match(2) == splitFramework.match(4)))
+          (std::string::npos !=
+           splitFramework.match(3).find(splitFramework.match(2))))
           {
           dir = splitFramework.match(1);
-          soname2 = splitFramework.match(2);
-          soname2 += ".framework/";
-          soname2 += splitFramework.match(3);
-          soname2 += "/";
-          soname2 += splitFramework.match(4);
           }
         }
 
@@ -344,16 +340,14 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath,
          this->ImplicitDirectories.end())
         {
         this->ImplicitDirEntries.push_back(
-          new cmOrderDirectoriesConstraintSOName(this, fullPath,
-                                                 soname2.c_str()));
+          new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
         return;
         }
       }
 
     // Construct the runtime information entry for this library.
     this->ConstraintEntries.push_back(
-      new cmOrderDirectoriesConstraintSOName(this, fullPath,
-                                             soname2.c_str()));
+      new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
     }
   else
     {
diff --git a/Tests/MacRuntimePath/A/CMakeLists.txt b/Tests/MacRuntimePath/A/CMakeLists.txt
index 6e6de42..5fc54f4 100644
--- a/Tests/MacRuntimePath/A/CMakeLists.txt
+++ b/Tests/MacRuntimePath/A/CMakeLists.txt
@@ -14,6 +14,10 @@ set_target_properties(shared2 PROPERTIES
 add_library(framework SHARED framework.cpp framework.h)
 set_target_properties(framework PROPERTIES MACOSX_RPATH 1 FRAMEWORK 1)
 
+# another framework
+add_library(framework2 SHARED framework2.cpp framework2.h)
+set_target_properties(framework2 PROPERTIES MACOSX_RPATH 1 FRAMEWORK 1)
+
 # executable to test a shared library dependency with install rpaths
 add_executable(test1 test1.cpp)
 target_link_libraries(test1 shared)
@@ -60,4 +64,5 @@ export(TARGETS shared shared2 framework FILE "${CMAKE_CURRENT_BINARY_DIR}/exp.cm
 install(TARGETS shared EXPORT MyExport DESTINATION lib)
 install(TARGETS shared2 EXPORT MyExport DESTINATION lib2)
 install(TARGETS framework EXPORT MyExport DESTINATION lib-fw)
+install(TARGETS framework2 EXPORT MyExport DESTINATION lib-fw2)
 install(EXPORT MyExport DESTINATION lib FILE exp.cmake)
diff --git a/Tests/MacRuntimePath/A/framework2.cpp b/Tests/MacRuntimePath/A/framework2.cpp
new file mode 100644
index 0000000..d3c2c45
--- /dev/null
+++ b/Tests/MacRuntimePath/A/framework2.cpp
@@ -0,0 +1,8 @@
+
+#include "framework2.h"
+#include "stdio.h"
+
+void framework2()
+{
+  printf("framework 2\n");
+}
diff --git a/Tests/MacRuntimePath/A/framework2.h b/Tests/MacRuntimePath/A/framework2.h
new file mode 100644
index 0000000..4576d12
--- /dev/null
+++ b/Tests/MacRuntimePath/A/framework2.h
@@ -0,0 +1,17 @@
+
+#ifndef framework2_h
+#define framework2_h
+
+#ifdef WIN32
+# ifdef framework2_EXPORTS
+#  define FRAMEWORK2_EXPORT __declspec(dllexport)
+# else
+#  define FRAMEWORK2_EXPORT __declspec(dllimport)
+# endif
+#else
+# define FRAMEWORK2_EXPORT
+#endif
+
+void FRAMEWORK2_EXPORT framework2();
+
+#endif
diff --git a/Tests/MacRuntimePath/B/CMakeLists.txt b/Tests/MacRuntimePath/B/CMakeLists.txt
index c361620..4317af6 100644
--- a/Tests/MacRuntimePath/B/CMakeLists.txt
+++ b/Tests/MacRuntimePath/B/CMakeLists.txt
@@ -9,7 +9,8 @@ add_executable(testb ${MacRuntimePath_B_SOURCE_DIR}/../A/test3.cpp)
 target_link_libraries(testb shared framework)
 
 # test link with rpath enabled library by filename
-target_link_libraries(testb $<TARGET_LINKER_FILE:shared2> framework)
+find_library(fw2 NAMES framework2 HINTS ${MacRuntimePath_B_BINARY_DIR}/../Root/lib-fw2)
+target_link_libraries(testb $<TARGET_LINKER_FILE:shared2> ${fw2})
 
 add_custom_target(testb_run ALL
   COMMAND testb

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

Summary of changes:
 Source/cmComputeLinkInformation.cxx   |   20 ++++++++++++++++----
 Source/cmOrderDirectories.cxx         |   22 ++++++++--------------
 Tests/MacRuntimePath/A/CMakeLists.txt |    5 +++++
 Tests/MacRuntimePath/A/framework2.cpp |    8 ++++++++
 Tests/MacRuntimePath/A/framework2.h   |   17 +++++++++++++++++
 Tests/MacRuntimePath/B/CMakeLists.txt |    3 ++-
 6 files changed, 56 insertions(+), 19 deletions(-)
 create mode 100644 Tests/MacRuntimePath/A/framework2.cpp
 create mode 100644 Tests/MacRuntimePath/A/framework2.h


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list