X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.cpp;h=f3a29905b1651f12cc2c4dc92ef95f55e38b5a0d;hb=bc85cc286c8a3f1055f1979a7ff8697cf1b61912;hp=abded33f7aba8131d1f64d8b6c050a3da1e7d504;hpb=e516e78510ad455eebc0e06645c9f12943117525;p=builder.git diff --git a/source/tool.cpp b/source/tool.cpp index abded33..f3a2990 100644 --- a/source/tool.cpp +++ b/source/tool.cpp @@ -12,6 +12,7 @@ Tool::Tool(Builder &b, const string &t): architecture(0), tag(t), executable(0), + processing_unit(ONE_FILE), prepared(false) { } @@ -20,6 +21,7 @@ Tool::Tool(Builder &b, const Architecture &a, const string &t): architecture(&a), tag(t), executable(0), + processing_unit(ONE_FILE), prepared(false) { } @@ -28,7 +30,7 @@ void Tool::set_command(const string &cmd, bool cross) if(cmd.empty()) throw invalid_argument("Tool::set_command"); - if(cross && architecture->is_cross()) + if(cross && architecture->is_cross() && !FS::Path(cmd).is_absolute()) command = format("%s-%s", architecture->get_cross_prefix(), cmd); else command = cmd; @@ -71,3 +73,42 @@ SubTool::SubTool(Tool &p): Tool(p), parent(p) { } + +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 list &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(); + 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)); +}