cmOrderDirectories: Factor out directory comparison

Create an `IsSameDirectory` helper method.
This commit is contained in:
Brad King 2015-12-01 10:44:48 -05:00
parent b4a2ada297
commit 6b18528743
2 changed files with 12 additions and 4 deletions

View File

@ -73,10 +73,8 @@ public:
{
// Check if this directory conflicts with the entry.
std::string const& dir = this->OD->OriginalDirectories[i];
if(dir != this->Directory &&
cmSystemTools::GetRealPath(dir) !=
cmSystemTools::GetRealPath(this->Directory) &&
this->FindConflict(dir))
if (!this->OD->IsSameDirectory(dir, this->Directory) &&
this->FindConflict(dir))
{
// The library will be found in this directory but this is not
// the directory named for it. Add an entry to make sure the
@ -639,3 +637,10 @@ void cmOrderDirectories::DiagnoseCycle()
->IssueMessage(cmake::WARNING, e.str(),
this->Target->Target->GetBacktrace());
}
bool cmOrderDirectories::IsSameDirectory(std::string const& l,
std::string const& r)
{
return (l == r ||
cmSystemTools::GetRealPath(l) == cmSystemTools::GetRealPath(r));
}

View File

@ -80,6 +80,9 @@ private:
struct ConflictList: public std::vector<ConflictPair> {};
std::vector<ConflictList> ConflictGraph;
// Compare directories after resolving symlinks.
bool IsSameDirectory(std::string const& l, std::string const& r);
friend class cmOrderDirectoriesConstraint;
friend class cmOrderDirectoriesConstraintLibrary;
};