]> git.tdb.fi Git - builder.git/blob - source/sourcepackage.h
Style update: add spaces around assignment operators
[builder.git] / source / sourcepackage.h
1 /* $Id$
2
3 This file is part of builder
4 Copyright © 2007-2009  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #ifndef SOURCEPACKAGE_H_
9 #define SOURCEPACKAGE_H_
10
11 #include <string>
12 #include "buildinfo.h"
13 #include "component.h"
14 #include "condition.h"
15 #include "config.h"
16 #include "dependencycache.h"
17 #include "feature.h"
18 #include "package.h"
19
20 class Builder;
21
22 /**
23 A package that can be built by Builder.
24 */
25 class SourcePackage: public Package
26 {
27 public:
28         enum InstallFlags
29         {
30                 INCLUDE = 1,
31                 BIN = 2,
32                 LIB = 4,
33                 DATA = 8
34         };
35
36         class Loader: public Package::Loader
37         {
38         public:
39                 Loader(Package &);
40                 SourcePackage &get_object() { return static_cast<SourcePackage &>(pkg); }
41         private:
42                 virtual void finish();
43                 void feature(const std::string &, const std::string &);
44                 template<Component::Type>
45                 void component(const std::string &);
46                 void condition(const std::string &);
47                 void build_info();
48                 void tarball(const std::string &);
49                 void tar_file(const std::string &);
50         };
51
52 private:
53         std::string version;
54         std::string description;
55
56         Msp::FS::Path source;
57         PackageList base_reqs;
58         FeatureList features;
59         BuildInfo build_info;
60         ConditionList conditions;
61         ComponentList components;
62         Config config;
63         bool conf_done;
64         mutable DependencyCache deps_cache;
65
66 public:
67         SourcePackage(Builder &, const std::string &, const Msp::FS::Path &);
68         const std::string &get_name() const { return name; }
69         const std::string &get_version() const { return version; }
70         const std::string &get_description() const { return description; }
71         const Msp::FS::Path &get_source() const { return source; }
72         Msp::FS::Path get_temp_dir() const;
73         Msp::FS::Path get_out_dir() const;
74         const ComponentList &get_components() const { return components; }
75         const Config &get_config() const { return config; }
76         const BuildInfo &get_build_info() const { return build_info; }
77         const BuildInfo &get_exported_binfo() const { return export_binfo; }
78         Builder &get_builder() const { return builder; }
79
80         /** Returns a bitmask indicating which kinds of things the components of
81         this package install. */
82         unsigned get_install_flags();
83
84         LibMode get_library_mode() const;
85         DependencyCache &get_deps_cache() const { return deps_cache; }
86 private:
87         virtual void do_configure(const StringMap &, unsigned);
88
89         /** Initializes configuration options. */
90         void init_config();
91
92         /** Fills in build info based on configuration.  All required packages must be
93         configured when this is called. */
94         virtual void create_build_info();
95 };
96
97 #endif