diff options
Diffstat (limited to 'cc/compiler.go')
-rw-r--r-- | cc/compiler.go | 65 |
1 files changed, 31 insertions, 34 deletions
diff --git a/cc/compiler.go b/cc/compiler.go index dd1cdeed..ef222854 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -397,45 +397,42 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags, deps flags.GlobalFlags = append(flags.GlobalFlags, tc.ToolchainCflags()) } - if !ctx.useSdk() { - cStd := config.CStdVersion - if String(compiler.Properties.C_std) == "experimental" { - cStd = config.ExperimentalCStdVersion - } else if String(compiler.Properties.C_std) != "" { - cStd = String(compiler.Properties.C_std) - } - - cppStd := String(compiler.Properties.Cpp_std) - switch String(compiler.Properties.Cpp_std) { - case "": - cppStd = config.CppStdVersion - case "experimental": - cppStd = config.ExperimentalCppStdVersion - case "c++17", "gnu++17": - // Map c++17 and gnu++17 to their 1z equivalents, until 17 is finalized. - cppStd = strings.Replace(String(compiler.Properties.Cpp_std), "17", "1z", 1) - } + cStd := config.CStdVersion + if String(compiler.Properties.C_std) == "experimental" { + cStd = config.ExperimentalCStdVersion + } else if String(compiler.Properties.C_std) != "" { + cStd = String(compiler.Properties.C_std) + } - if !flags.Clang { - // GCC uses an invalid C++14 ABI (emits calls to - // __cxa_throw_bad_array_length, which is not a valid C++ RT ABI). - // http://b/25022512 - cppStd = config.GccCppStdVersion - } else if ctx.Host() && !flags.Clang { - // The host GCC doesn't support C++14 (and is deprecated, so likely - // never will). Build these modules with C++11. - cppStd = config.GccCppStdVersion - } + cppStd := String(compiler.Properties.Cpp_std) + switch String(compiler.Properties.Cpp_std) { + case "": + cppStd = config.CppStdVersion + case "experimental": + cppStd = config.ExperimentalCppStdVersion + case "c++17", "gnu++17": + // Map c++17 and gnu++17 to their 1z equivalents, until 17 is finalized. + cppStd = strings.Replace(String(compiler.Properties.Cpp_std), "17", "1z", 1) + } - if compiler.Properties.Gnu_extensions != nil && *compiler.Properties.Gnu_extensions == false { - cStd = gnuToCReplacer.Replace(cStd) - cppStd = gnuToCReplacer.Replace(cppStd) - } + if !flags.Clang { + // GCC uses an invalid C++14 ABI (emits calls to + // __cxa_throw_bad_array_length, which is not a valid C++ RT ABI). + // http://b/25022512 + // The host GCC doesn't support C++14 (and is deprecated, so likely + // never will). + // Build these modules with C++11. + cppStd = config.GccCppStdVersion + } - flags.ConlyFlags = append([]string{"-std=" + cStd}, flags.ConlyFlags...) - flags.CppFlags = append([]string{"-std=" + cppStd}, flags.CppFlags...) + if compiler.Properties.Gnu_extensions != nil && *compiler.Properties.Gnu_extensions == false { + cStd = gnuToCReplacer.Replace(cStd) + cppStd = gnuToCReplacer.Replace(cppStd) } + flags.ConlyFlags = append([]string{"-std=" + cStd}, flags.ConlyFlags...) + flags.CppFlags = append([]string{"-std=" + cppStd}, flags.CppFlags...) + if ctx.useVndk() { flags.CFlags = append(flags.CFlags, esc(compiler.Properties.Target.Vendor.Cflags)...) } |