Index: tools/gn/ninja_build_writer.cc |
diff --git a/tools/gn/ninja_build_writer.cc b/tools/gn/ninja_build_writer.cc |
index 94a9f3d7878aa94f8a9ff020ff73444f31509b42..9a5e2d68ac45bb0be98b9b286a4e1a7d0a607b9a 100644 |
--- a/tools/gn/ninja_build_writer.cc |
+++ b/tools/gn/ninja_build_writer.cc |
@@ -256,10 +256,26 @@ bool NinjaBuildWriter::WritePhonyAndAllRules(Err* err) { |
} |
} |
+ // Figure out if the BUILD file wants to declare a custom "default" |
+ // target (rather than building 'all' by default). By convention |
+ // we use group("default") but it doesn't have to be a group. |
+ bool default_target_exists = false; |
+ for (size_t i = 0; i < default_toolchain_targets_.size(); i++) { |
+ const Label& label = default_toolchain_targets_[i]->label(); |
+ if (label.dir().value() == "//" && label.name() == "default") |
+ default_target_exists = true; |
+ } |
+ |
if (!all_rules.empty()) { |
out_ << "\nbuild all: phony " << all_rules << std::endl; |
+ } |
+ |
+ if (default_target_exists) { |
+ out_ << "default default" << std::endl; |
+ } else if (!all_rules.empty()) { |
out_ << "default all" << std::endl; |
} |
+ |
return true; |
} |