diff options
author | Evan Martin <martine@danga.com> | 2011-12-07 20:08:00 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-12-07 20:10:10 (GMT) |
commit | bf72e45180e1dd80d9efea8d2acebcac15ea12a4 (patch) | |
tree | 60610967b673187c0fe53694308db3eedf6e5d69 /src/graph.cc | |
parent | ab3e8c868b81a391fb713c449b6fac9720d25249 (diff) | |
download | Ninja-bf72e45180e1dd80d9efea8d2acebcac15ea12a4.zip Ninja-bf72e45180e1dd80d9efea8d2acebcac15ea12a4.tar.gz Ninja-bf72e45180e1dd80d9efea8d2acebcac15ea12a4.tar.bz2 |
use re2c to parse depfiles
Diffstat (limited to 'src/graph.cc')
-rw-r--r-- | src/graph.cc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/graph.cc b/src/graph.cc index 9733e3d..be0c529 100644 --- a/src/graph.cc +++ b/src/graph.cc @@ -18,6 +18,7 @@ #include <stdio.h> #include "build_log.h" +#include "depfile_parser.h" #include "disk_interface.h" #include "parsers.h" #include "state.h" @@ -217,29 +218,29 @@ bool Edge::LoadDepFile(State* state, DiskInterface* disk_interface, if (content.empty()) return true; - MakefileParser makefile; - string makefile_err; - if (!makefile.Parse(content, &makefile_err)) { - *err = path + ": " + makefile_err; + DepfileParser depfile; + string depfile_err; + if (!depfile.Parse(content, &depfile_err)) { + *err = path + ": " + depfile_err; return false; } // Check that this depfile matches our output. StringPiece opath = StringPiece(outputs_[0]->path()); - if (opath != makefile.out_) { + if (opath != depfile.out_) { *err = "expected depfile '" + path + "' to mention '" + - outputs_[0]->path() + "', got '" + makefile.out_.AsString() + "'"; + outputs_[0]->path() + "', got '" + depfile.out_.AsString() + "'"; return false; } - inputs_.insert(inputs_.end() - order_only_deps_, makefile.ins_.size(), 0); - implicit_deps_ += makefile.ins_.size(); + inputs_.insert(inputs_.end() - order_only_deps_, depfile.ins_.size(), 0); + implicit_deps_ += depfile.ins_.size(); vector<Node*>::iterator implicit_dep = - inputs_.end() - order_only_deps_ - makefile.ins_.size(); + inputs_.end() - order_only_deps_ - depfile.ins_.size(); // Add all its in-edges. - for (vector<StringPiece>::iterator i = makefile.ins_.begin(); - i != makefile.ins_.end(); ++i, ++implicit_dep) { + for (vector<StringPiece>::iterator i = depfile.ins_.begin(); + i != depfile.ins_.end(); ++i, ++implicit_dep) { string path(i->str_, i->len_); if (!CanonicalizePath(&path, err)) return false; |