From 87dd963ace9285bb37dc04e39e3e7893e84c50ea Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 3 Nov 2017 13:31:05 -0700 Subject: [PATCH] Remove no_default_compiler_flags property no_default_compiler_flags is only used by the crt* modules, is unnecessary, and causes problems when necessary flags like -no-canonical-prefixes are not passed. Remove the property. Use useVndk() instead of noDefaultCompilerFlags() to determine if adding libc as a dependency is necessary and won't cause a circular dependency. Bug: 68719465 Test: m checkbuild Change-Id: Iea1a082dc701dfeab211049a22f7066257347b80 --- cc/cc.go | 9 ----- cc/compiler.go | 92 ++++++++++++++++++++++++-------------------------- cc/linker.go | 54 ++++++++++++++--------------- cc/object.go | 2 +- 4 files changed, 71 insertions(+), 86 deletions(-) diff --git a/cc/cc.go b/cc/cc.go index 02aaf1991..60c8f4190 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -159,10 +159,6 @@ type BaseProperties struct { // Minimum sdk version supported when compiling against the ndk Sdk_version string - // don't insert default compiler flags into asflags, cflags, - // cppflags, conlyflags, ldflags, or include_dirs - No_default_compiler_flags *bool - AndroidMkSharedLibs []string `blueprint:"mutated"` HideFromMake bool `blueprint:"mutated"` PreventInstall bool `blueprint:"mutated"` @@ -199,7 +195,6 @@ type ModuleContextIntf interface { staticBinary() bool clang() bool toolchain() config.Toolchain - noDefaultCompilerFlags() bool useSdk() bool sdkVersion() string useVndk() bool @@ -452,10 +447,6 @@ func (ctx *moduleContextImpl) staticBinary() bool { return false } -func (ctx *moduleContextImpl) noDefaultCompilerFlags() bool { - return Bool(ctx.mod.Properties.No_default_compiler_flags) -} - func (ctx *moduleContextImpl) useSdk() bool { if ctx.ctx.Device() && !ctx.useVndk() { return ctx.mod.Properties.Sdk_version != "" diff --git a/cc/compiler.go b/cc/compiler.go index 0a2d7bd7d..c40e1795a 100644 --- a/cc/compiler.go +++ b/cc/compiler.go @@ -232,16 +232,14 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag flags.YasmFlags = append(flags.YasmFlags, f) } - if !ctx.noDefaultCompilerFlags() { - flags.GlobalFlags = append(flags.GlobalFlags, "-I"+android.PathForModuleSrc(ctx).String()) - flags.YasmFlags = append(flags.YasmFlags, "-I"+android.PathForModuleSrc(ctx).String()) + flags.GlobalFlags = append(flags.GlobalFlags, "-I"+android.PathForModuleSrc(ctx).String()) + flags.YasmFlags = append(flags.YasmFlags, "-I"+android.PathForModuleSrc(ctx).String()) - if !(ctx.useSdk() || ctx.useVndk()) || ctx.Host() { - flags.SystemIncludeFlags = append(flags.SystemIncludeFlags, - "${config.CommonGlobalIncludes}", - tc.IncludeFlags(), - "${config.CommonNativehelperInclude}") - } + if !(ctx.useSdk() || ctx.useVndk()) || ctx.Host() { + flags.SystemIncludeFlags = append(flags.SystemIncludeFlags, + "${config.CommonGlobalIncludes}", + tc.IncludeFlags(), + "${config.CommonNativehelperInclude}") } if ctx.useSdk() { @@ -318,48 +316,46 @@ func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flag hod = "Device" } - if !ctx.noDefaultCompilerFlags() { - flags.GlobalFlags = append(flags.GlobalFlags, instructionSetFlags) - flags.ConlyFlags = append([]string{"${config.CommonGlobalConlyflags}"}, flags.ConlyFlags...) + flags.GlobalFlags = append(flags.GlobalFlags, instructionSetFlags) + flags.ConlyFlags = append([]string{"${config.CommonGlobalConlyflags}"}, flags.ConlyFlags...) - if flags.Clang { - flags.AsFlags = append(flags.AsFlags, tc.ClangAsflags()) - flags.CppFlags = append([]string{"${config.CommonClangGlobalCppflags}"}, flags.CppFlags...) - flags.GlobalFlags = append(flags.GlobalFlags, - tc.ClangCflags(), - "${config.CommonClangGlobalCflags}", - fmt.Sprintf("${config.%sClangGlobalCflags}", hod)) - } else { - flags.CppFlags = append([]string{"${config.CommonGlobalCppflags}"}, flags.CppFlags...) - flags.GlobalFlags = append(flags.GlobalFlags, - tc.Cflags(), - "${config.CommonGlobalCflags}", - fmt.Sprintf("${config.%sGlobalCflags}", hod)) - } - - if Bool(ctx.AConfig().ProductVariables.Brillo) { - flags.GlobalFlags = append(flags.GlobalFlags, "-D__BRILLO__") - } - - if ctx.Device() { - if Bool(compiler.Properties.Rtti) { - flags.CppFlags = append(flags.CppFlags, "-frtti") - } else { - flags.CppFlags = append(flags.CppFlags, "-fno-rtti") - } - } - - flags.AsFlags = append(flags.AsFlags, "-D__ASSEMBLY__") - - if flags.Clang { - flags.CppFlags = append(flags.CppFlags, tc.ClangCppflags()) - } else { - flags.CppFlags = append(flags.CppFlags, tc.Cppflags()) - } - - flags.YasmFlags = append(flags.YasmFlags, tc.YasmFlags()) + if flags.Clang { + flags.AsFlags = append(flags.AsFlags, tc.ClangAsflags()) + flags.CppFlags = append([]string{"${config.CommonClangGlobalCppflags}"}, flags.CppFlags...) + flags.GlobalFlags = append(flags.GlobalFlags, + tc.ClangCflags(), + "${config.CommonClangGlobalCflags}", + fmt.Sprintf("${config.%sClangGlobalCflags}", hod)) + } else { + flags.CppFlags = append([]string{"${config.CommonGlobalCppflags}"}, flags.CppFlags...) + flags.GlobalFlags = append(flags.GlobalFlags, + tc.Cflags(), + "${config.CommonGlobalCflags}", + fmt.Sprintf("${config.%sGlobalCflags}", hod)) } + if Bool(ctx.AConfig().ProductVariables.Brillo) { + flags.GlobalFlags = append(flags.GlobalFlags, "-D__BRILLO__") + } + + if ctx.Device() { + if Bool(compiler.Properties.Rtti) { + flags.CppFlags = append(flags.CppFlags, "-frtti") + } else { + flags.CppFlags = append(flags.CppFlags, "-fno-rtti") + } + } + + flags.AsFlags = append(flags.AsFlags, "-D__ASSEMBLY__") + + if flags.Clang { + flags.CppFlags = append(flags.CppFlags, tc.ClangCppflags()) + } else { + flags.CppFlags = append(flags.CppFlags, tc.Cppflags()) + } + + flags.YasmFlags = append(flags.YasmFlags, tc.YasmFlags()) + if flags.Clang { flags.GlobalFlags = append(flags.GlobalFlags, tc.ToolchainClangCflags()) } else { diff --git a/cc/linker.go b/cc/linker.go index d5727aa07..fae55425b 100644 --- a/cc/linker.go +++ b/cc/linker.go @@ -201,39 +201,37 @@ func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { hod = "Device" } - if !ctx.noDefaultCompilerFlags() { - flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLdflags}", hod)) - if Bool(linker.Properties.Allow_undefined_symbols) { - if ctx.Darwin() { - // darwin defaults to treating undefined symbols as errors - flags.LdFlags = append(flags.LdFlags, "-Wl,-undefined,dynamic_lookup") - } - } else if !ctx.Darwin() { - flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined") + flags.LdFlags = append(flags.LdFlags, fmt.Sprintf("${config.%sGlobalLdflags}", hod)) + if Bool(linker.Properties.Allow_undefined_symbols) { + if ctx.Darwin() { + // darwin defaults to treating undefined symbols as errors + flags.LdFlags = append(flags.LdFlags, "-Wl,-undefined,dynamic_lookup") } + } else if !ctx.Darwin() { + flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined") + } - if flags.Clang { - flags.LdFlags = append(flags.LdFlags, toolchain.ClangLdflags()) - } else { - flags.LdFlags = append(flags.LdFlags, toolchain.Ldflags()) - } + if flags.Clang { + flags.LdFlags = append(flags.LdFlags, toolchain.ClangLdflags()) + } else { + flags.LdFlags = append(flags.LdFlags, toolchain.Ldflags()) + } - if !ctx.toolchain().Bionic() { - CheckBadHostLdlibs(ctx, "host_ldlibs", linker.Properties.Host_ldlibs) + if !ctx.toolchain().Bionic() { + CheckBadHostLdlibs(ctx, "host_ldlibs", linker.Properties.Host_ldlibs) - flags.LdFlags = append(flags.LdFlags, linker.Properties.Host_ldlibs...) + flags.LdFlags = append(flags.LdFlags, linker.Properties.Host_ldlibs...) - if !ctx.Windows() { - // Add -ldl, -lpthread, -lm and -lrt to host builds to match the default behavior of device - // builds - flags.LdFlags = append(flags.LdFlags, - "-ldl", - "-lpthread", - "-lm", - ) - if !ctx.Darwin() { - flags.LdFlags = append(flags.LdFlags, "-lrt") - } + if !ctx.Windows() { + // Add -ldl, -lpthread, -lm and -lrt to host builds to match the default behavior of device + // builds + flags.LdFlags = append(flags.LdFlags, + "-ldl", + "-lpthread", + "-lm", + ) + if !ctx.Darwin() { + flags.LdFlags = append(flags.LdFlags, "-lrt") } } } diff --git a/cc/object.go b/cc/object.go index 402b1050b..2246dd303 100644 --- a/cc/object.go +++ b/cc/object.go @@ -53,7 +53,7 @@ func (object *objectLinker) linkerProps() []interface{} { func (*objectLinker) linkerInit(ctx BaseModuleContext) {} func (object *objectLinker) linkerDeps(ctx DepsContext, deps Deps) Deps { - if !ctx.noDefaultCompilerFlags() && ctx.toolchain().Bionic() { + if ctx.useVndk() && ctx.toolchain().Bionic() { // Needed for VNDK builds where bionic headers aren't automatically added. deps.LateSharedLibs = append(deps.LateSharedLibs, "libc") }