]> git.tdb.fi Git - builder.git/blobdiff - source/component.h
Add options for custom compiler and debug build to bootstrap.sh
[builder.git] / source / component.h
index e68bc38f612acc2d0476792f271b831477671ed8..7cbd1e13cbe1f0099522161e4e2eb74c708fcad3 100644 (file)
@@ -24,10 +24,14 @@ public:
        public:
                Loader(Component &);
        private:
-               void source(const std::string &);
-               void require(const std::string &);
                void build_info();
+               void if_arch(const std::string &);
+               void if_feature(const std::string &);
                void install_map();
+               void overlay(const std::string &);
+               void require(const std::string &);
+               void source(const std::string &);
+               void use(const std::string &);
        };
 
        enum Type
@@ -35,23 +39,28 @@ public:
                LIBRARY,
                PROGRAM,
                MODULE,
-               DATAFILE,
+               DATAPACK,
                INSTALL,
                TARBALL
        };
 
        typedef std::list<Msp::FS::Path> SourceList;
+       typedef std::list<std::string> OverlayList;
+       typedef std::list<const Component *> UseList;
 
 protected:
        SourcePackage &package;
        Type type;
        std::string name;
        SourceList sources;
+       OverlayList overlays;
        bool install;
        BuildInfo build_info;
        Package::Requirements requires;
+       UseList uses;
        bool deflt;
        InstallMap install_map;
+       std::list<std::string> problems;
 
 public:
        Component(SourcePackage &, Type, const std::string &);
@@ -64,6 +73,8 @@ public:
        directories or individual files. */
        const SourceList &get_sources() const { return sources; }
 
+       const OverlayList &get_overlays() const { return overlays; }
+
 protected:
        /** Returns a list of all source files for the component. */
        SourceList collect_source_files() const;
@@ -72,7 +83,9 @@ public:
        bool get_install() const { return install; }
        const InstallMap &get_install_map() const { return install_map; }
        const Package::Requirements &get_required_packages() const { return requires; }
+       const UseList &get_used_components() const { return uses; }
        bool is_default() const { return deflt; }
+       const std::list<std::string> &get_problems() const { return problems; }
 
        /** Prepares any required packages. */
        void prepare();
@@ -83,6 +96,8 @@ public:
 
        const BuildInfo &get_build_info() const { return build_info; }
 
+       BuildInfo get_build_info_for_path(const Msp::FS::Path &) const;
+
        void create_targets() const;
 };