X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftarget.h;h=0b9d2306fde33f6b35209c5d94dcf08d3af2101b;hb=b1c51196b34f644e821f351c2acdb48619aed2e3;hp=a649e92e157057459e8dbcce918897eb417b053b;hpb=8818c970f123a7fa44bf41bc60369217d083b4da;p=builder.git diff --git a/source/target.h b/source/target.h index a649e92..0b9d230 100644 --- a/source/target.h +++ b/source/target.h @@ -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