void FileTarget::check_rebuild()
{
- if(!tool)
+ if(!tool || needs_rebuild())
return;
if(!mtime)
if(!needs_rebuild())
{
+ // Some side effects might not exist
for(Dependencies::iterator i=side_effects.begin(); (i!=side_effects.end() && !needs_rebuild()); ++i)
- {
- FileTarget *ft = dynamic_cast<FileTarget *>(*i);
- if(ft && !ft->get_mtime())
- mark_rebuild((*i)->get_name()+" does not exist");
- }
+ if((*i)->needs_rebuild())
+ mark_rebuild((*i)->get_name()+" needs rebuilding");
}
if(!needs_rebuild() && package)
return tool->create_build_signature(binfo);
}
-Task *FileTarget::build()
+void FileTarget::build(Task &task)
{
- Task *task = Target::build();
- task->set_file(path);
- task->set_unlink(true);
- return task;
+ task.add_file(path);
+ task.set_unlink(true);
}
void FileTarget::build_finished(bool success)