]> git.tdb.fi Git - builder.git/blobdiff - source/package.h
Builder can build itself now.
[builder.git] / source / package.h
index 42c453ad2e0e99200c905dfdd05f62327b22ac54..aafec0fc54cd2c58d0b63ef2f4758ab647f8ccdf 100644 (file)
@@ -6,6 +6,7 @@
 #include <msp/parser/loader.h>
 #include "buildinfo.h"
 #include "component.h"
+#include "config.h"
 
 class Builder;
 class Package;
@@ -14,7 +15,9 @@ class PackageRef
 {
 public:
        PackageRef(Builder &, const std::string &);
-       Package *get_package();
+       const std::string &get_name() const { return name; }
+       Package *get_package() const { return package; }
+       Package *resolve();
 private:
        Builder     &builder;
        std::string name;
@@ -39,15 +42,29 @@ public:
        };
 
        Package(Builder &, const std::string &, const Msp::Path::Path &);
-       Package(Builder &, const std::string &, const std::list<std::string> &);
-       const std::string   &get_name() const { return name; }
-       const Msp::Path::Path &get_source() const { return source; }
+       Package(Builder &, const std::string &, const std::vector<std::string> &);
+       const std::string   &get_name() const       { return name; }
+       const Msp::Path::Path &get_source() const   { return source; }
        const ComponentList &get_components() const { return components; }
-       bool                get_buildable() const { return buildable; }
-       void resolve_refs();
+       bool                get_buildable() const   { return buildable; }
+       const Config        &get_config() const     { return config; }
+       const std::list<PackageRef> &get_requires() const { return requires; }
+       const BuildInfo     &get_build_info() const { return build_info; }
+       const BuildInfo     &get_exported_binfo() const { return export_binfo; }
+       void                resolve_refs();
+       void                create_build_info();
+       void                process_options(const RawOptionMap &);
 
        static Package *create(Builder &, const std::string &);
 private:
+       enum InstallFlags
+       {
+               INCLUDE=1,
+               BIN=2,
+               LIB=4,
+               DATA=8
+       };
+       
        Builder       &builder;
        std::string   name;
        std::string   version;
@@ -58,6 +75,11 @@ private:
        Msp::Path::Path source;
        bool          buildable;
        ComponentList components;
+       Config        config;
+       bool          build_info_ready;
+
+       void init_buildable();
+       unsigned get_install_flags();
 };
 
 #endif