class Builder;
class Component;
-class Package;
+class SourcePackage;
class Task;
class Tool;
-class Target;
-
/**
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.
protected:
Builder &builder;
- const Package *package;
+ const SourcePackage *package;
const Component *component;
std::string name;
const Tool *tool;
State state;
std::string rebuild_reason;
- std::string install_location;
+ Msp::FS::Path install_location;
Dependencies depends;
virtual const char *get_type() const = 0;
const std::string &get_name() const { return name; }
- const Package *get_package() const { return package; }
+ const SourcePackage *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
void set_tool(const Tool &);
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<UPTODATE; }
+
+ /** Returns the reason for rebuilding this target. Only makes sense after
+ the target has been prepared. */
const std::string &get_rebuild_reason() const { return rebuild_reason; }
+
+ /** Forces rebuild of the target. */
+ void force_rebuild();
+
bool is_installable() const { return !install_location.empty(); }
- const std::string &get_install_location() const { return install_location; }
+ const Msp::FS::Path &get_install_location() const { return install_location; }
void add_depend(Target *);
const Dependencies &get_depends() const { return depends; }