]> git.tdb.fi Git - builder.git/blobdiff - source/component.h
Add a feature for overlay source directories
[builder.git] / source / component.h
index e68bc38f612acc2d0476792f271b831477671ed8..3a743d0c41987324ab7da79818cab037059984e4 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,21 +39,25 @@ 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;
 
@@ -64,6 +72,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,6 +82,7 @@ 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; }
 
        /** Prepares any required packages. */
@@ -83,6 +94,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;
 };