aboutsummaryrefslogtreecommitdiff
path: root/ninja.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-10-01 14:21:40 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-10-01 14:24:39 +0900
commita62b02a1251a0f6c452a25fce03258f12472507f (patch)
tree1cfb0e7e89ad923a7e418a09c9158441df69907e /ninja.cc
parent7382f9abe433a7a9378f5b77db96c4e69ae3e1b5 (diff)
[C++] Do not have multiple default statements in a ninja file
We have the first target as default only when --gen_all_targets or --gen_all_phony_targets.
Diffstat (limited to 'ninja.cc')
-rw-r--r--ninja.cc16
1 files changed, 10 insertions, 6 deletions
diff --git a/ninja.cc b/ninja.cc
index 75687b0..64b8e80 100644
--- a/ninja.cc
+++ b/ninja.cc
@@ -169,7 +169,8 @@ bool GetDepfileFromCommand(string* cmd, string* out) {
class NinjaGenerator {
public:
NinjaGenerator(Evaluator* ev, double start_time)
- : ce_(ev), ev_(ev), fp_(NULL), rule_id_(0), start_time_(start_time) {
+ : ce_(ev), ev_(ev), fp_(NULL), rule_id_(0), start_time_(start_time),
+ default_target_(NULL) {
ev_->set_avoid_io(true);
shell_ = ev->EvalVar(kShellSym);
if (g_flags.goma_dir)
@@ -519,7 +520,7 @@ class NinjaGenerator {
if (use_local_pool)
fprintf(fp_, " pool = local_pool\n");
if (node->is_default_target) {
- fprintf(fp_, "default %s\n", target.c_str());
+ default_target_ = node;
}
}
@@ -594,9 +595,10 @@ class NinjaGenerator {
}
string default_targets;
- if (g_flags.targets.empty()) {
- CHECK(!nodes.empty());
- default_targets = EscapeBuildTarget(nodes.front()->output);
+ if (g_flags.targets.empty() ||
+ g_flags.gen_all_targets || g_flags.gen_all_phony_targets) {
+ CHECK(default_target_);
+ default_targets = EscapeBuildTarget(default_target_->output);
} else {
for (Symbol s : g_flags.targets) {
if (!default_targets.empty())
@@ -604,7 +606,8 @@ class NinjaGenerator {
default_targets += EscapeBuildTarget(s);
}
}
- fprintf(fp_, "\ndefault %s\n", default_targets.c_str());
+ fprintf(fp_, "\n");
+ fprintf(fp_, "default %s\n", default_targets.c_str());
fclose(fp_);
}
@@ -731,6 +734,7 @@ class NinjaGenerator {
map<string, string> used_envs_;
string kati_binary_;
double start_time_;
+ DepNode* default_target_;
};
void GenerateNinja(const vector<DepNode*>& nodes,