aboutsummaryrefslogtreecommitdiff
path: root/build2/cxx/utility.txx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/cxx/utility.txx')
-rw-r--r--build2/cxx/utility.txx35
1 files changed, 35 insertions, 0 deletions
diff --git a/build2/cxx/utility.txx b/build2/cxx/utility.txx
new file mode 100644
index 0000000..b35649e
--- /dev/null
+++ b/build2/cxx/utility.txx
@@ -0,0 +1,35 @@
+// file : build2/cxx/utility.txx -*- C++ -*-
+// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+using namespace std;
+
+namespace build2
+{
+ namespace cxx
+ {
+ template <typename T>
+ void
+ append_std (cstrings& args, T& t, std::string& s)
+ {
+ if (auto l = t["cxx.std"])
+ {
+ const std::string& v (as<string> (*l));
+
+ // Translate 11 to 0x and 14 to 1y for compatibility with
+ // older versions of the compiler.
+ //
+ s = "-std=c++";
+
+ if (v == "11")
+ s += "0x";
+ else if (v == "14")
+ s += "1y";
+ else
+ s += v;
+
+ args.push_back (s.c_str ());
+ }
+ }
+ }
+}