diff options
| author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-10-01 14:21:40 +0900 |
|---|---|---|
| committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-10-01 14:24:39 +0900 |
| commit | a62b02a1251a0f6c452a25fce03258f12472507f (patch) | |
| tree | 1cfb0e7e89ad923a7e418a09c9158441df69907e /ninja.cc | |
| parent | 7382f9abe433a7a9378f5b77db96c4e69ae3e1b5 (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.cc | 16 |
1 files changed, 10 insertions, 6 deletions
@@ -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, |
