]> git.tdb.fi Git - builder.git/blobdiff - source/target.h
Implement PackageManager::get_package
[builder.git] / source / target.h
index a649e92e157057459e8dbcce918897eb417b053b..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:
@@ -60,17 +62,27 @@ public:
        /** Adds a dependency for the target.  Order is preseved and is important
        for some target types.  It is an error to create dependency cycles, although
        this won't be detected until the targets are prepared. */
-       void add_depend(Target &);
+       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
        direct dependencies first. */
-       virtual void find_depends() { }
+       virtual void find_dependencies() { }
 
 public:
        /// Returns the dependencies of the target, in the order they were added.
-       const Dependencies &get_depends() const { return depends; }
+       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
@@ -113,7 +125,7 @@ protected:
 public:
        /** Prepares the target by finding dependencies, recursively preparing them
        and then checking whether rebuilding is needed. */
-       virtual void prepare();
+       void prepare();
 
        /** Invokes the associated Tool to build the target and returns the
        resulting Task.  The task must be started by the caller. */
@@ -122,6 +134,12 @@ public:
 protected:
        /** Handler for Task::signal_finished. */
        virtual void build_finished(bool);
+
+       virtual void modified() { }
+
+public:
+       /** Removes any results of building the target. */
+       virtual void clean() { }
 };
 
 #endif