}
}
+ string command = EvaluateCommand();
+
assert(!outputs_.empty());
for (vector<Node*>::iterator i = outputs_.begin(); i != outputs_.end(); ++i) {
// We may have other outputs, that our input-recursive traversal hasn't hit
if (dirty || !(*i)->file_->exists() ||
(*i)->file_->mtime_ < most_recent_input) {
(*i)->dirty_ = true;
+ } else {
+ // May also be dirty due to the command changing since the last build.
+ BuildLog::LogEntry* entry;
+ if (state->build_log_ &&
+ (entry = state->build_log_->LookupByOutput((*i)->file_->path_))) {
+ if (command != entry->command)
+ (*i)->dirty_ = true;
+ }
}
}
return true;