]> git.tdb.fi Git - builder.git/blob - source/component.cpp
6d02ad319e690a33be59823edbf4ddc35d85fcb3
[builder.git] / source / component.cpp
1 #include "component.h"
2 #include "package.h"
3
4 using namespace std;
5
6 Component::Component(Package &p, Type t, const string &n):
7         pkg(p),
8         type(t),
9         name(n),
10         install(false)
11 { }
12
13 void Component::resolve_refs()
14 {
15         for(PkgRefList::iterator i=requires.begin(); i!=requires.end(); ++i)
16                 i->resolve();
17 }
18
19 void Component::create_build_info()
20 {
21         build_info.add(pkg.get_build_info());
22
23         for(PkgRefList::iterator i=requires.begin(); i!=requires.end(); ++i)
24         {
25                 if(!i->get_package())
26                         continue;
27                 i->get_package()->create_build_info();
28                 build_info.add(i->get_package()->get_exported_binfo());
29         }
30
31         build_info.unique();
32 }
33
34 Component::Loader::Loader(Component &c):
35         comp(c)
36 {
37         add("source",          &Loader::source);
38         add("install",         &Component::install);
39         add("install_headers", &Component::install_headers);
40         add("build_info",      &Loader::build_info);
41         add("require",         &Loader::require);
42 }
43
44 void Component::Loader::source(const string &s)
45 {
46         comp.sources.push_back(comp.pkg.get_source()/s);
47 }
48
49 void Component::Loader::require(const string &n)
50 {
51         comp.requires.push_back(PackageRef(comp.pkg.get_builder(), n));
52 }
53
54 void Component::Loader::build_info()
55 {
56         load_sub(comp.build_info);
57 }