X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.cpp;h=3aa2db3c713716ba7d90bcafa715afe368a37302;hb=c75c89d2425ab0c69e94d45a5d956286838bbc67;hp=a23de6322e8ad3fef1422531d8577944b18000de;hpb=9e28243c9687608ec3c32954b4031490296ae877;p=builder.git diff --git a/source/tool.cpp b/source/tool.cpp index a23de63..3aa2db3 100644 --- a/source/tool.cpp +++ b/source/tool.cpp @@ -1,7 +1,11 @@ #include +#include +#include "architecture.h" +#include "builder.h" #include "tool.h" using namespace std; +using namespace Msp; Tool::Tool(Builder &b, const string &t): builder(b), @@ -19,6 +23,17 @@ Tool::Tool(Builder &b, const Architecture &a, const string &t): prepared(false) { } +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; +} + bool Tool::accepts_suffix(const string &suffix, bool aux) const { if(find(input_suffixes.begin(), input_suffixes.end(), suffix)!=input_suffixes.end()) @@ -43,6 +58,12 @@ void Tool::prepare() prepared = true; do_prepare(); + if(!executable && !command.empty()) + { + executable = builder.get_vfs().find_binary(command); + if(!executable) + problems.push_back(format("Can't find executable %s", command)); + } }