#include <msp/io/file.h>
#include <msp/io/print.h>
#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 vector<Target *> &, const string &)
{
throw logic_error("Not implemented");
Task *PkgConfigGenerator::run(const Target &target) const
{
const PkgConfigFile &pkgc = dynamic_cast<const PkgConfigFile &>(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());
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)
{