summaryrefslogtreecommitdiff
path: root/Source/cmComputeLinkInformation.cxx
diff options
context:
space:
mode:
authorClinton Stimpson <clinton@elemtech.com>2013-07-15 22:23:12 -0600
committerClinton Stimpson <clinton@elemtech.com>2013-07-15 22:39:08 -0600
commite645ff0b10567e400c722dfc28c58dc4fd8d181b (patch)
treea2ba239079f137345d940c527057d4e94d1ed463 /Source/cmComputeLinkInformation.cxx
parentb94e726a83b92f5b7376b97aa448107884a76685 (diff)
downloadcmake-e645ff0b10567e400c722dfc28c58dc4fd8d181b.tar.gz
OS X: Enable rpath support on Mac OS X when find_library() is used.
Diffstat (limited to 'Source/cmComputeLinkInformation.cxx')
-rw-r--r--Source/cmComputeLinkInformation.cxx20
1 files changed, 16 insertions, 4 deletions
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index ab9eb147f5..fb7b5b67d0 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;
}