#include <msp/time/timestamp.h>
class Builder;
+class Component;
class Package;
class Task;
class Tool;
typedef std::list<Target *> Dependencies;
protected:
+ enum State
+ {
+ INIT,
+ PREPARING,
+ REBUILD,
+ BUILDING,
+ UPTODATE
+ };
+
Builder &builder;
const Package *package;
+ const Component *component;
std::string name;
const Tool *tool;
- bool building;
- bool rebuild;
+ State state;
std::string rebuild_reason;
std::string install_location;
Dependencies depends;
- bool deps_ready;
-
- bool preparing;
- bool prepared;
- Target(Builder &, const Package *, const std::string &);
+ Target(Builder &, const std::string &);
public:
virtual ~Target() { }
virtual const char *get_type() const = 0;
const std::string &get_name() const { return name; }
const Package *get_package() const { return package; }
+ const Component *get_component() const { return component; }
/**
Tries to locate a target that will help getting this target built. If all
const Tool *get_tool() const { return tool; }
bool is_buildable() const { return tool!=0; }
- bool get_rebuild() const { return rebuild; }
+ bool needs_rebuild() const { return state>PREPARING && state<UPTODATE; }
const std::string &get_rebuild_reason() const { return rebuild_reason; }
bool is_installable() const { return !install_location.empty(); }
const std::string &get_install_location() const { return install_location; }
void add_depend(Target *);
const Dependencies &get_depends() const { return depends; }
- bool get_depends_ready() const { return deps_ready; }
- /**
- Finds dependencies for the target. When all dependencies have been found,
- the function should set deps_ready to true.
- */
- virtual void find_depends() { deps_ready = true; }
+ /** Finds dependencies for the target. */
+ virtual void find_depends() { }
/**
Prepares the target by recursively preparing dependencies, then checking