]> git.tdb.fi Git - builder.git/blobdiff - source/package.h
Comments and member ordering
[builder.git] / source / package.h
index e63fd77ff09fd26d50ba670e1c33a129a0ff12ab..5c80779aa67d94aeb60ee0d8383ef993afd1bc22 100644 (file)
@@ -3,8 +3,9 @@
 
 #include <list>
 #include <string>
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 #include "buildinfo.h"
+#include "config.h"
 
 class Builder;
 class Package;
@@ -19,14 +20,11 @@ packages and the builderrc file for binary packages with no pkg-config support.
 class Package
 {
 public:
-       class Loader: public Msp::DataFile::Loader
+       class Loader: public Msp::DataFile::ObjectLoader<Package>
        {
        public:
                Loader(Package &);
-               Package &get_object() { return pkg; }
-       protected:
-               Package &pkg;
-
+       private:
                void require(const std::string &);
        };
 
@@ -37,7 +35,7 @@ protected:
 
        PackageList requires;
        BuildInfo export_binfo;
-       bool conf_done;
+       bool prepared;
 
        bool use_pkgconfig;
 
@@ -47,21 +45,25 @@ public:
 
        const std::string &get_name() const { return name; }
        Builder &get_builder() const { return builder; }
-       const PackageList &get_requires() const { return requires; }
+       const PackageList &get_required_packages() const { return requires; }
 
-       const BuildInfo &get_exported_binfo() const { return export_binfo; }
+       const BuildInfo &get_exported_build_info() const { return export_binfo; }
 
        /// Indicates whether or not this package supports pkg-config
        bool get_use_pkgconfig() const { return use_pkgconfig; }
 
-       /** Processes configuration options that were most likely obtained from the
-       command line. */
-       void configure(const StringMap &, unsigned);
+       /** Prepares the package for building.  Recursively prepares all required
+       packages, populates build info and creates targets. */
+       void prepare();
 
-       bool is_configured() const { return conf_done; }
+       bool is_prepared() const { return prepared; }
 protected:
-       virtual void do_configure(const StringMap &, unsigned) { }
        virtual void create_build_info() { }
+
+       virtual void create_targets() { }
+
+public:
+       virtual void save_caches() { }
 };
 
 #endif