aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-09-29 13:26:45 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-09-29 13:26:45 +0900
commit9c5e60c3efd3198ad803c83cc6d6e2391d38edd6 (patch)
treeffb69c91362a7e86d1b592df2ea497a603846845
parentf9869fcb895d9840c779e007a8d618cadf1ca4a6 (diff)
downloadplatform_build_kati-9c5e60c3efd3198ad803c83cc6d6e2391d38edd6.tar.gz
platform_build_kati-9c5e60c3efd3198ad803c83cc6d6e2391d38edd6.tar.bz2
platform_build_kati-9c5e60c3efd3198ad803c83cc6d6e2391d38edd6.zip
[C++] Always emit default statement in ninja
Otherwise, build.ninja generated with --gen_all_(phony_|)targets runs unnecessary build targets if no target is specified.
-rw-r--r--main.cc2
-rw-r--r--ninja.cc20
-rw-r--r--ninja.h1
3 files changed, 13 insertions, 10 deletions
diff --git a/main.cc b/main.cc
index 951913d..5918601 100644
--- a/main.cc
+++ b/main.cc
@@ -194,7 +194,7 @@ static int Run(const vector<Symbol>& targets,
if (g_flags.generate_ninja) {
ScopedTimeReporter tr("generate ninja time");
- GenerateNinja(nodes, ev, !targets.empty(), orig_args, start_time);
+ GenerateNinja(nodes, ev, orig_args, start_time);
return 0;
}
diff --git a/ninja.cc b/ninja.cc
index 4700817..eb42c54 100644
--- a/ninja.cc
+++ b/ninja.cc
@@ -183,10 +183,9 @@ class NinjaGenerator {
}
void Generate(const vector<DepNode*>& nodes,
- bool build_all_targets,
const string& orig_args) {
unlink(GetStampFilename().c_str());
- GenerateNinja(nodes, build_all_targets, orig_args);
+ GenerateNinja(nodes, orig_args);
GenerateShell();
GenerateStamp(orig_args);
}
@@ -554,7 +553,6 @@ class NinjaGenerator {
}
void GenerateNinja(const vector<DepNode*>& nodes,
- bool build_all_targets,
const string& orig_args) {
fp_ = fopen(GetNinjaFilename().c_str(), "wb");
if (fp_ == NULL)
@@ -591,11 +589,18 @@ class NinjaGenerator {
used_envs_.emplace(e.str(), val.as_string());
}
- if (!build_all_targets) {
+ string default_targets;
+ if (g_flags.targets.empty()) {
CHECK(!nodes.empty());
- fprintf(fp_, "\ndefault %s\n",
- EscapeBuildTarget(nodes.front()->output).c_str());
+ default_targets = EscapeBuildTarget(nodes.front()->output);
+ } else {
+ for (Symbol s : g_flags.targets) {
+ if (!default_targets.empty())
+ default_targets += ' ';
+ default_targets += EscapeBuildTarget(s);
+ }
}
+ fprintf(fp_, "\ndefault %s\n", default_targets.c_str());
fclose(fp_);
}
@@ -726,11 +731,10 @@ class NinjaGenerator {
void GenerateNinja(const vector<DepNode*>& nodes,
Evaluator* ev,
- bool build_all_targets,
const string& orig_args,
double start_time) {
NinjaGenerator ng(ev, start_time);
- ng.Generate(nodes, build_all_targets, orig_args);
+ ng.Generate(nodes, orig_args);
}
static bool ShouldIgnoreDirty(StringPiece s) {
diff --git a/ninja.h b/ninja.h
index 8377450..f117f2b 100644
--- a/ninja.h
+++ b/ninja.h
@@ -29,7 +29,6 @@ class Evaluator;
void GenerateNinja(const vector<DepNode*>& nodes,
Evaluator* ev,
- bool build_all_targets,
const string& orig_args,
double start_time);