X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsourcepackage.cpp;h=40b098ca10931b4bf31651f80b7dcbb64beded83;hb=aa053d637e8259755af7d2e4b510a242f4d29c7b;hp=8c535e72192d8dd8dae16b5989f70b3faa4367f6;hpb=b45cfe5e437ca79bb3176618769628c58c0734d1;p=builder.git diff --git a/source/sourcepackage.cpp b/source/sourcepackage.cpp index 8c535e7..40b098c 100644 --- a/source/sourcepackage.cpp +++ b/source/sourcepackage.cpp @@ -167,23 +167,11 @@ void SourcePackage::save_caches() } -SourcePackage::Loader::Loader(SourcePackage &p): +SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions *o): DataFile::DerivedObjectLoader(p), - FeatureConditional(p, p.name) + FeatureConditional(p, p.name), + options(o) { - init(0); -} - -SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions &o): - DataFile::DerivedObjectLoader(p), - FeatureConditional(p, p.name) -{ - init(&o); -} - -void SourcePackage::Loader::init(const Config::InputOptions *o) -{ - options = o; add("android_application", &Loader::component); add("build_info", &Loader::build_info); add("datapack", &Loader::component); @@ -192,9 +180,9 @@ void SourcePackage::Loader::init(const Config::InputOptions *o) add("generate", &Loader::generate); add("install", &Loader::component); add("interface_version", &Loader::interface_version); - add("library", &Loader::component_arg); - add("module", &Loader::component_arg); - add("program", &Loader::component_arg); + add("library", &Loader::component_arg, BinaryComponent::LIBRARY); + add("module", &Loader::component_arg, BinaryComponent::MODULE); + add("program", &Loader::component_arg, BinaryComponent::PROGRAM); add("source_archive", &Loader::source_archive); add("source_tarball", &Loader::source_archive); add("tarball", &Loader::tarball); @@ -205,9 +193,12 @@ void SourcePackage::Loader::finish() { /* 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, 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) @@ -220,7 +211,7 @@ 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); } @@ -234,8 +225,8 @@ void SourcePackage::Loader::component(const string &n) obj.components.push_back(comp); } -template -void SourcePackage::Loader::component_arg(const string &n) +template +void SourcePackage::Loader::component_arg(A a, const string &n) { C *comp = new C(obj, n, a); load_sub(*comp);