]> git.tdb.fi Git - builder.git/blobdiff - source/target.h
Add a side effect system for building multiple targets at once
[builder.git] / source / target.h
index 48b3424d2f39d908d4792b05ba54fc0fce43c5c4..0b9d2306fde33f6b35209c5d94dcf08d3af2101b 100644 (file)
@@ -47,6 +47,8 @@ protected:
        std::string rebuild_reason;
 
        Dependencies depends;
+       Dependencies side_effects;
+       Target *primary_target;
 
        Target(Builder &, const std::string &);
 public:
@@ -62,6 +64,10 @@ public:
        this won't be detected until the targets are prepared. */
        void add_dependency(Target &);
 
+       /** Adds a side effect for the target.  Side effects are not built on their
+       own, but together with their primary target. */
+       void add_side_effect(Target &);
+
 protected:
        /** Finds dependencies for the target.  Called during preparation.  If the
        target needs to recursively inspect its dependencies, it should prepare its
@@ -72,6 +78,12 @@ public:
        /// Returns the dependencies of the target, in the order they were added.
        const Dependencies &get_dependencies() const { return depends; }
 
+       /// Returns the side effects of the target.
+       const Dependencies &get_side_effects() const { return side_effects; }
+
+       /// Returns the primary target associated with a side effect target.
+       Target *get_primary_target() const { return primary_target; }
+
        /** Tries to locate a target that will help getting this target built.  If
        all dependencies are up-to-date, returns this target.  If there are no
        targets ready to be built (maybe because they are being built right now),