// can fail, which makes the command fail from a build perspective.
vector<Node*> deps_nodes;
- TimeStamp deps_mtime = 0;
string deps_type = edge->GetBinding("deps");
if (result->success() && !deps_type.empty()) {
string extract_err;
- if (!ExtractDeps(result, deps_type, &deps_nodes, &deps_mtime,
- &extract_err)) {
+ if (!ExtractDeps(result, deps_type, &deps_nodes, &extract_err)) {
if (!result->output.empty())
result->output.append("\n");
result->output.append(extract_err);
if (!deps_type.empty()) {
assert(edge->outputs_.size() == 1 && "should have been rejected by parser");
Node* out = edge->outputs_[0];
- if (!deps_mtime) {
- // On Windows there's no separate file to compare against; just reuse
- // the output's mtime.
- deps_mtime = disk_interface_->Stat(out->path());
- }
+ TimeStamp deps_mtime = disk_interface_->Stat(out->path());
scan_.deps_log()->RecordDeps(out, deps_mtime, deps_nodes);
}
bool Builder::ExtractDeps(CommandRunner::Result* result,
const string& deps_type,
vector<Node*>* deps_nodes,
- TimeStamp* deps_mtime,
string* err) {
#ifdef _WIN32
if (deps_type == "msvc") {
return false;
}
- *deps_mtime = disk_interface_->Stat(depfile);
- if (*deps_mtime <= 0) {
- *err = string("unable to read depfile");
- return false;
- }
-
string content = disk_interface_->ReadFile(depfile, err);
if (!err->empty())
return false;
private:
bool ExtractDeps(CommandRunner::Result* result, const string& deps_type,
- vector<Node*>* deps_nodes, TimeStamp* deps_mtime,
- string* err);
+ vector<Node*>* deps_nodes, string* err);
DiskInterface* disk_interface_;
DependencyScan scan_;