X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.cpp;h=82349e18eea50b747d8870ffb3f3113980dc7216;hb=15cf75a5ac62454d90b8b2987b1940710056f4d0;hp=28523f677e57bd697d9b2b85ad39d9bcb9461747;hpb=40ab4f61eaf7fc14fc6d1c2ea5eecee21882893a;p=builder.git diff --git a/source/tool.cpp b/source/tool.cpp index 28523f6..82349e1 100644 --- a/source/tool.cpp +++ b/source/tool.cpp @@ -43,9 +43,10 @@ void Tool::prepare() return; prepared = true; + if(!command.empty()) executable = builder.get_vfs().find_binary(command); - do_prepare(); + prepare(*this); if(!command.empty() && !executable) { builder.get_logger().log("problems", "Can't find executable %s for %s", command, tag); @@ -53,6 +54,14 @@ void Tool::prepare() } } +void Tool::prepare(Tool &tool) const +{ + if(&tool!=this && tool.get_base_tool()!=this) + throw invalid_argument("Tool::prepare"); + + do_prepare(tool); +} + string Tool::create_build_signature(const BuildInfo &) const { if(executable) @@ -62,32 +71,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();