3 This file is part of builder
4 Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
8 #include <msp/strings/lexicalcast.h>
9 #include <msp/strings/utils.h>
20 Creates a buildable package.
22 Package::Package(Builder &b, const string &n):
30 Collects all directly and indirectly required packages, including the package
33 PackageList Package::collect_requires()
36 result.push_back(this);
37 for(PackageList::const_iterator i=requires.begin(); i!=requires.end(); ++i)
39 PackageList r=(*i)->collect_requires();
40 result.splice(result.end(), r);
50 Processes configuration options that were most likely obtained from the command
53 void Package::configure(const StringMap &opts, unsigned flag)
58 if(builder.get_verbose()>=3)
59 cout<<"Configuring "<<name<<'\n';
61 do_configure(opts, flag);
66 for(PackageList::iterator i=requires.begin(); i!=requires.end(); ++i)
67 (*i)->configure(opts, flag&2);
76 Package::Loader::Loader(Package &p):
79 add("require", &Loader::require);
82 void Package::Loader::require(const string &n)
84 Package *req=pkg.builder.get_package(n);
86 pkg.requires.push_back(req);