From 9f5c4c1ae3bff517eefb39130287016514fb31c7 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 6 Jan 2017 17:28:45 +0200 Subject: Store platform targets as typed target_triplet --- build2/bin/init.cxx | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'build2/bin') diff --git a/build2/bin/init.cxx b/build2/bin/init.cxx index cb87dd8..89dea09 100644 --- a/build2/bin/init.cxx +++ b/build2/bin/init.cxx @@ -6,8 +6,6 @@ #include -#include - #include #include #include @@ -55,6 +53,9 @@ namespace build2 // Note: some overridable, some not. // + // Target is a string and not target_triplet because it can be + // specified by the user. + // v.insert ("config.bin.target", true); v.insert ("config.bin.pattern", true); @@ -222,22 +223,23 @@ namespace build2 try { - string canon; - triplet t (s, canon); + target_triplet t (s); - l5 ([&]{trace << "canonical target: '" << canon << "'; " + l5 ([&]{trace << "canonical target: '" << t.string () << "'; " << "class: " << t.class_;}); - assert (!hint || s == canon); + assert (!hint || s == t.string ()); - // Enter as bin.target.{cpu,vendor,system,version,class}. + // Also enter as bin.target.{cpu,vendor,system,version,class} + // for convenience of access. // - r.assign ("bin.target") = move (canon); - r.assign ("bin.target.cpu") = move (t.cpu); - r.assign ("bin.target.vendor") = move (t.vendor); - r.assign ("bin.target.system") = move (t.system); - r.assign ("bin.target.version") = move (t.version); - r.assign ("bin.target.class") = move (t.class_); + r.assign ("bin.target.cpu") = t.cpu; + r.assign ("bin.target.vendor") = t.vendor; + r.assign ("bin.target.system") = t.system; + r.assign ("bin.target.version") = t.version; + r.assign ("bin.target.class") = t.class_; + + r.assign ("bin.target") = move (t); } catch (const invalid_argument& e) { @@ -298,7 +300,7 @@ namespace build2 diag_record dr (text); dr << "bin " << project (r) << '@' << r.out_path () << '\n' - << " target " << cast (r["bin.target"]); + << " target " << cast (r["bin.target"]); if (auto l = r["bin.pattern"]) dr << '\n' -- cgit v1.1