]> git.tdb.fi Git - builder.git/blobdiff - source/component.cpp
Add comments
[builder.git] / source / component.cpp
index a94a5663563d677e5a14f9fde795599ff48de93d..97fdacd66ac8f221871052be29e1727ba424b337 100644 (file)
@@ -6,12 +6,34 @@ using namespace std;
 Component::Component(Package &p, Type t, const string &n):
        pkg(p),
        type(t),
-       name(n)
+       name(n),
+       install(false)
 { }
 
+/**
+Tries to resolve all references to packages.
+*/
+void Component::resolve_refs()
+{
+       for(PkgRefList::iterator i=requires.begin(); i!=requires.end(); ++i)
+               i->resolve();
+}
+
+/**
+Prepares the build information for building.
+*/
 void Component::create_build_info()
 {
-       build_info=pkg.get_build_info();
+       build_info.add(pkg.get_build_info());
+
+       for(PkgRefList::iterator i=requires.begin(); i!=requires.end(); ++i)
+       {
+               if(!i->get_package())
+                       continue;
+               i->get_package()->create_build_info();
+               build_info.add(i->get_package()->get_exported_binfo());
+       }
+
        build_info.unique();
 }
 
@@ -21,9 +43,21 @@ Component::Loader::Loader(Component &c):
        add("source",          &Loader::source);
        add("install",         &Component::install);
        add("install_headers", &Component::install_headers);
+       add("build_info",      &Loader::build_info);
+       add("require",         &Loader::require);
 }
 
 void Component::Loader::source(const string &s)
 {
-       comp.source=comp.pkg.get_source()/s;
+       comp.sources.push_back(comp.pkg.get_source()/s);
+}
+
+void Component::Loader::require(const string &n)
+{
+       comp.requires.push_back(PackageRef(comp.pkg.get_builder(), n));
+}
+
+void Component::Loader::build_info()
+{
+       load_sub(comp.build_info);
 }