class Package;
+/**
+Components specify things to be built. Each component may build one binary (it
+may also build none), as well as install a bunch of headers. Components inherit
+dependencies and build info from the package they belong to, and may also add
+their own.
+*/
class Component
{
public:
+ /// Loads a Component from file. Used from Package::Loader.
class Loader: public Msp::Parser::Loader
{
public:
void source(const std::string &);
void require(const std::string &);
+ void modular();
+ void host(const std::string &);
void build_info();
};
const BuildInfo &get_build_info() const { return build_info; }
bool get_install() const { return install; }
const std::string &get_install_headers() const { return install_headers; }
+ bool get_modular() const { return modular; }
+ const PkgRefList &get_requires() const { return requires; }
void resolve_refs();
void create_build_info();
protected:
PathList sources;
bool install;
std::string install_headers;
+ const Component *module_host;
+ bool modular;
BuildInfo build_info;
- std::list<PackageRef> requires;
+ PkgRefList requires;
};
typedef std::list<Component> ComponentList;