X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsourcepackage.cpp;h=2c478a861d9023e9b423cd55a4079e40dfc8fe10;hb=1ed833343bc83b83c5f61cbfd74423bbba677a04;hp=4d680ba9bd234e5d16e62ea76adda82bf8a89c2e;hpb=690b9c5f340504517cf6ba8aad0c168dcdff4efa;p=builder.git diff --git a/source/sourcepackage.cpp b/source/sourcepackage.cpp index 4d680ba..2c478a8 100644 --- a/source/sourcepackage.cpp +++ b/source/sourcepackage.cpp @@ -27,7 +27,6 @@ using namespace Msp; 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) { @@ -167,23 +166,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 +179,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); @@ -207,7 +194,10 @@ void SourcePackage::Loader::finish() other components wil be created first */ 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) @@ -234,8 +224,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);