X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpkgconfiggenerator.cpp;h=a6178a7328c5e66fa5ad22df0bc0686013e0367b;hb=d1eb133ab529cdae131be7b150209f03189248f3;hp=e9320448b3508a201676eb783ddf2b8d73b87cd2;hpb=7c2db9e2b91da953701be233336c5bfa1f3c4af0;p=builder.git diff --git a/source/pkgconfiggenerator.cpp b/source/pkgconfiggenerator.cpp index e932044..a6178a7 100644 --- a/source/pkgconfiggenerator.cpp +++ b/source/pkgconfiggenerator.cpp @@ -2,18 +2,14 @@ #include #include #include "builder.h" +#include "internaltask.h" #include "pkgconfigfile.h" #include "pkgconfiggenerator.h" using namespace std; using namespace Msp; -PkgConfigGenerator::PkgConfigGenerator(Builder &b): - Tool(b, "PCG") -{ -} - -Target *PkgConfigGenerator::create_target(const list &, const string &) +Target *PkgConfigGenerator::create_target(const vector &, const string &) { throw logic_error("Not implemented"); } @@ -21,21 +17,15 @@ Target *PkgConfigGenerator::create_target(const list &, const string & Task *PkgConfigGenerator::run(const Target &target) const { const PkgConfigFile &pkgc = dynamic_cast(target); - Worker *worker = new Worker(pkgc); - return new InternalTask(worker); + return new InternalTask([&pkgc]{ return _run(pkgc); }); } - -PkgConfigGenerator::Worker::Worker(const PkgConfigFile &t): - target(t) -{ } - -void PkgConfigGenerator::Worker::main() +bool PkgConfigGenerator::_run(const PkgConfigFile &pkgc) { - Builder &builder = target.get_package()->get_builder(); - const SourcePackage &spkg = *target.get_package(); + Builder &builder = pkgc.get_package()->get_builder(); + const SourcePackage &spkg = *pkgc.get_package(); - IO::BufferedFile out(target.get_path().str(), IO::M_WRITE); + IO::BufferedFile out(pkgc.get_path().str(), IO::M_WRITE); IO::print(out, "prefix=%s\n", builder.get_prefix().str()); IO::print(out, "source=%s\n\n", spkg.get_source_directory()); @@ -69,10 +59,10 @@ void PkgConfigGenerator::Worker::main() IO::print(out, " -D%s=%s", kvp.first, kvp.second); out.put('\n'); - status = Task::SUCCESS; + return true; } -string PkgConfigGenerator::Worker::prefixify(const FS::Path &path, const FS::Path &prefix) +string PkgConfigGenerator::prefixify(const FS::Path &path, const FS::Path &prefix) { if(FS::descendant_depth(path, prefix)>=0) {