aboutsummaryrefslogtreecommitdiff
path: root/ninja.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-12-12 12:44:00 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-12-12 12:44:00 +0900
commit5a5a7f67b1ea6434e5e81cecddba138ff870ff40 (patch)
tree8c6e714bb74ae5e39648f480ec7fdcd629d1c5f1 /ninja.cc
parentb552df31a53738f72d273c1e6c43bf2e370c3597 (diff)
Force regen if ninja file is missing
For issue #39.
Diffstat (limited to 'ninja.cc')
-rw-r--r--ninja.cc29
1 files changed, 20 insertions, 9 deletions
diff --git a/ninja.cc b/ninja.cc
index 896d87f..c638267 100644
--- a/ninja.cc
+++ b/ninja.cc
@@ -191,6 +191,14 @@ class NinjaGenerator {
GenerateStamp(orig_args);
}
+ static string GetNinjaFilename() {
+ return GetFilename("build%s.ninja");
+ }
+
+ static string GetShellScriptFilename() {
+ return GetFilename("ninja%s.sh");
+ }
+
static string GetStampFilename() {
return GetFilename(".kati_stamp%s");
}
@@ -554,15 +562,7 @@ class NinjaGenerator {
fprintf(fp_, "\n\n");
}
- string GetNinjaFilename() const {
- return GetFilename("build%s.ninja");
- }
-
- string GetShellScriptFilename() const {
- return GetFilename("ninja%s.sh");
- }
-
- string GetEnvScriptFilename() const {
+ static string GetEnvScriptFilename() {
return GetFilename("env%s.sh");
}
@@ -808,6 +808,17 @@ bool NeedsRegen(double start_time, const string& orig_args) {
} \
})
+ if (!Exists(NinjaGenerator::GetNinjaFilename())) {
+ fprintf(stderr, "%s is missing, regenerating...\n",
+ NinjaGenerator::GetNinjaFilename().c_str());
+ return true;
+ }
+ if (!Exists(NinjaGenerator::GetShellScriptFilename())) {
+ fprintf(stderr, "%s is missing, regenerating...\n",
+ NinjaGenerator::GetShellScriptFilename().c_str());
+ return true;
+ }
+
const string& stamp_filename = NinjaGenerator::GetStampFilename();
FILE* fp = fopen(stamp_filename.c_str(), "rb+");
if (!fp) {