X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcompilecommandsgenerator.cpp;h=855a80a3307db63e3e4f24222e8c092c1ba33f00;hb=d1eb133ab529cdae131be7b150209f03189248f3;hp=82221e7a1c3d37950bd3d70dc7d6973ddcf933dc;hpb=aa053d637e8259755af7d2e4b510a242f4d29c7b;p=builder.git diff --git a/source/compilecommandsgenerator.cpp b/source/compilecommandsgenerator.cpp index 82221e7..855a80a 100644 --- a/source/compilecommandsgenerator.cpp +++ b/source/compilecommandsgenerator.cpp @@ -4,16 +4,13 @@ #include "builder.h" #include "compilecommandsgenerator.h" #include "compilecommandsjson.h" +#include "internaltask.h" #include "objectfile.h" #include "sourcefile.h" using namespace std; using namespace Msp; -CompileCommandsGenerator::CompileCommandsGenerator(Builder &b): - Tool(b, "CCJG") -{ } - Target *CompileCommandsGenerator::create_target(const vector &, const string &) { throw logic_error("Not implemented"); @@ -22,22 +19,16 @@ Target *CompileCommandsGenerator::create_target(const vector &, const Task *CompileCommandsGenerator::run(const Target &target) const { const CompileCommandsJson &cmds = dynamic_cast(target); - Worker *worker = new Worker(cmds); - return new InternalTask(worker); + return new InternalTask([&cmds]{ return _run(cmds); }); } - -CompileCommandsGenerator::Worker::Worker(const CompileCommandsJson &t): - target(t) -{ } - -void CompileCommandsGenerator::Worker::main() +bool CompileCommandsGenerator::_run(const CompileCommandsJson &cmds) { - Builder &builder = target.get_package()->get_builder(); - const SourcePackage &spkg = *target.get_package(); + Builder &builder = cmds.get_package()->get_builder(); + const SourcePackage &spkg = *cmds.get_package(); string work_dir = c_escape(spkg.get_source_directory().str()); - IO::BufferedFile out(target.get_path().str(), IO::M_WRITE); + IO::BufferedFile out(cmds.get_path().str(), IO::M_WRITE); IO::print(out, "["); bool first = true; @@ -60,5 +51,5 @@ void CompileCommandsGenerator::Worker::main() IO::print(out, "\n]\n"); - status = Task::SUCCESS; + return true; }