diff options
author | Brad King <brad.king@kitware.com> | 2014-01-15 21:33:22 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-01-15 21:33:22 (GMT) |
commit | 79859689005716ba38048d087ebe12f329e0229f (patch) | |
tree | 5e45d34d401173ccae3ef67f048890ead6181a1c | |
parent | 6fac24d750a3ed25c0c58c682a326293d02b7369 (diff) | |
download | CMake-79859689005716ba38048d087ebe12f329e0229f.zip CMake-79859689005716ba38048d087ebe12f329e0229f.tar.gz CMake-79859689005716ba38048d087ebe12f329e0229f.tar.bz2 |
Revert "Ninja: Avoid re-running CMake on next build after regeneration"
Revert commit 6fac24d7 (Ninja: Avoid re-running CMake on next build
after regeneration, 2014-01-09). The files reported by the method
cmMakefile::GetOutputFiles() must cause CMake to re-run only if they are
missing and without considering a timestamp. Therefore they cannot be
listed as outputs of the re-run rule or Ninja will re-run CMake every
time because the timestamp of configure_file outputs does not change.
Another solution will have to be found to the original problem.
-rw-r--r-- | Source/cmGlobalNinjaGenerator.cxx | 29 |
1 files changed, 5 insertions, 24 deletions
diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 3e4e506..61d0272 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -1086,46 +1086,27 @@ void cmGlobalNinjaGenerator::WriteTargetRebuildManifest(std::ostream& os) /*depfile=*/ "", /*rspfile=*/ "", /*rspcontent*/ "", - /*restat=*/ true, + /*restat=*/ false, /*generator=*/ true); - cmNinjaDeps implicitDeps, outputs, temp; - outputs.push_back(NINJA_BUILD_FILE); + cmNinjaDeps implicitDeps; for (std::vector<cmLocalGenerator *>::const_iterator i = this->LocalGenerators.begin(); i != this->LocalGenerators.end(); ++i) { const std::vector<std::string>& lf = (*i)->GetMakefile()->GetListFiles(); implicitDeps.insert(implicitDeps.end(), lf.begin(), lf.end()); const std::vector<std::string>& of = (*i)->GetMakefile()->GetOutputFiles(); - temp.insert(temp.end(), of.begin(), of.end()); + implicitDeps.insert(implicitDeps.end(), of.begin(), of.end()); } - - //Add the CMakeCache.txt file to the implicit depends so that we catch - //when somebody manually modifies the file. - implicitDeps.push_back("CMakeCache.txt"); - - //make sure nothing is in implicit depends twice std::sort(implicitDeps.begin(), implicitDeps.end()); implicitDeps.erase(std::unique(implicitDeps.begin(), implicitDeps.end()), implicitDeps.end()); - - - //make sure nothing is in outputs depends twice - std::sort(temp.begin(), temp.end()); - temp.erase(std::unique(temp.begin(), temp.end()), - temp.end()); - - //make sure that anything that is in implicitDeps is also NOT in outputs - std::set_difference(temp.begin(), - temp.end(), - implicitDeps.begin(), - implicitDeps.end(), - std::back_inserter(outputs)); + implicitDeps.push_back("CMakeCache.txt"); this->WriteBuild(os, "Re-run CMake if any of its inputs changed.", "RERUN_CMAKE", - outputs, + /*outputs=*/ cmNinjaDeps(1, NINJA_BUILD_FILE), /*explicitDeps=*/ cmNinjaDeps(), implicitDeps, /*orderOnlyDeps=*/ cmNinjaDeps(), |