aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/functions-target-triplet.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/functions-target-triplet.cxx')
-rw-r--r--libbuild2/functions-target-triplet.cxx38
1 files changed, 32 insertions, 6 deletions
diff --git a/libbuild2/functions-target-triplet.cxx b/libbuild2/functions-target-triplet.cxx
index ff9a15d..6e12c97 100644
--- a/libbuild2/functions-target-triplet.cxx
+++ b/libbuild2/functions-target-triplet.cxx
@@ -13,22 +13,48 @@ namespace build2
{
function_family f (m, "target_triplet");
- f["string"] = [](target_triplet t) {return t.string ();};
- f["representation"] = [](target_triplet t) {return t.representation ();};
+ // $string(<target-triplet>)
+ //
+ // Return the canonical (that is, without the `unknown` vendor component)
+ // target triplet string.
+ //
+
+ // Note that we must handle NULL values (relied upon by the parser
+ // to provide conversion semantics consistent with untyped values).
+ //
+ f["string"] += [](target_triplet* t)
+ {
+ return t != nullptr ? t->string () : string ();
+ };
+
+ // $representation(<target-triplet>)
+ //
+ // Return the complete target triplet string that always contains the
+ // vendor component.
+ //
+ f["representation"] += [](target_triplet t)
+ {
+ return t.representation ();
+ };
// Target triplet-specific overloads from builtins.
//
function_family b (m, "builtin");
- b[".concat"] = [](target_triplet l, string sr) {return l.string () + sr;};
- b[".concat"] = [](string sl, target_triplet r) {return sl + r.string ();};
+ // Note that while we should normally handle NULL values (relied upon by
+ // the parser to provide concatenation semantics consistent with untyped
+ // values), the result will unlikely be what the user expected. So for now
+ // we keep it a bit tighter.
+ //
+ b[".concat"] += [](target_triplet l, string sr) {return l.string () + sr;};
+ b[".concat"] += [](string sl, target_triplet r) {return sl + r.string ();};
- b[".concat"] = [](target_triplet l, names ur)
+ b[".concat"] += [](target_triplet l, names ur)
{
return l.string () + convert<string> (move (ur));
};
- b[".concat"] = [](names ul, target_triplet r)
+ b[".concat"] += [](names ul, target_triplet r)
{
return convert<string> (move (ul)) + r.string ();
};