diff options
author | Clinton Stimpson <clinton@elemtech.com> | 2013-07-16 04:23:12 (GMT) |
---|---|---|
committer | Clinton Stimpson <clinton@elemtech.com> | 2013-07-16 04:39:08 (GMT) |
commit | e645ff0b10567e400c722dfc28c58dc4fd8d181b (patch) | |
tree | a2ba239079f137345d940c527057d4e94d1ed463 /Source/cmComputeLinkInformation.cxx | |
parent | b94e726a83b92f5b7376b97aa448107884a76685 (diff) | |
download | CMake-e645ff0b10567e400c722dfc28c58dc4fd8d181b.zip CMake-e645ff0b10567e400c722dfc28c58dc4fd8d181b.tar.gz CMake-e645ff0b10567e400c722dfc28c58dc4fd8d181b.tar.bz2 |
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.cxx | 20 |
1 files changed, 16 insertions, 4 deletions
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; } |