diff options
author | Brad King <brad.king@kitware.com> | 2017-03-01 17:40:04 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-03-02 13:36:13 (GMT) |
commit | f3102ca884496a4a0644dc43afaf80a253191ed8 (patch) | |
tree | 4db5edc8621e8dfaac40ed4adc6859160dca84fd /Source | |
parent | 6cbad490c2fdbd9bdc67b406b9f2dcdc21e08ddb (diff) | |
parent | c3fb650c85a01f1a31f3f56f5ae630d4e6c6e98d (diff) | |
download | CMake-f3102ca884496a4a0644dc43afaf80a253191ed8.zip CMake-f3102ca884496a4a0644dc43afaf80a253191ed8.tar.gz CMake-f3102ca884496a4a0644dc43afaf80a253191ed8.tar.bz2 |
Merge branch 'backport-implicit-dir-symlinks' into implicit-dir-symlinks
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmOrderDirectories.cxx | 22 | ||||
-rw-r--r-- | Source/cmOrderDirectories.h | 2 |
2 files changed, 17 insertions, 7 deletions
diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx index 7744a5a..d48eb53 100644 --- a/Source/cmOrderDirectories.cxx +++ b/Source/cmOrderDirectories.cxx @@ -287,8 +287,7 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath, } } - if (this->ImplicitDirectories.find(dir) != - this->ImplicitDirectories.end()) { + if (this->IsImplicitDirectory(dir)) { this->ImplicitDirEntries.push_back( new cmOrderDirectoriesConstraintSOName(this, fullPath, soname)); return; @@ -316,8 +315,7 @@ void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath) // Implicit link directories need special handling. if (!this->ImplicitDirectories.empty()) { std::string dir = cmSystemTools::GetFilenamePath(fullPath); - if (this->ImplicitDirectories.find(dir) != - this->ImplicitDirectories.end()) { + if (this->IsImplicitDirectory(dir)) { this->ImplicitDirEntries.push_back( new cmOrderDirectoriesConstraintLibrary(this, fullPath)); return; @@ -347,7 +345,18 @@ void cmOrderDirectories::AddLanguageDirectories( void cmOrderDirectories::SetImplicitDirectories( std::set<std::string> const& implicitDirs) { - this->ImplicitDirectories = implicitDirs; + this->ImplicitDirectories.clear(); + for (std::set<std::string>::const_iterator i = implicitDirs.begin(); + i != implicitDirs.end(); ++i) { + this->ImplicitDirectories.insert(this->GetRealPath(*i)); + } +} + +bool cmOrderDirectories::IsImplicitDirectory(std::string const& dir) +{ + std::string const& real = this->GetRealPath(dir); + return this->ImplicitDirectories.find(real) != + this->ImplicitDirectories.end(); } void cmOrderDirectories::SetLinkExtensionInfo( @@ -394,8 +403,7 @@ void cmOrderDirectories::AddOriginalDirectories( for (std::vector<std::string>::const_iterator di = dirs.begin(); di != dirs.end(); ++di) { // We never explicitly specify implicit link directories. - if (this->ImplicitDirectories.find(*di) != - this->ImplicitDirectories.end()) { + if (this->IsImplicitDirectory(*di)) { continue; } diff --git a/Source/cmOrderDirectories.h b/Source/cmOrderDirectories.h index 90a67e7..d9e0126 100644 --- a/Source/cmOrderDirectories.h +++ b/Source/cmOrderDirectories.h @@ -82,6 +82,8 @@ private: // Compare directories after resolving symlinks. bool IsSameDirectory(std::string const& l, std::string const& r); + bool IsImplicitDirectory(std::string const& dir); + std::string const& GetRealPath(std::string const& dir); std::map<std::string, std::string> RealPaths; |