[Cmake-commits] CMake branch, next, updated. v3.4.0-1570-gc95156f
Brad King
brad.king at kitware.com
Tue Dec 1 11:04:57 EST 2015
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via c95156f85d7fa9a1cf1737d801a31b1bb74bae5b (commit)
via 4e3cf8b012404e4d9602c16d473480cc3d0c7928 (commit)
via 6b1852874325520a418eb05ec3c2149c2eb194a2 (commit)
from cfcc9d523d53ca01cdebe0e6c01e7e03b8fa8780 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c95156f85d7fa9a1cf1737d801a31b1bb74bae5b
commit c95156f85d7fa9a1cf1737d801a31b1bb74bae5b
Merge: cfcc9d5 4e3cf8b
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Dec 1 11:04:56 2015 -0500
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Tue Dec 1 11:04:56 2015 -0500
Merge topic 'reduce-realpath-calls' into next
4e3cf8b0 cmOrderDirectories: Reduce repeat realpath() calls
6b185287 cmOrderDirectories: Factor out directory comparison
diff --cc Source/cmOrderDirectories.cxx
index e3eedc7,e3406a8..61efd01
--- a/Source/cmOrderDirectories.cxx
+++ b/Source/cmOrderDirectories.cxx
@@@ -637,5 -635,25 +635,25 @@@ void cmOrderDirectories::DiagnoseCycle(
e << "Some of these libraries may not be found correctly.";
this->GlobalGenerator->GetCMakeInstance()
->IssueMessage(cmake::WARNING, e.str(),
- this->Target->Target->GetBacktrace());
+ this->Target->GetBacktrace());
}
+
+ bool cmOrderDirectories::IsSameDirectory(std::string const& l,
+ std::string const& r)
+ {
+ return this->GetRealPath(l) == this->GetRealPath(r);
+ }
+
+ std::string const& cmOrderDirectories::GetRealPath(std::string const& dir)
+ {
+ std::map<std::string, std::string>::iterator i =
+ this->RealPaths.lower_bound(dir);
+ if (i == this->RealPaths.end() ||
+ this->RealPaths.key_comp()(dir, i->first))
+ {
+ typedef std::map<std::string, std::string>::value_type value_type;
+ i = this->RealPaths.insert(
+ i, value_type(dir, cmSystemTools::GetRealPath(dir)));
+ }
+ return i->second;
+ }
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4e3cf8b012404e4d9602c16d473480cc3d0c7928
commit 4e3cf8b012404e4d9602c16d473480cc3d0c7928
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Dec 1 10:57:33 2015 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Tue Dec 1 11:00:32 2015 -0500
cmOrderDirectories: Reduce repeat realpath() calls
Since commit v3.1.0-rc1~110^2 (Tolerate symlinks during RPATH ordering,
2014-09-09) we call realpath() for every directory ordering constraint
check. On some platforms/filesystems this is slow, so memoize the
result of the call for each directory.
diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx
index 9491204..e3406a8 100644
--- a/Source/cmOrderDirectories.cxx
+++ b/Source/cmOrderDirectories.cxx
@@ -641,6 +641,19 @@ void cmOrderDirectories::DiagnoseCycle()
bool cmOrderDirectories::IsSameDirectory(std::string const& l,
std::string const& r)
{
- return (l == r ||
- cmSystemTools::GetRealPath(l) == cmSystemTools::GetRealPath(r));
+ return this->GetRealPath(l) == this->GetRealPath(r);
+}
+
+std::string const& cmOrderDirectories::GetRealPath(std::string const& dir)
+{
+ std::map<std::string, std::string>::iterator i =
+ this->RealPaths.lower_bound(dir);
+ if (i == this->RealPaths.end() ||
+ this->RealPaths.key_comp()(dir, i->first))
+ {
+ typedef std::map<std::string, std::string>::value_type value_type;
+ i = this->RealPaths.insert(
+ i, value_type(dir, cmSystemTools::GetRealPath(dir)));
+ }
+ return i->second;
}
diff --git a/Source/cmOrderDirectories.h b/Source/cmOrderDirectories.h
index 0657e92..477216b 100644
--- a/Source/cmOrderDirectories.h
+++ b/Source/cmOrderDirectories.h
@@ -83,6 +83,9 @@ private:
// Compare directories after resolving symlinks.
bool IsSameDirectory(std::string const& l, std::string const& r);
+ std::string const& GetRealPath(std::string const& dir);
+ std::map<std::string, std::string> RealPaths;
+
friend class cmOrderDirectoriesConstraint;
friend class cmOrderDirectoriesConstraintLibrary;
};
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6b1852874325520a418eb05ec3c2149c2eb194a2
commit 6b1852874325520a418eb05ec3c2149c2eb194a2
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Dec 1 10:44:48 2015 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Tue Dec 1 11:00:32 2015 -0500
cmOrderDirectories: Factor out directory comparison
Create an `IsSameDirectory` helper method.
diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx
index 35ee127..9491204 100644
--- a/Source/cmOrderDirectories.cxx
+++ b/Source/cmOrderDirectories.cxx
@@ -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));
+}
diff --git a/Source/cmOrderDirectories.h b/Source/cmOrderDirectories.h
index 211c786..0657e92 100644
--- a/Source/cmOrderDirectories.h
+++ b/Source/cmOrderDirectories.h
@@ -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;
};
-----------------------------------------------------------------------
Summary of changes:
Source/cmOrderDirectories.cxx | 26 ++++++++++++++++++++++----
Source/cmOrderDirectories.h | 6 ++++++
2 files changed, 28 insertions(+), 4 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list