[Cmake-commits] CMake branch, master, updated. v3.15.3-993-g95d4a2d
Kitware Robot
kwrobot at kitware.com
Tue Sep 10 11:09:07 EDT 2019
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, master has been updated
via 95d4a2d05562c5f0a4113527d31dadef4d7756bd (commit)
via 054d626c9cca0facb372ba740b8a797d463141a3 (commit)
via 5b96fd5b81bde4655e471a31bf0fc579c1d10136 (commit)
via 5eaf1e1be289245267263536f5464e40d2a677c0 (commit)
via 75692393628d757a3dadb090179e167cd9539e2f (commit)
from bbf48c494ad28d1c8ac5aa6e4cecb35c2cbf1b84 (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=95d4a2d05562c5f0a4113527d31dadef4d7756bd
commit 95d4a2d05562c5f0a4113527d31dadef4d7756bd
Merge: 054d626 7569239
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Sep 10 14:59:21 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Sep 10 10:59:39 2019 -0400
Merge topic 'move-setting-GENERATE-upfront'
7569239362 cmMakefile: set GENERATED property of outputs upfront
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3789
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=054d626c9cca0facb372ba740b8a797d463141a3
commit 054d626c9cca0facb372ba740b8a797d463141a3
Merge: bbf48c4 5b96fd5
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Sep 10 14:58:45 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Sep 10 10:58:53 2019 -0400
Merge topic 'MoveIfDifferent'
5b96fd5b81 use cmSystemTools::MoveFileIfDifferent()
5eaf1e1be2 cmSystemTools: introduce MoveFileIfDifferent()
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3794
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5b96fd5b81bde4655e471a31bf0fc579c1d10136
commit 5b96fd5b81bde4655e471a31bf0fc579c1d10136
Author: Rolf Eike Beer <eb at emlix.com>
AuthorDate: Mon Sep 9 10:34:08 2019 +0200
Commit: Rolf Eike Beer <eb at emlix.com>
CommitDate: Mon Sep 9 10:34:08 2019 +0200
use cmSystemTools::MoveFileIfDifferent()
This is better than doing CopyFileIfDifferent() followed by RemoveFile() in
two ways:
- it is more efficient, as it avoids disk I/O for the data, even if the
files here are usually small
- it is atomic, so an abort during the copy will not leave a destination file
with partial data behind
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index b4706a3..f1c48cc 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -3417,8 +3417,7 @@ std::string cmGeneratorTarget::GetPchHeader(const std::string& config,
file << pchEpilogue << "\n";
}
}
- cmSystemTools::CopyFileIfDifferent(filename_tmp, filename);
- cmSystemTools::RemoveFile(filename_tmp);
+ cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
}
return inserted.first->second;
}
@@ -3451,8 +3450,7 @@ std::string cmGeneratorTarget::GetPchSource(const std::string& config,
cmGeneratedFileStream file(filename_tmp);
file << "/* generated by CMake */\n";
}
- cmSystemTools::CopyFileIfDifferent(filename_tmp, filename);
- cmSystemTools::RemoveFile(filename_tmp);
+ cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
}
return inserted.first->second;
}
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 9152e94..3d8c3fb 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -2275,8 +2275,7 @@ void cmLocalGenerator::AddUnityBuild(cmGeneratorTarget* target,
}
}
}
- cmSystemTools::CopyFileIfDifferent(filename_tmp, filename);
- cmSystemTools::RemoveFile(filename_tmp);
+ cmSystemTools::MoveFileIfDifferent(filename_tmp, filename);
target->AddSource(filename, true);
diff --git a/Source/cmUseMangledMesaCommand.cxx b/Source/cmUseMangledMesaCommand.cxx
index cfc00e8..1fd386b 100644
--- a/Source/cmUseMangledMesaCommand.cxx
+++ b/Source/cmUseMangledMesaCommand.cxx
@@ -98,7 +98,6 @@ void CopyAndFullPathMesaHeader(const std::string& source,
// close the files before attempting to copy
fin.close();
fout.close();
- cmSystemTools::CopyFileIfDifferent(tempOutputFile, outFile);
- cmSystemTools::RemoveFile(tempOutputFile);
+ cmSystemTools::MoveFileIfDifferent(tempOutputFile, outFile);
}
}
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5eaf1e1be289245267263536f5464e40d2a677c0
commit 5eaf1e1be289245267263536f5464e40d2a677c0
Author: Rolf Eike Beer <eb at emlix.com>
AuthorDate: Mon Sep 9 09:09:48 2019 +0200
Commit: Rolf Eike Beer <eb at emlix.com>
CommitDate: Mon Sep 9 10:30:25 2019 +0200
cmSystemTools: introduce MoveFileIfDifferent()
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index b7287d9..074faa5 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -855,6 +855,18 @@ bool cmSystemTools::RenameFile(const std::string& oldname,
#endif
}
+void cmSystemTools::MoveFileIfDifferent(const std::string& source,
+ const std::string& destination)
+{
+ if (FilesDiffer(source, destination)) {
+ if (RenameFile(source, destination)) {
+ return;
+ }
+ CopyFileAlways(source, destination);
+ }
+ RemoveFile(source);
+}
+
std::string cmSystemTools::ComputeFileHash(const std::string& source,
cmCryptoHash::Algo algo)
{
diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h
index 863db3f..8ca4939 100644
--- a/Source/cmSystemTools.h
+++ b/Source/cmSystemTools.h
@@ -131,6 +131,10 @@ public:
static bool RenameFile(const std::string& oldname,
const std::string& newname);
+ //! Rename a file if contents are different, delete the source otherwise
+ static void MoveFileIfDifferent(const std::string& source,
+ const std::string& destination);
+
//! Compute the hash of a file
static std::string ComputeFileHash(const std::string& source,
cmCryptoHash::Algo algo);
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=75692393628d757a3dadb090179e167cd9539e2f
commit 75692393628d757a3dadb090179e167cd9539e2f
Author: Daniel Eiband <daniel.eiband at brainlab.com>
AuthorDate: Fri Sep 6 19:17:37 2019 +0200
Commit: Daniel Eiband <daniel.eiband at brainlab.com>
CommitDate: Fri Sep 6 22:22:22 2019 +0200
cmMakefile: set GENERATED property of outputs upfront
Setting the GENERATED property of outputs upfront is a precondition for delayed
custom command creation (generator expressions in outputs).
Issue: 12877
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 411add3..d729451 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -860,7 +860,7 @@ void cmMakefile::AddCustomCommandToTarget(
e << "No TARGET '" << target
<< "' has been created in this directory.";
}
- IssueMessage(messageType, e.str());
+ this->IssueMessage(messageType, e.str());
}
return;
@@ -886,11 +886,7 @@ void cmMakefile::AddCustomCommandToTarget(
}
// Always create the byproduct sources and mark them generated.
- for (std::string const& o : byproducts) {
- if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
- out->SetProperty("GENERATED", "1");
- }
- }
+ this->CreateGeneratedSources(byproducts);
// Add the command to the appropriate build step for the target.
std::vector<std::string> no_output;
@@ -940,6 +936,10 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
}
}
+ // Always create the output sources and mark them generated.
+ this->CreateGeneratedSources(outputs, cmSourceFileLocationKind::Known);
+ this->CreateGeneratedSources(byproducts, cmSourceFileLocationKind::Known);
+
// Choose a source file on which to store the custom command.
cmSourceFile* file = nullptr;
if (!commandLines.empty() && !main_dependency.empty()) {
@@ -987,20 +987,6 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
file->SetProperty("__CMAKE_RULE", "1");
}
- // Always create the output sources and mark them generated.
- for (std::string const& o : outputs) {
- if (cmSourceFile* out =
- this->GetOrCreateSource(o, true, cmSourceFileLocationKind::Known)) {
- out->SetProperty("GENERATED", "1");
- }
- }
- for (std::string const& o : byproducts) {
- if (cmSourceFile* out =
- this->GetOrCreateSource(o, true, cmSourceFileLocationKind::Known)) {
- out->SetProperty("GENERATED", "1");
- }
- }
-
// Attach the custom command to the file.
if (file) {
// Construct a complete list of dependencies.
@@ -1180,6 +1166,7 @@ cmTarget* cmMakefile::AddUtilityCommand(
if (excludeFromAll || this->GetPropertyAsBool("EXCLUDE_FROM_ALL")) {
target->SetProperty("EXCLUDE_FROM_ALL", "TRUE");
}
+
if (!comment) {
// Use an empty comment to avoid generation of default comment.
comment = "";
@@ -1187,6 +1174,9 @@ cmTarget* cmMakefile::AddUtilityCommand(
// Store the custom command in the target.
if (!commandLines.empty() || !depends.empty()) {
+ // Always create the byproduct sources and mark them generated.
+ this->CreateGeneratedSources(byproducts, cmSourceFileLocationKind::Known);
+
std::string force =
cmStrCat(this->GetCurrentBinaryDirectory(), "/CMakeFiles/", utilityName);
std::vector<std::string> forced;
@@ -1205,14 +1195,6 @@ cmTarget* cmMakefile::AddUtilityCommand(
} else {
cmSystemTools::Error("Could not get source file entry for " + force);
}
-
- // Always create the byproduct sources and mark them generated.
- for (std::string const& byproduct : byproducts) {
- if (cmSourceFile* out = this->GetOrCreateSource(
- byproduct, true, cmSourceFileLocationKind::Known)) {
- out->SetProperty("GENERATED", "1");
- }
- }
}
return target;
}
@@ -3325,6 +3307,16 @@ cmSourceFile* cmMakefile::GetOrCreateSource(const std::string& sourceName,
return this->CreateSource(sourceName, generated, kind);
}
+void cmMakefile::CreateGeneratedSources(
+ const std::vector<std::string>& outputs, cmSourceFileLocationKind kind)
+{
+ for (std::string const& output : outputs) {
+ if (cmSourceFile* out = this->GetOrCreateSource(output, true, kind)) {
+ out->SetProperty("GENERATED", "1");
+ }
+ }
+}
+
void cmMakefile::AddTargetObject(std::string const& tgtName,
std::string const& objFile)
{
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 09f53c9..52464d6 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -1030,6 +1030,11 @@ private:
bool escapeQuotes, bool noEscapes,
bool atOnly, const char* filename,
long line, bool replaceAt) const;
+
+ void CreateGeneratedSources(
+ const std::vector<std::string>& outputs,
+ cmSourceFileLocationKind kind = cmSourceFileLocationKind::Ambiguous);
+
/**
* Old version of GetSourceFileWithOutput(const std::string&) kept for
* backward-compatibility. It implements a linear search and support
-----------------------------------------------------------------------
Summary of changes:
Source/cmGeneratorTarget.cxx | 6 ++---
Source/cmLocalGenerator.cxx | 3 +--
Source/cmMakefile.cxx | 48 ++++++++++++++++----------------------
Source/cmMakefile.h | 5 ++++
Source/cmSystemTools.cxx | 12 ++++++++++
Source/cmSystemTools.h | 4 ++++
Source/cmUseMangledMesaCommand.cxx | 3 +--
7 files changed, 45 insertions(+), 36 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list