From 5789ca9f28eb0580084be24cf27c34c66d1f5bdf Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 16 Feb 2018 17:15:19 -0800 Subject: [PATCH] Use the platform -std= for sdk_version. Bug: http://b/72571399 Test: builds Change-Id: I294cfadb7de54b1ae648e02ac9af34ed7a7405d8 --- cc/compiler.go | 71 ++++++++++++++++++++++++-------------------------- cc/stl.go | 3 +-- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/cc/compiler.go b/cc/compiler.go index dd1cdeedc..ef2228546 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) - } - - 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 - } - - 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...) + 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) + } + + 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 + } + + 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)...) } diff --git a/cc/stl.go b/cc/stl.go index c5757cd06..2da647184 100644 --- a/cc/stl.go +++ b/cc/stl.go @@ -176,8 +176,7 @@ func (stl *stl) flags(ctx ModuleContext, flags Flags) Flags { ndkSrcRoot := android.PathForSource(ctx, "prebuilts/ndk/current/sources/cxx-stl/system/include") flags.CFlags = append(flags.CFlags, "-isystem "+ndkSrcRoot.String()) case "ndk_libc++_shared", "ndk_libc++_static": - // TODO(danalbert): This really shouldn't be here... - flags.CppFlags = append(flags.CppFlags, "-std=c++11") + // Nothing. case "": // None or error. if !ctx.toolchain().Bionic() {