summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2020-01-14 10:17:50 (GMT)
committerTim Blechmann <tim@klingt.org>2020-01-14 10:20:39 (GMT)
commit22f38c0d6b482e99bb793f64c7701259dcf00bd7 (patch)
tree9c920e53c23ad1559c345c1705475619bf7cb7b4
parent23e782ce05b5996536eff4c075d4bc36a8d8ba85 (diff)
downloadCMake-22f38c0d6b482e99bb793f64c7701259dcf00bd7.zip
CMake-22f38c0d6b482e99bb793f64c7701259dcf00bd7.tar.gz
CMake-22f38c0d6b482e99bb793f64c7701259dcf00bd7.tar.bz2
cmake: avoid getcwd in `CollapseFullPath`
`CollapseFullPath` calls getcwd, which is a rather expensive system call. we can replace it with `GetHomeOutputDirectory()` to save us from the calling overhead
-rw-r--r--Source/cmAddCustomCommandCommand.cxx3
-rw-r--r--Source/cmAddSubDirectoryCommand.cxx3
-rw-r--r--Source/cmCustomCommandGenerator.cxx3
-rw-r--r--Source/cmGeneratorTarget.cxx3
-rw-r--r--Source/cmSourceFileLocation.cxx3
5 files changed, 10 insertions, 5 deletions
diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx
index 995088c..5deba8b 100644
--- a/Source/cmAddCustomCommandCommand.cxx
+++ b/Source/cmAddCustomCommandCommand.cxx
@@ -215,7 +215,8 @@ bool cmAddCustomCommandCommand(std::vector<std::string> const& args,
}
if (cmSystemTools::FileIsFullPath(filename)) {
- filename = cmSystemTools::CollapseFullPath(filename);
+ filename = cmSystemTools::CollapseFullPath(
+ filename, status.GetMakefile().GetHomeOutputDirectory());
}
switch (doing) {
case doing_depfile:
diff --git a/Source/cmAddSubDirectoryCommand.cxx b/Source/cmAddSubDirectoryCommand.cxx
index 6a1a514..35eabaf 100644
--- a/Source/cmAddSubDirectoryCommand.cxx
+++ b/Source/cmAddSubDirectoryCommand.cxx
@@ -53,7 +53,8 @@ bool cmAddSubDirectoryCommand(std::vector<std::string> const& args,
status.SetError(error);
return false;
}
- srcPath = cmSystemTools::CollapseFullPath(srcPath);
+ srcPath =
+ cmSystemTools::CollapseFullPath(srcPath, mf.GetHomeOutputDirectory());
// Compute the full path to the binary directory.
std::string binPath;
diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx
index c568253..a595007 100644
--- a/Source/cmCustomCommandGenerator.cxx
+++ b/Source/cmCustomCommandGenerator.cxx
@@ -34,7 +34,8 @@ void AppendPaths(const std::vector<std::string>& inputs,
it = cmStrCat(lg->GetMakefile()->GetCurrentBinaryDirectory(), '/', it);
}
if (cmSystemTools::FileIsFullPath(it)) {
- it = cmSystemTools::CollapseFullPath(it);
+ it = cmSystemTools::CollapseFullPath(
+ it, lg->GetMakefile()->GetHomeOutputDirectory());
}
}
cm::append(output, result);
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index 19d5b4d..53daa89 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -3087,7 +3087,8 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetIncludeDirectories(
cmLinkImplementationLibraries const* impl =
this->GetLinkImplementationLibraries(config);
for (cmLinkImplItem const& lib : impl->Libraries) {
- std::string libDir = cmSystemTools::CollapseFullPath(lib.AsStr());
+ std::string libDir = cmSystemTools::CollapseFullPath(
+ lib.AsStr(), this->Makefile->GetHomeOutputDirectory());
static cmsys::RegularExpression frameworkCheck(
"(.*\\.framework)(/Versions/[^/]+)?/[^/]+$");
diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx
index df702b0..5f807b8 100644
--- a/Source/cmSourceFileLocation.cxx
+++ b/Source/cmSourceFileLocation.cxx
@@ -31,7 +31,8 @@ cmSourceFileLocation::cmSourceFileLocation(cmMakefile const* mf,
this->AmbiguousExtension = true;
this->Directory = cmSystemTools::GetFilenamePath(name);
if (cmSystemTools::FileIsFullPath(this->Directory)) {
- this->Directory = cmSystemTools::CollapseFullPath(this->Directory);
+ this->Directory = cmSystemTools::CollapseFullPath(
+ this->Directory, mf->GetHomeOutputDirectory());
}
this->Name = cmSystemTools::GetFilenameName(name);
if (kind == cmSourceFileLocationKind::Known) {