Add support for default targets in ninja output
make treats the first target it sees as the default target if no goals
are passed on the commmand line. When generating a ninja file, mark
this target with "default" to make it build if no goals are passed to
ninja.
Change-Id: I11befa4f88b8ca8734fdc7dd470c2a0a3722410d
diff --git a/dep.cc b/dep.cc
index 7be6a6d..d2d45af 100644
--- a/dep.cc
+++ b/dep.cc
@@ -104,6 +104,7 @@
: output(o),
has_rule(false),
is_phony(p),
+ is_default_target(false),
rule_vars(NULL),
output_pattern(Symbol::IsUninitialized()) {
g_dep_node_pool->push_back(this);
@@ -137,12 +138,14 @@
void Build(vector<Symbol> targets,
vector<DepNode*>* nodes) {
- if (targets.empty()) {
- if (!first_rule_) {
- ERROR("*** No targets.");
- }
- CHECK(!first_rule_->outputs.empty());
+ if (!first_rule_) {
+ ERROR("*** No targets.");
+ }
+ CHECK(!first_rule_->outputs.empty());
+ first_rule_->is_default_target = true;
+
+ if (targets.empty()) {
targets.push_back(first_rule_->outputs[0]);
}
if (g_flags.gen_all_phony_targets) {
@@ -505,6 +508,7 @@
n->has_rule = true;
n->cmds = rule->cmds;
+ n->is_default_target = rule->is_default_target;
if (cur_rule_vars_->empty()) {
n->rule_vars = NULL;
} else {