]> git.tdb.fi Git - builder.git/blob - source/package.cpp
Replace per-file copyright notices with a single file
[builder.git] / source / package.cpp
1 #include <msp/io/print.h>
2 #include <msp/strings/lexicalcast.h>
3 #include <msp/strings/utils.h>
4 #include "builder.h"
5 #include "misc.h"
6 #include "package.h"
7
8 using namespace std;
9 using namespace Msp;
10
11 Package::Package(Builder &b, const string &n):
12         builder(b),
13         name(n),
14         conf_done(false),
15         use_pkgconfig(true)
16 { }
17
18 void Package::configure(const StringMap &opts, unsigned flag)
19 {
20         if(conf_done)
21                 return;
22
23         if(builder.get_verbose()>=3)
24                 IO::print("Configuring %s\n", name);
25
26         do_configure(opts, flag);
27
28         requires.sort();
29         requires.unique();
30
31         for(PackageList::iterator i=requires.begin(); i!=requires.end(); ++i)
32                 (*i)->configure(opts, flag&2);
33
34         create_build_info();
35
36         conf_done = true;
37 }
38
39
40 Package::Loader::Loader(Package &p):
41         pkg(p)
42 {
43         add("require", &Loader::require);
44 }
45
46 void Package::Loader::require(const string &n)
47 {
48         Package *req = pkg.builder.get_package(n);
49         if(req)
50                 pkg.requires.push_back(req);
51 }