string content = disk_interface_->ReadFile(depfile, err);
if (!err->empty())
return false;
+ if (content.empty())
+ return true;
DepfileParser deps;
if (!deps.Parse(&content, err))
deps_nodes->push_back(state_->GetNode(*i));
}
- /* TODO: unlink the file via diskinterface.
- if (unlink(depfile.c_str()) < 0) {
- *err = string("unlink: ")) + strerror(errno);
+ if (disk_interface_->RemoveFile(depfile) < 0) {
+ *err = string("deleting depfile: ") + strerror(errno);
return false;
}
- */
#endif
return true;
fs_.Tick();
+ // Recreate the depfile, as it should have been deleted by the build.
+ fs_.Create("foo.o.d", "foo.o: blah.h bar.h\n");
+
// implicit dep dirty, expect a rebuild.
fs_.Create("blah.h", "");
fs_.Create("bar.h", "");
fs_.Tick();
+ // Recreate the depfile, as it should have been deleted by the build.
+ fs_.Create("foo.o.d", "foo.o: blah.h bar.h\n");
+
// order only dep dirty, no rebuild.
fs_.Create("otherfile", "");
command_runner_.commands_ran_.clear();