X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcompilecommandsgenerator.cpp;h=bbd4e980742c70c96621d234ff7eeda0845a1c0c;hb=1ed833343bc83b83c5f61cbfd74423bbba677a04;hp=07ee15e779245f1f9f901ad063b317c20a9be005;hpb=8222bc867676a07f17b5d0d2ea9bff608151134b;p=builder.git diff --git a/source/compilecommandsgenerator.cpp b/source/compilecommandsgenerator.cpp index 07ee15e..bbd4e98 100644 --- a/source/compilecommandsgenerator.cpp +++ b/source/compilecommandsgenerator.cpp @@ -4,6 +4,7 @@ #include "builder.h" #include "compilecommandsgenerator.h" #include "compilecommandsjson.h" +#include "internaltask.h" #include "objectfile.h" #include "sourcefile.h" @@ -12,42 +13,31 @@ using namespace Msp; CompileCommandsGenerator::CompileCommandsGenerator(Builder &b): Tool(b, "CCJG") -{ } - -Target *CompileCommandsGenerator::create_target(const list &, const string &) { - throw logic_error("Not implemented"); + set_run_internal(_run); } -Task *CompileCommandsGenerator::run(const Target &target) const +Target *CompileCommandsGenerator::create_target(const vector &, const string &) { - const CompileCommandsJson &cmds = dynamic_cast(target); - Worker *worker = new Worker(cmds); - return new InternalTask(worker); + throw logic_error("Not implemented"); } - -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; - const BuildGraph::TargetMap &targets = builder.get_build_graph().get_targets(); - for(BuildGraph::TargetMap::const_iterator i=targets.begin(); i!=targets.end(); ++i) - if(i->second->is_buildable() && i->second->get_package()==&spkg) - if(ObjectFile *obj = dynamic_cast(i->second)) + for(const auto &kvp: builder.get_build_graph().get_targets()) + if(kvp.second->is_buildable() && kvp.second->get_package()==&spkg) + if(ObjectFile *obj = dynamic_cast(kvp.second)) { FS::Path src_path = obj->get_source().get_path(); - Task *task = i->second->build(); + Task *task = kvp.second->build(); if(!first) out.put(','); IO::print(out, "\n\t{\n"); @@ -61,5 +51,5 @@ void CompileCommandsGenerator::Worker::main() IO::print(out, "\n]\n"); - status = Task::SUCCESS; + return true; }