Do not reset restat_mtime if an input is missing (issue #295)

This commit is contained in:
wolfp 2012-05-22 13:39:40 +02:00
parent 8aebe7d32e
commit ec228f1e44

View File

@ -749,19 +749,13 @@ void Builder::FinishEdge(Edge* edge, bool success, const string& output) {
for (vector<Node*>::iterator i = edge->inputs_.begin();
i != edge->inputs_.end() - edge->order_only_deps_; ++i) {
TimeStamp input_mtime = disk_interface_->Stat((*i)->path());
if (input_mtime == 0) {
restat_mtime = 0;
break;
}
if (input_mtime > restat_mtime)
restat_mtime = input_mtime;
}
if (restat_mtime != 0 && !edge->rule().depfile().empty()) {
TimeStamp depfile_mtime = disk_interface_->Stat(edge->EvaluateDepFile());
if (depfile_mtime == 0)
restat_mtime = 0;
else if (depfile_mtime > restat_mtime)
if (depfile_mtime > restat_mtime)
restat_mtime = depfile_mtime;
}