SourcePackage::SourcePackage(Builder &b, const string &n, const FS::Path &f):
Package(b, n),
source_dir(FS::dirname(f)),
- build_type(0),
config(*this),
cache(*this)
{
}
-SourcePackage::Loader::Loader(SourcePackage &p):
+SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions *o):
DataFile::DerivedObjectLoader<SourcePackage, Package::Loader>(p),
- FeatureConditional(p, p.name)
+ FeatureConditional(p, p.name),
+ options(o)
{
- init(0);
-}
-
-SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions &o):
- DataFile::DerivedObjectLoader<SourcePackage, Package::Loader>(p),
- FeatureConditional(p, p.name)
-{
- init(&o);
-}
-
-void SourcePackage::Loader::init(const Config::InputOptions *o)
-{
- options = o;
add("android_application", &Loader::component<AndroidApplicationComponent>);
add("build_info", &Loader::build_info);
add("datapack", &Loader::component<DataPackComponent>);
add("generate", &Loader::generate);
add("install", &Loader::component<InstallComponent>);
add("interface_version", &Loader::interface_version);
- add("library", &Loader::component_arg<BinaryComponent, BinaryComponent::Type, BinaryComponent::LIBRARY>);
- add("module", &Loader::component_arg<BinaryComponent, BinaryComponent::Type, BinaryComponent::MODULE>);
- add("program", &Loader::component_arg<BinaryComponent, BinaryComponent::Type, BinaryComponent::PROGRAM>);
+ add("library", &Loader::component_arg<BinaryComponent, BinaryComponent::Type>, BinaryComponent::LIBRARY);
+ add("module", &Loader::component_arg<BinaryComponent, BinaryComponent::Type>, BinaryComponent::MODULE);
+ add("program", &Loader::component_arg<BinaryComponent, BinaryComponent::Type>, BinaryComponent::PROGRAM);
add("source_archive", &Loader::source_archive);
add("source_tarball", &Loader::source_archive);
add("tarball", &Loader::tarball);
{
/* Make sure the source tarball is last in the list so targets from all
other components wil be created first */
- ComponentList::iterator i = find(obj.components.begin(), obj.components.end(), obj.source_archive);
+ auto i = find(obj.components, obj.source_archive);
if(i!=obj.components.end())
- obj.components.splice(obj.components.end(), obj.components, i);
+ {
+ obj.components.erase(i);
+ obj.components.push_back(obj.source_archive);
+ }
}
void SourcePackage::Loader::feature(const string &n, const string &d)
const Config::Option &opt = obj.config.add_option(feat);
if(options)
{
- Config::InputOptions::const_iterator i = options->find(opt.name);
+ auto i = options->find(opt.name);
if(i!=options->end())
obj.config.set_option(opt.name, i->second);
}
obj.components.push_back(comp);
}
-template<typename C, typename A, A a>
-void SourcePackage::Loader::component_arg(const string &n)
+template<typename C, typename A>
+void SourcePackage::Loader::component_arg(A a, const string &n)
{
C *comp = new C(obj, n, a);
load_sub(*comp);