X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsourcegenerator.cpp;h=72297fd5eed411b19528681a6743492e16ca5e4a;hb=1ed833343bc83b83c5f61cbfd74423bbba677a04;hp=cfb01af22da70bb1a9256c481229cc2118ec1239;hpb=2a23a19ff6717b32ddc45f84681c5c969c967e45;p=builder.git diff --git a/source/sourcegenerator.cpp b/source/sourcegenerator.cpp index cfb01af..72297fd 100644 --- a/source/sourcegenerator.cpp +++ b/source/sourcegenerator.cpp @@ -13,7 +13,9 @@ using namespace Msp; SourceGenerator::SourceGenerator(Builder &b, const SourcePackage &p, const string &t): Tool(b, t), package(p) -{ } +{ + set_run(&_run); +} Target *SourceGenerator::create_source(const Component &comp, const FS::Path &path) const { @@ -69,21 +71,21 @@ Target *SourceGenerator::create_target(const vector &sources, const st return primary; } -Task *SourceGenerator::run(const Target &target) const +Task *SourceGenerator::_run(const SourceFile &out_src) { - const SourceFile &out_src = dynamic_cast(target); const FS::Path &work_dir = out_src.get_package()->get_source_directory(); + const SourceGenerator &tool = dynamic_cast(*out_src.get_tool()); vector args; - args.push_back(executable->get_path().str()); - args.insert(args.end(), arguments.begin(), arguments.end()); + args.push_back(tool.get_executable()->get_path().str()); + args.insert(args.end(), tool.arguments.begin(), tool.arguments.end()); - for(const Target *d: target.get_dependencies()) + for(const Target *d: out_src.get_dependencies()) if(const TemplateFile *tmpl = dynamic_cast(d)) args.push_back(FS::relative(tmpl->get_path(), work_dir).str()); - if(!out_argument.empty()) - args.push_back(out_argument); + if(!tool.out_argument.empty()) + args.push_back(tool.out_argument); args.push_back(FS::relative(out_src.get_path(), work_dir).str()); return new ExternalTask(args, work_dir);