X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fandroidapplicationcomponent.cpp;h=e4feaa2c2c29195560ab20d2acd7169246bbaf0e;hb=c8c51fac9453a677fc3e6932c4730f35e237af89;hp=99f14408d8e05ebe6d6c50e9348c3a956433a5c8;hpb=e3ba0e44173bd373d1111fc6d87fc4e61faebf9f;p=builder.git diff --git a/source/androidapplicationcomponent.cpp b/source/androidapplicationcomponent.cpp index 99f1440..e4feaa2 100644 --- a/source/androidapplicationcomponent.cpp +++ b/source/androidapplicationcomponent.cpp @@ -1,4 +1,6 @@ +#include #include +#include #include "androidapplicationcomponent.h" #include "androidmanifestfile.h" #include "androidresourcefile.h" @@ -12,47 +14,42 @@ using namespace std; using namespace Msp; -AndroidApplicationComponent::AndroidApplicationComponent(SourcePackage &p, const string &n): - Component(p, n) -{ } - void AndroidApplicationComponent::create_targets() const { Builder &builder = package.get_builder(); BuildGraph &build_graph = builder.get_build_graph(); - const BuildGraph::TargetMap &targets = build_graph.get_targets(); - list contents; - for(BuildGraph::TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i) - if(i->second->get_package()==&package) - if(InstalledFile *inst = dynamic_cast(i->second)) + vector contents; + for(const auto &kvp: build_graph.get_targets()) + if(kvp.second->get_package()==&package) + if(InstalledFile *inst = dynamic_cast(kvp.second)) contents.push_back(inst->get_real_target()); AndroidManifestFile *manifest = new AndroidManifestFile(builder, *this); manifest->set_orientation(orientation); - for(set::const_iterator i=permissions.begin(); i!=permissions.end(); ++i) - manifest->add_permission(*i); + for(const string &p: permissions) + manifest->add_permission(p); - list resource_sources; + vector resource_sources; resource_sources.push_back(manifest); const Toolchain &toolchain = builder.get_toolchain(); Tool © = toolchain.get_tool("CP"); - SourceList source_filenames = collect_source_files(); - for(SourceList::const_iterator i=source_filenames.begin(); i!=source_filenames.end(); ++i) + for(const FS::Path &s: collect_source_files()) { - Target *tgt = new AndroidResourceFile(builder, *this, *i); + Target *tgt = new AndroidResourceFile(builder, *this, s); resource_sources.push_back(copy.create_target(*tgt, "//")); } Tool &aapt = toolchain.get_tool("AAPT"); Target *resource_bundle = aapt.create_target(resource_sources); - list apk_sources; + vector apk_sources; + apk_sources.reserve(1+contents.size()); apk_sources.push_back(resource_bundle); const Architecture &arch = package.get_builder().get_current_arch(); - string lib_dir = "//"+name+"/lib/"; + string lib_dir = format("//%s/lib/", name); if(arch.get_type()=="arm") { lib_dir += "armeabi"; @@ -62,17 +59,17 @@ void AndroidApplicationComponent::create_targets() const else lib_dir += arch.get_type(); - string assets_dir = "//"+name+"/assets"; - for(list::const_iterator i=contents.begin(); i!=contents.end(); ++i) + string assets_dir = format("//%s/assets", name); + for(Target *t: contents) { Target *staged = 0; - if(SharedLibrary *shlib = dynamic_cast(*i)) + if(SharedLibrary *shlib = dynamic_cast(t)) { manifest->set_native_library(shlib); - staged = copy.create_target(**i, lib_dir); + staged = copy.create_target(*t, lib_dir); } else - staged = copy.create_target(**i, assets_dir); + staged = copy.create_target(*t, assets_dir); apk_sources.push_back(staged); } @@ -91,5 +88,6 @@ AndroidApplicationComponent::Loader::Loader(AndroidApplicationComponent &c): void AndroidApplicationComponent::Loader::permission(const string &perm) { - obj.permissions.insert(perm); + if(!any_equals(obj.permissions, perm)) + obj.permissions.push_back(perm); }