- const SourcePackage *spkg=dynamic_cast<const SourcePackage *>(package);
- if(!rebuild && spkg && spkg->get_config().get_mtime()>mtime)
- mark_rebuild("Package options changed");
+ // XXX Minor breach of OO here
+ if(FileTarget *ft = dynamic_cast<FileTarget *>(this))
+ if(!builder.get_dry_run() && FS::exists(ft->get_path()))
+ FS::unlink(ft->get_path());
+
+ Task *task = tool->run(*this);
+ task->signal_finished.connect(sigc::mem_fun(this, &Target::build_finished));
+ state = BUILDING;
+
+ return task;