Add c_std and cpp_std properties.

Test: Checked showcommands ouput for each setting.
Bug: None
Change-Id: Ibe02352f19ca2777b9a419136270e5c4390f1149
diff --git a/cc/compiler.go b/cc/compiler.go
index d53e799..e962949 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -86,6 +86,16 @@
 	// pass -frtti instead of -fno-rtti
 	Rtti *bool
 
+	// C standard version to use. Can be a specific version (such as "gnu11"),
+	// "experimental" (which will use draft versions like C1x when available),
+	// or the empty string (which will use the default).
+	C_std string
+
+	// C++ standard version to use. Can be a specific version (such as
+	// "gnu++11"), "experimental" (which will use draft versions like C++1z when
+	// available), or the empty string (which will use the default).
+	Cpp_std string
+
 	// if set to false, use -std=c++* instead of -std=gnu++*
 	Gnu_extensions *bool
 
@@ -307,7 +317,18 @@
 
 	if !ctx.sdk() {
 		cStd := config.CStdVersion
+		if compiler.Properties.C_std == "experimental" {
+			cStd = config.ExperimentalCStdVersion
+		} else if compiler.Properties.C_std != "" {
+			cStd = compiler.Properties.C_std
+		}
+
 		cppStd := config.CppStdVersion
+		if compiler.Properties.Cpp_std == "experimental" {
+			cppStd = config.ExperimentalCppStdVersion
+		} else if compiler.Properties.Cpp_std != "" {
+			cppStd = compiler.Properties.Cpp_std
+		}
 
 		if !flags.Clang {
 			// GCC uses an invalid C++14 ABI (emits calls to