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 {