X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftarget.h;h=e7150c205deb0d1b274b63da6a0194abd3161299;hb=HEAD;hp=ccc616bb464a50a950888040bf41e058d92a1790;hpb=b067981c0da0c1a4616ed175d0ce8ac5564cbdbf;p=builder.git diff --git a/source/target.h b/source/target.h deleted file mode 100644 index ccc616b..0000000 --- a/source/target.h +++ /dev/null @@ -1,127 +0,0 @@ -#ifndef TARGET_H_ -#define TARGET_H_ - -#include -#include -#include -#include -#include -#include - -class Builder; -class Component; -class SourcePackage; -class Task; -class Tool; - -/** -Targets make up the build graph. This class is a base for all target types and -handles many common tasks. See also FileTarget and VirtualTarget. -*/ -class Target -{ -public: - typedef std::list Dependencies; - -protected: - enum State - { - INIT, - PREPARING, - REBUILD, - BUILDING, - UPTODATE - }; - -public: - sigc::signal signal_bubble_rebuild; - -protected: - Builder &builder; - const SourcePackage *package; - const Component *component; - std::string name; - - const Tool *tool; - State state; - std::string rebuild_reason; - - Dependencies depends; - - Target(Builder &, const std::string &); -public: - virtual ~Target() { } - - virtual const char *get_type() const = 0; - const std::string &get_name() const { return name; } - const SourcePackage *get_package() const { return package; } - const Component *get_component() const { return component; } - - /** 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 &); - -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() { } - -public: - /// Returns the dependencies of the target, in the order they were added. - const Dependencies &get_depends() const { return depends; } - - /** 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), - returns 0. */ - virtual Target *get_buildable_target(); - - /** If this target is a proxy for another (such as InstalledFile), return - that target. Otherwise, return the target itself. Implementors should call - the function recursively to find the final target. */ - virtual Target *get_real_target() { return this; } - - void set_tool(const Tool &); - - /** Returns the tool used to build the target. To actually build it, call - the build() function. */ - const Tool *get_tool() const { return tool; } - - /** Indicates if it's possible to build this target. */ - bool is_buildable() const { return tool!=0; } - - /** Indicates if this target needs rebuilding. Only makes sense after the - target has been prepared. */ - bool needs_rebuild() const { return state>PREPARING && state