mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-21 22:50:26 -06:00
Merge branch 'backport-implicit-dir-symlinks' into implicit-dir-symlinks
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user