Merge branch 'backport-implicit-dir-symlinks' into implicit-dir-symlinks

This commit is contained in:
Brad King
2017-03-01 12:40:04 -05:00
2 changed files with 17 additions and 7 deletions

View File

@@ -287,8 +287,7 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath,
} }
} }
if (this->ImplicitDirectories.find(dir) != if (this->IsImplicitDirectory(dir)) {
this->ImplicitDirectories.end()) {
this->ImplicitDirEntries.push_back( this->ImplicitDirEntries.push_back(
new cmOrderDirectoriesConstraintSOName(this, fullPath, soname)); new cmOrderDirectoriesConstraintSOName(this, fullPath, soname));
return; return;
@@ -316,8 +315,7 @@ void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath)
// Implicit link directories need special handling. // Implicit link directories need special handling.
if (!this->ImplicitDirectories.empty()) { if (!this->ImplicitDirectories.empty()) {
std::string dir = cmSystemTools::GetFilenamePath(fullPath); std::string dir = cmSystemTools::GetFilenamePath(fullPath);
if (this->ImplicitDirectories.find(dir) != if (this->IsImplicitDirectory(dir)) {
this->ImplicitDirectories.end()) {
this->ImplicitDirEntries.push_back( this->ImplicitDirEntries.push_back(
new cmOrderDirectoriesConstraintLibrary(this, fullPath)); new cmOrderDirectoriesConstraintLibrary(this, fullPath));
return; return;
@@ -347,7 +345,18 @@ void cmOrderDirectories::AddLanguageDirectories(
void cmOrderDirectories::SetImplicitDirectories( void cmOrderDirectories::SetImplicitDirectories(
std::set<std::string> const& implicitDirs) 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( void cmOrderDirectories::SetLinkExtensionInfo(
@@ -394,8 +403,7 @@ void cmOrderDirectories::AddOriginalDirectories(
for (std::vector<std::string>::const_iterator di = dirs.begin(); for (std::vector<std::string>::const_iterator di = dirs.begin();
di != dirs.end(); ++di) { di != dirs.end(); ++di) {
// We never explicitly specify implicit link directories. // We never explicitly specify implicit link directories.
if (this->ImplicitDirectories.find(*di) != if (this->IsImplicitDirectory(*di)) {
this->ImplicitDirectories.end()) {
continue; continue;
} }

View File

@@ -82,6 +82,8 @@ private:
// Compare directories after resolving symlinks. // Compare directories after resolving symlinks.
bool IsSameDirectory(std::string const& l, std::string const& r); 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::string const& GetRealPath(std::string const& dir);
std::map<std::string, std::string> RealPaths; std::map<std::string, std::string> RealPaths;