X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.cpp;h=d7b27ff275e39cfbdd908ffbc21119474a40d540;hb=68ef01e3f94ba5d0297e7979551e7d9404906db7;hp=28523f677e57bd697d9b2b85ad39d9bcb9461747;hpb=40ab4f61eaf7fc14fc6d1c2ea5eecee21882893a;p=builder.git diff --git a/source/tool.cpp b/source/tool.cpp index 28523f6..d7b27ff 100644 --- a/source/tool.cpp +++ b/source/tool.cpp @@ -37,19 +37,24 @@ Target *Tool::create_target(Target &source, const string &arg) return create_target(sources, arg); } -void Tool::prepare() +void Tool::prepare(Tool *tool) { - if(prepared) + if(!tool) + tool = this; + else if(tool->get_base_tool()!=this) + throw invalid_argument("Tool::prepare"); + + if(tool->prepared) return; - prepared = true; - if(!command.empty()) - executable = builder.get_vfs().find_binary(command); - do_prepare(); + tool->prepared = true; + if(!tool->command.empty()) + tool->executable = builder.get_vfs().find_binary(tool->command); + do_prepare(*tool); if(!command.empty() && !executable) { - builder.get_logger().log("problems", "Can't find executable %s for %s", command, tag); - problems.push_back(format("Can't find executable %s", command)); + builder.get_logger().log("problems", "Can't find executable %s for %s", tool->command, tool->tag); + tool->problems.push_back(format("Can't find executable %s", tool->command)); } } @@ -62,32 +67,6 @@ string Tool::create_build_signature(const BuildInfo &) const } -Target *SubTool::create_source(const Component &c, const FS::Path &p) const -{ - return parent.create_source(c, p); -} - -Target *SubTool::create_source(const FS::Path &p) const -{ - return parent.create_source(p); -} - -Target *SubTool::create_target(const vector &s, const string &a) -{ - return parent.create_target(s, a); -} - -Target *SubTool::create_install(Target &t) const -{ - return parent.create_install(t); -} - -string SubTool::create_build_signature(const BuildInfo &bi) const -{ - return parent.create_build_signature(bi); -} - - void operator>>(const LexicalConverter &conv, Tool::ProcessingUnit &unit) { const string &str = conv.get();