]> git.tdb.fi Git - builder.git/blobdiff - source/lib/filetarget.cpp
Associate targets with FileTargets instead of paths
[builder.git] / source / lib / filetarget.cpp
index a2bd3f0a1e0b1f922e2fe89feff2bd59483ca39e..7ab13c3d5bf93833580a687982d7dd2acbdcc2ce 100644 (file)
 using namespace std;
 using namespace Msp;
 
+FileTarget::FileTarget(Builder &b, const FS::Path &a):
+       FileTarget(b, 0, a)
+{ }
+
+FileTarget::FileTarget(Builder &b, const SourcePackage &p, const FS::Path &a):
+       FileTarget(b, &p, a)
+{ }
+
 FileTarget::FileTarget(Builder &b, const SourcePackage *p, const FS::Path &a):
        Target(b, generate_name(b, p, a)),
        path(a)
@@ -83,6 +91,8 @@ void FileTarget::check_rebuild()
                auto i = find_if(side_effects, [](const Target *s){ return s->needs_rebuild(); });
                if(i!=side_effects.end())
                        mark_rebuild((*i)->get_name()+" needs rebuilding");
+               if(primary_target && primary_target->needs_rebuild())
+                       mark_rebuild(primary_target->get_name()+" needs rebuilding");
        }
 
        if(!needs_rebuild() && package)
@@ -137,7 +147,7 @@ string FileTarget::create_build_signature() const
 
 void FileTarget::build(Task &task)
 {
-       task.add_file(path);
+       task.add_target(*this);
        task.set_unlink(true);
 }