summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-01-15 21:33:22 (GMT)
committerBrad King <brad.king@kitware.com>2014-01-15 21:33:22 (GMT)
commit79859689005716ba38048d087ebe12f329e0229f (patch)
tree5e45d34d401173ccae3ef67f048890ead6181a1c
parent6fac24d750a3ed25c0c58c682a326293d02b7369 (diff)
downloadCMake-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.cxx29
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(),