diff options
author | Evan Martin <martine@danga.com> | 2011-04-29 17:57:46 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-04-29 17:57:46 (GMT) |
commit | 58744a4227fc19ad08f3981992d8a8ecc8b2ed75 (patch) | |
tree | 02438216bb0354be5015d0da4bd714f40921ea88 /src | |
parent | c3c9b66a4261c7b329e07aef6f79ec1364900c2c (diff) | |
parent | 535f830f7fae73ea293800045561551c01dec589 (diff) | |
download | Ninja-58744a4227fc19ad08f3981992d8a8ecc8b2ed75.zip Ninja-58744a4227fc19ad08f3981992d8a8ecc8b2ed75.tar.gz Ninja-58744a4227fc19ad08f3981992d8a8ecc8b2ed75.tar.bz2 |
Merged pull request #31 from polrop/generate-whole-graph.
The 'graph' tool now generates a graph based on all root nodes when called without any target. The build.ninja file is also adjusted so that we get the whole graph generated (including the doxygen part).
Diffstat (limited to 'src')
-rw-r--r-- | src/ninja.cc | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/ninja.cc b/src/ninja.cc index 5a0c00d..c4f78ab 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -106,14 +106,28 @@ int CmdGraph(State* state, int argc, char* argv[]) { int status = 0; GraphViz graph; graph.Start(); - for (int i = 0; i < argc; ++i) { - Node* node = state->LookupNode(argv[i]); - if (node) - graph.AddTarget(node); - else { - Error("unknown target '%s'", argv[i]); + if (argc == 0) { + string err; + vector<Node*> root_nodes = state->RootNodes(&err); + if (err.empty()) { + for (vector<Node*>::const_iterator n = root_nodes.begin(); + n != root_nodes.end(); + ++n) + graph.AddTarget(*n); + } else { + Error("%s", err.c_str()); status = 1; } + } else { + for (int i = 0; i < argc; ++i) { + Node* node = state->LookupNode(argv[i]); + if (node) + graph.AddTarget(node); + else { + Error("unknown target '%s'", argv[i]); + status = 1; + } + } } graph.Finish(); return status; |