diff options
author | Evan Martin <martine@danga.com> | 2011-09-09 18:37:23 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-09-09 18:37:23 (GMT) |
commit | 00997c1c56d26a7a73c7447c99350e834e93ced5 (patch) | |
tree | b5afa814b7d224d85b5edef872f135417fff251b /src | |
parent | f5ac6b4cea0f67cf2dae4f2d48cdda3664f957ac (diff) | |
parent | d0b249267d22ac03888ebe8a74f3945ca0c88559 (diff) | |
download | Ninja-00997c1c56d26a7a73c7447c99350e834e93ced5.zip Ninja-00997c1c56d26a7a73c7447c99350e834e93ced5.tar.gz Ninja-00997c1c56d26a7a73c7447c99350e834e93ced5.tar.bz2 |
Merge pull request #95 from qhuo/depfile-for-command-with-multiple-outputs
Add depfile support to build command with multiple outputs (Fixes: #61)
Diffstat (limited to 'src')
-rw-r--r-- | src/graph.cc | 4 | ||||
-rw-r--r-- | src/parsers.cc | 7 | ||||
-rw-r--r-- | src/parsers_test.cc | 22 |
3 files changed, 11 insertions, 22 deletions
diff --git a/src/graph.cc b/src/graph.cc index 9b5f10b..82716aa 100644 --- a/src/graph.cc +++ b/src/graph.cc @@ -150,10 +150,6 @@ bool Edge::LoadDepFile(State* state, DiskInterface* disk_interface, } // Check that this depfile matches our output. - if (outputs_.size() != 1) { - *err = "expected only one output"; - return false; - } if (outputs_[0]->file_->path_ != makefile.out_) { *err = "expected makefile to mention '" + outputs_[0]->file_->path_ + "', " "got '" + makefile.out_ + "'"; diff --git a/src/parsers.cc b/src/parsers.cc index 7f587a6..35790b2 100644 --- a/src/parsers.cc +++ b/src/parsers.cc @@ -471,13 +471,6 @@ bool ManifestParser::ParseEdge(string* err) { if (!rule) return tokenizer_.Error("unknown build rule '" + rule_name + "'", err); - if (!rule->depfile_.empty()) { - if (outs.size() > 1) { - return tokenizer_.Error("dependency files only work with single-output " - "rules", err); - } - } - for (;;) { string in; if (!tokenizer_.ReadIdent(&in)) diff --git a/src/parsers_test.cc b/src/parsers_test.cc index 1ac5990..5e2746d 100644 --- a/src/parsers_test.cc +++ b/src/parsers_test.cc @@ -316,17 +316,6 @@ TEST_F(ParserTest, Errors) { State state; ManifestParser parser(&state, NULL); string err; - EXPECT_FALSE(parser.Parse("rule cc\n command = foo\n depfile = bar\n" - "build a.o b.o: cc c.cc\n", - &err)); - EXPECT_EQ("line 4, col 16: dependency files only work with " - "single-output rules", err); - } - - { - State state; - ManifestParser parser(&state, NULL); - string err; EXPECT_FALSE(parser.Parse("rule cc\n command = foo\n othervar = bar\n", &err)); EXPECT_EQ("line 3, col 3: unexpected variable 'othervar'", err); @@ -372,6 +361,17 @@ TEST_F(ParserTest, Errors) { } } +TEST_F(ParserTest, MultipleOutputs) +{ + State state; + ManifestParser parser(&state, NULL); + string err; + EXPECT_TRUE(parser.Parse("rule cc\n command = foo\n depfile = bar\n" + "build a.o b.o: cc c.cc\n", + &err)); + EXPECT_EQ("", err); +} + TEST_F(ParserTest, SubNinja) { files_["test.ninja"] = "var = inner\n" |