X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fandroidassetpackagingtool.cpp;h=af8bc95ea422187112d5dce75927d8567803d309;hb=fefa7d1e8ac40136b690e305ce9594af95c678b8;hp=0ef99a7dca4ea9d150203b0205aaab8a7f18f356;hpb=7c2db9e2b91da953701be233336c5bfa1f3c4af0;p=builder.git diff --git a/source/androidassetpackagingtool.cpp b/source/androidassetpackagingtool.cpp index 0ef99a7..af8bc95 100644 --- a/source/androidassetpackagingtool.cpp +++ b/source/androidassetpackagingtool.cpp @@ -1,3 +1,4 @@ +#include #include #include "androidassetpackagingtool.h" #include "androidmanifestfile.h" @@ -25,10 +26,11 @@ AndroidAssetPackagingTool::AndroidAssetPackagingTool(Builder &b, const AndroidSd problems.push_back("Android platform not found"); } -Target *AndroidAssetPackagingTool::create_target(const list &sources, const string &) +Target *AndroidAssetPackagingTool::create_target(const vector &sources, const string &) { AndroidManifestFile *manifest = 0; - list resources; + vector resources; + resources.reserve(sources.size()); for(Target *s: sources) { if(AndroidManifestFile *m = dynamic_cast(s)) @@ -61,7 +63,8 @@ Task *AndroidAssetPackagingTool::run(const Target &tgt) const argv.push_back("-F"); argv.push_back(FS::relative(res.get_path(), work_dir).str()); - list resource_dirs; + vector resource_dirs; + resource_dirs.reserve(res.get_dependencies().size()); for(Target *d: res.get_dependencies()) { FileTarget *file = dynamic_cast(d); @@ -75,17 +78,17 @@ Task *AndroidAssetPackagingTool::run(const Target &tgt) const else if(real->get_package()==res.get_package()) { const FS::Path &path = file->get_path(); - resource_dirs.push_back(path.subpath(0, path.size()-2)); + FS::Path res_dir = path.subpath(0, path.size()-2); + if(!any_equals(resource_dirs, res_dir)) + resource_dirs.push_back(res_dir); } } - set seen_dirs; for(const FS::Path &d: resource_dirs) - if(seen_dirs.insert(d.str()).second) - { - argv.push_back("-S"); - argv.push_back(FS::relative(d, work_dir).str()); - } + { + argv.push_back("-S"); + argv.push_back(FS::relative(d, work_dir).str()); + } return new ExternalTask(argv, work_dir); }