diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2017-02-06 19:18:25 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-02-06 19:18:27 +0000 |
commit | 721197de2ca9a1a30b61ef4d531484c3d0b2dcd1 (patch) | |
tree | 9a8346c1c983b48b8fb3c307e704793d8cfae184 /cc | |
parent | d1b8d760b5913c1b32201c7bbb88dd8c8bb93ca6 (diff) | |
parent | 043833ca8164c057162e7051b6a38442e9160628 (diff) | |
download | build_soong-721197de2ca9a1a30b61ef4d531484c3d0b2dcd1.tar.gz build_soong-721197de2ca9a1a30b61ef4d531484c3d0b2dcd1.tar.bz2 build_soong-721197de2ca9a1a30b61ef4d531484c3d0b2dcd1.zip |
Merge "Add c_std and cpp_std properties."
Diffstat (limited to 'cc')
-rw-r--r-- | cc/compiler.go | 21 | ||||
-rw-r--r-- | cc/config/global.go | 8 | ||||
-rw-r--r-- | cc/makevars.go | 2 |
3 files changed, 28 insertions, 3 deletions
diff --git a/cc/compiler.go b/cc/compiler.go index d53e799a..e962949b 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -86,6 +86,16 @@ type BaseCompilerProperties struct { // 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 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag 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 diff --git a/cc/config/global.go b/cc/config/global.go index e248040d..e254a1c8 100644 --- a/cc/config/global.go +++ b/cc/config/global.go @@ -65,9 +65,11 @@ var ( "-w", } - CStdVersion = "gnu99" - CppStdVersion = "gnu++14" - GccCppStdVersion = "gnu++11" + CStdVersion = "gnu99" + CppStdVersion = "gnu++14" + GccCppStdVersion = "gnu++11" + ExperimentalCStdVersion = "gnu11" + ExperimentalCppStdVersion = "gnu++1z" ) var pctx = android.NewPackageContext("android/soong/cc/config") diff --git a/cc/makevars.go b/cc/makevars.go index 2e64e3c2..30d83e8e 100644 --- a/cc/makevars.go +++ b/cc/makevars.go @@ -60,6 +60,8 @@ func makeVarsProvider(ctx android.MakeVarsContext) { ctx.Strict("DEFAULT_C_STD_VERSION", config.CStdVersion) ctx.Strict("DEFAULT_CPP_STD_VERSION", config.CppStdVersion) ctx.Strict("DEFAULT_GCC_CPP_STD_VERSION", config.GccCppStdVersion) + ctx.Strict("EXPERIMENTAL_C_STD_VERSION", config.ExperimentalCStdVersion) + ctx.Strict("EXPERIMENTAL_CPP_STD_VERSION", config.ExperimentalCppStdVersion) ctx.Strict("DEFAULT_GLOBAL_TIDY_CHECKS", "${config.TidyDefaultGlobalChecks}") ctx.Strict("DEFAULT_LOCAL_TIDY_CHECKS", joinLocalTidyChecks(config.DefaultLocalTidyChecks)) |