]> git.tdb.fi Git - builder.git/blobdiff - source/lib/component.h
Rearrange generated source paths
[builder.git] / source / lib / component.h
index 7ddd97297f267b96e865b82c5ef3f24b1390aa18..2901f1b1fc53f3ba2c0e6deddbcca98f8143637b 100644 (file)
@@ -7,6 +7,7 @@
 #include "buildinfo.h"
 #include "conditionalloader.h"
 #include "installmap.h"
+#include "libbuilder_api.h"
 #include "package.h"
 
 class SourcePackage;
@@ -17,10 +18,10 @@ may also build none), as well as install a bunch of headers.  Components inherit
 dependencies and build info from the package they belong to, and may also add
 their own.
 */
-class Component
+class LIBBUILDER_API Component
 {
 public:
-       class Loader: public Msp::DataFile::ObjectLoader<Component>, public ConditionalLoader
+       class LIBBUILDER_API Loader: public Msp::DataFile::ObjectLoader<Component>, public ConditionalLoader
        {
        public:
                Loader(Component &);
@@ -36,12 +37,14 @@ protected:
        SourcePackage &package;
        std::string name;
        std::vector<Msp::FS::Path> sources;
+       Msp::FS::Path source_base_path;
        std::vector<std::string> overlays;
        bool install = false;
        BuildInfo build_info;
-       Package::Requirements requires;
+       Package::Requirements required_pkgs;
        bool deflt = true;
        InstallMap install_map;
+       bool broken = false;
        std::vector<std::string> problems;
 
        Component(SourcePackage &p, const std::string &n): package(p), name(n) { }
@@ -64,13 +67,17 @@ protected:
 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 Package::Requirements &get_required_packages() const { return required_pkgs; }
        bool is_default() const { return deflt; }
+       bool is_broken() const { return broken; }
        const std::vector<std::string> &get_problems() const { return problems; }
 
        /** Prepares any required packages. */
        void prepare();
 
+       Msp::FS::Path get_temp_directory() const;
+       std::string flatten_source_path(const Msp::FS::Path &) const;
+
        /** Prepares the build information for building.  Pulls build info from the
        parent and dependency packages, and adds any component-specific flags. */
        virtual void create_build_info();