X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fapkbuilder.cpp;h=e487784f4eeebf2df37d974a01432fb70e00d85a;hb=1ed833343bc83b83c5f61cbfd74423bbba677a04;hp=2568f33e081bce17a8852300ca09bf75da758e4f;hpb=7c2db9e2b91da953701be233336c5bfa1f3c4af0;p=builder.git diff --git a/source/apkbuilder.cpp b/source/apkbuilder.cpp index 2568f33..e487784 100644 --- a/source/apkbuilder.cpp +++ b/source/apkbuilder.cpp @@ -15,16 +15,17 @@ using namespace Msp; // TODO Separate jar into its own tool and have this one just chain the two ApkBuilder::ApkBuilder(Builder &b): - Tool(b, "APK"), - jarsigner(0) + Tool(b, "APK") { set_command("jar"); + set_run(_run); } -Target *ApkBuilder::create_target(const list &sources, const string &) +Target *ApkBuilder::create_target(const vector &sources, const string &) { AndroidResourceBundle *resource_bundle = 0; - list other_files; + vector other_files; + other_files.reserve(sources.size()); for(Target *s: sources) { if(AndroidResourceBundle *r = dynamic_cast(s)) @@ -43,16 +44,17 @@ void ApkBuilder::do_prepare() jarsigner->prepare(); } -Task *ApkBuilder::run(const Target &tgt) const +Task *ApkBuilder::_run(const AndroidPackageFile &apk) { - const AndroidPackageFile &apk = dynamic_cast(tgt); + const ApkBuilder &tool = dynamic_cast(*apk.get_tool()); ExternalTask::Arguments argv; - argv.push_back(executable->get_path().str()); + argv.push_back(tool.get_executable()->get_path().str()); argv.push_back("u"); FS::Path input_path; - list files; + vector files; + files.reserve(apk.get_dependencies().size()); for(Target *d: apk.get_dependencies()) { FileTarget *file = dynamic_cast(d); @@ -73,6 +75,6 @@ Task *ApkBuilder::run(const Target &tgt) const task->set_stdin(FS::basename(input_path)); task->set_stdout(FS::relative(apk.get_path(), work_dir)); ChainedTask *chain = new ChainedTask(task); - chain->add_task(jarsigner->run(tgt)); + chain->add_task(tool.jarsigner->run(apk)); return chain; }