X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.cpp;h=f3a29905b1651f12cc2c4dc92ef95f55e38b5a0d;hb=HEAD;hp=eaf4977d8c16030f2aa1bb0994ad3abc1d67c900;hpb=4e220a1ec5800e2f1caba02d55977a3b6f68d112;p=builder.git diff --git a/source/tool.cpp b/source/tool.cpp deleted file mode 100644 index eaf4977..0000000 --- a/source/tool.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include -#include -#include "architecture.h" -#include "builder.h" -#include "filetarget.h" -#include "tool.h" - -using namespace std; -using namespace Msp; - -void Tool::set_command(const string &cmd, bool cross) -{ - if(cmd.empty()) - throw invalid_argument("Tool::set_command"); - - if(cross && architecture->is_cross() && !FS::Path(cmd).is_absolute()) - command = format("%s-%s", architecture->get_cross_prefix(), cmd); - else - command = cmd; -} - -void Tool::set_run(function f) -{ - run_func = move(f); -} - -bool Tool::accepts_suffix(const string &suffix, bool aux) const -{ - return (any_equals(input_suffixes, suffix) || (aux && any_equals(aux_suffixes, suffix))); -} - -Target *Tool::create_target(Target &source, const string &arg) -{ - vector sources; - sources.push_back(&source); - return create_target(sources, arg); -} - -void Tool::prepare() -{ - if(prepared) - return; - - prepared = true; - - if(!command.empty()) - executable = builder.get_vfs().find_binary(command); - prepare(*this); - 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)); - } -} - -void Tool::prepare(Tool &tool) const -{ - if(&tool!=this && tool.get_base_tool()!=this) - throw invalid_argument("Tool::prepare"); - - if(&tool!=this && !command.empty() && tool.command.empty()) - throw logic_error("Derived tool has no command"); - - do_prepare(tool); -} - -string Tool::create_build_signature(const BuildInfo &) const -{ - if(executable) - return format("%s=%s", tag, FS::basename(executable->get_path())); - else - return string(); -} - - -void operator>>(const LexicalConverter &conv, Tool::ProcessingUnit &unit) -{ - const string &str = conv.get(); - if(str=="FILE") - unit = Tool::ONE_FILE; - else if(str=="DIRECTORY") - unit = Tool::DIRECTORY; - else if(str=="COMPONENT") - unit = Tool::COMPONENT; - else - throw lexical_error(format("conversion of '%s' to ProcessingUnit", str)); -}