summaryrefslogtreecommitdiffstats
path: root/src/ninja.cc
diff options
context:
space:
mode:
authorNicolas Despres <nicolas.despres@gmail.com>2011-04-10 16:18:31 (GMT)
committerNicolas Despres <nicolas.despres@gmail.com>2011-04-26 11:23:07 (GMT)
commit652345f7fccbc4f3db3700f576b4b5b8e0768fc2 (patch)
tree301b335a37ce628ff8a7e18268f5af2c886f2c49 /src/ninja.cc
parenta9c54d0413fd0a320d4df789183332ccad39b1db (diff)
downloadNinja-652345f7fccbc4f3db3700f576b4b5b8e0768fc2.zip
Ninja-652345f7fccbc4f3db3700f576b4b5b8e0768fc2.tar.gz
Ninja-652345f7fccbc4f3db3700f576b4b5b8e0768fc2.tar.bz2
graph: Assume all root nodes if no target given.
This way we can generate the complete graph.
Diffstat (limited to 'src/ninja.cc')
-rw-r--r--src/ninja.cc26
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;