Map cpp_std c++17/gnu++17 to 1z.
C++17 is basically done, but not rubber stamped yet. Rewrite c++17 and
gnu++17 to their 1z equivalents until this happens, and we get a
version of clang that allows it.
Test: mma in a project with cpp_std c++17
Change-Id: I1626c366c3a9b47c997cc27dc9c5205201ebbdf5
diff --git a/cc/compiler.go b/cc/compiler.go
index cec527b..f162878 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -365,11 +365,15 @@
cStd = compiler.Properties.C_std
}
- cppStd := config.CppStdVersion
- if compiler.Properties.Cpp_std == "experimental" {
+ cppStd := compiler.Properties.Cpp_std
+ switch compiler.Properties.Cpp_std {
+ case "":
+ cppStd = config.CppStdVersion
+ case "experimental":
cppStd = config.ExperimentalCppStdVersion
- } else if compiler.Properties.Cpp_std != "" {
- cppStd = compiler.Properties.Cpp_std
+ case "c++17", "gnu++17":
+ // Map c++17 and gnu++17 to their 1z equivalents, until 17 is finalized.
+ cppStd = strings.Replace(compiler.Properties.Cpp_std, "17", "1z", 1)
}
if !flags.Clang {