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/config/arm64_device.go b/cc/config/arm64_device.go index 390936a40..13e9a08ba 100644 --- a/cc/config/arm64_device.go +++ b/cc/config/arm64_device.go @@ -23,49 +23,26 @@ import ( var ( arm64Cflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-fno-strict-aliasing", - "-fstack-protector-strong", - "-ffunction-sections", "-fdata-sections", - "-funwind-tables", - "-Wa,--noexecstack", - "-Werror=format-security", - "-D_FORTIFY_SOURCE=2", "-fno-short-enums", - "-no-canonical-prefixes", - "-fno-canonical-system-headers", // Help catch common 32/64-bit errors. - "-Werror=pointer-to-int-cast", - "-Werror=int-to-pointer-cast", "-Werror=implicit-function-declaration", "-fno-strict-volatile-bitfields", // TARGET_RELEASE_CFLAGS - "-DNDEBUG", - "-O2 -g", - "-Wstrict-aliasing=2", "-fgcse-after-reload", "-frerun-cse-after-loop", "-frename-registers", } arm64Ldflags = []string{ - "-Wl,-z,noexecstack", - "-Wl,-z,relro", - "-Wl,-z,now", - "-Wl,--build-id=md5", - "-Wl,--warn-shared-textrel", - "-Wl,--fatal-warnings", "-Wl,-m,aarch64_elf64_le_vec", "-Wl,--hash-style=gnu", "-Wl,--fix-cortex-a53-843419", "-fuse-ld=gold", "-Wl,--icf=safe", - "-Wl,--no-undefined-version", } arm64Cppflags = []string{ diff --git a/cc/config/arm_device.go b/cc/config/arm_device.go index 7110ccb52..2c439f061 100644 --- a/cc/config/arm_device.go +++ b/cc/config/arm_device.go @@ -28,29 +28,18 @@ var ( } armCflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-ffunction-sections", "-fdata-sections", - "-funwind-tables", - "-fstack-protector-strong", - "-Wa,--noexecstack", - "-Werror=format-security", - "-D_FORTIFY_SOURCE=2", "-fno-short-enums", - "-no-canonical-prefixes", - "-fno-canonical-system-headers", "-fno-builtin-sin", "-fno-strict-volatile-bitfields", // TARGET_RELEASE_CFLAGS - "-DNDEBUG", - "-g", - "-Wstrict-aliasing=2", "-fgcse-after-reload", "-frerun-cse-after-loop", "-frename-registers", + + "-fomit-frame-pointer", } armCppflags = []string{ @@ -58,21 +47,12 @@ var ( } armLdflags = []string{ - "-Wl,-z,noexecstack", - "-Wl,-z,relro", - "-Wl,-z,now", - "-Wl,--build-id=md5", - "-Wl,--warn-shared-textrel", - "-Wl,--fatal-warnings", "-Wl,--icf=safe", "-Wl,--hash-style=gnu", - "-Wl,--no-undefined-version", "-Wl,-m,armelf", } armArmCflags = []string{ - "-O2", - "-fomit-frame-pointer", "-fstrict-aliasing", "-funswitch-loops", } @@ -80,8 +60,6 @@ var ( armThumbCflags = []string{ "-mthumb", "-Os", - "-fomit-frame-pointer", - "-fno-strict-aliasing", } armArchVariantCflags = map[string][]string{ diff --git a/cc/config/global.go b/cc/config/global.go index dae218c16..7362f2e51 100644 --- a/cc/config/global.go +++ b/cc/config/global.go @@ -34,9 +34,19 @@ var ( "-Winit-self", "-Wpointer-arith", - // COMMON_RELEASE_CFLAGS + // Make paths in deps files relative + "-no-canonical-prefixes", + "-DNDEBUG", "-UDEBUG", + + "-fno-exceptions", + "-Wno-multichar", + + "-O2", + "-g", + + "-fno-strict-aliasing", } commonGlobalConlyflags = []string{} @@ -44,16 +54,37 @@ var ( deviceGlobalCflags = []string{ "-fdiagnostics-color", - // TARGET_ERROR_FLAGS + "-fno-canonical-system-headers", + "-ffunction-sections", + "-funwind-tables", + "-fstack-protector-strong", + "-Wa,--noexecstack", + "-D_FORTIFY_SOURCE=2", + + "-Wstrict-aliasing=2", + "-Werror=return-type", "-Werror=non-virtual-dtor", "-Werror=address", "-Werror=sequence-point", "-Werror=date-time", + "-Werror=format-security", + } + + deviceGlobalLdflags = []string{ + "-Wl,-z,noexecstack", + "-Wl,-z,relro", + "-Wl,-z,now", + "-Wl,--build-id=md5", + "-Wl,--warn-shared-textrel", + "-Wl,--fatal-warnings", + "-Wl,--no-undefined-version", } hostGlobalCflags = []string{} + hostGlobalLdflags = []string{} + commonGlobalCppflags = []string{ "-Wsign-promo", } @@ -91,7 +122,9 @@ func init() { pctx.StaticVariable("CommonGlobalCflags", strings.Join(commonGlobalCflags, " ")) pctx.StaticVariable("CommonGlobalConlyflags", strings.Join(commonGlobalConlyflags, " ")) pctx.StaticVariable("DeviceGlobalCflags", strings.Join(deviceGlobalCflags, " ")) + pctx.StaticVariable("DeviceGlobalLdflags", strings.Join(deviceGlobalLdflags, " ")) pctx.StaticVariable("HostGlobalCflags", strings.Join(hostGlobalCflags, " ")) + pctx.StaticVariable("HostGlobalLdflags", strings.Join(hostGlobalLdflags, " ")) pctx.StaticVariable("NoOverrideGlobalCflags", strings.Join(noOverrideGlobalCflags, " ")) pctx.StaticVariable("CommonGlobalCppflags", strings.Join(commonGlobalCppflags, " ")) diff --git a/cc/config/mips64_device.go b/cc/config/mips64_device.go index e05dbf182..487b11a1a 100644 --- a/cc/config/mips64_device.go +++ b/cc/config/mips64_device.go @@ -22,32 +22,15 @@ import ( var ( mips64Cflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-O2", "-fomit-frame-pointer", - "-fno-strict-aliasing", "-funswitch-loops", "-Umips", - "-ffunction-sections", "-fdata-sections", - "-funwind-tables", - "-fstack-protector-strong", - "-Wa,--noexecstack", - "-Werror=format-security", - "-D_FORTIFY_SOURCE=2", - "-no-canonical-prefixes", - "-fno-canonical-system-headers", // Help catch common 32/64-bit errors. - "-Werror=pointer-to-int-cast", - "-Werror=int-to-pointer-cast", "-Werror=implicit-function-declaration", // TARGET_RELEASE_CFLAGS - "-DNDEBUG", - "-g", - "-Wstrict-aliasing=2", "-fgcse-after-reload", "-frerun-cse-after-loop", "-frename-registers", @@ -62,14 +45,7 @@ var ( } mips64Ldflags = []string{ - "-Wl,-z,noexecstack", - "-Wl,-z,relro", - "-Wl,-z,now", - "-Wl,--build-id=md5", - "-Wl,--warn-shared-textrel", - "-Wl,--fatal-warnings", "-Wl,--allow-shlib-undefined", - "-Wl,--no-undefined-version", } mips64ArchVariantCflags = map[string][]string{ diff --git a/cc/config/mips_device.go b/cc/config/mips_device.go index 78e95b6f2..f178b978c 100644 --- a/cc/config/mips_device.go +++ b/cc/config/mips_device.go @@ -22,27 +22,12 @@ import ( var ( mipsCflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-O2", "-fomit-frame-pointer", - "-fno-strict-aliasing", "-funswitch-loops", "-Umips", - "-ffunction-sections", "-fdata-sections", - "-funwind-tables", - "-fstack-protector-strong", - "-Wa,--noexecstack", - "-Werror=format-security", - "-D_FORTIFY_SOURCE=2", - "-no-canonical-prefixes", - "-fno-canonical-system-headers", // TARGET_RELEASE_CFLAGS - "-DNDEBUG", - "-g", - "-Wstrict-aliasing=2", "-fgcse-after-reload", "-frerun-cse-after-loop", "-frename-registers", @@ -58,14 +43,7 @@ var ( } mipsLdflags = []string{ - "-Wl,-z,noexecstack", - "-Wl,-z,relro", - "-Wl,-z,now", - "-Wl,--build-id=md5", - "-Wl,--warn-shared-textrel", - "-Wl,--fatal-warnings", "-Wl,--allow-shlib-undefined", - "-Wl,--no-undefined-version", } mipsToolchainLdflags = []string{ diff --git a/cc/config/x86_64_device.go b/cc/config/x86_64_device.go index a98001e3d..1eab9dd65 100644 --- a/cc/config/x86_64_device.go +++ b/cc/config/x86_64_device.go @@ -22,47 +22,19 @@ import ( var ( x86_64Cflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-O2", - "-Wa,--noexecstack", - "-Werror=format-security", - "-D_FORTIFY_SOURCE=2", - "-Wstrict-aliasing=2", - "-ffunction-sections", "-finline-functions", "-finline-limit=300", "-fno-short-enums", - "-fstrict-aliasing", "-funswitch-loops", - "-funwind-tables", - "-fstack-protector-strong", - "-no-canonical-prefixes", - "-fno-canonical-system-headers", // Help catch common 32/64-bit errors. - "-Werror=pointer-to-int-cast", - "-Werror=int-to-pointer-cast", "-Werror=implicit-function-declaration", - - // TARGET_RELEASE_CFLAGS from build/core/combo/select.mk - "-O2", - "-g", - "-fno-strict-aliasing", } x86_64Cppflags = []string{} x86_64Ldflags = []string{ - "-Wl,-z,noexecstack", - "-Wl,-z,relro", - "-Wl,-z,now", - "-Wl,--build-id=md5", - "-Wl,--warn-shared-textrel", - "-Wl,--fatal-warnings", - "-Wl,--gc-sections", "-Wl,--hash-style=gnu", - "-Wl,--no-undefined-version", } x86_64ArchVariantCflags = map[string][]string{ diff --git a/cc/config/x86_darwin_host.go b/cc/config/x86_darwin_host.go index 6d361b561..8d805c993 100644 --- a/cc/config/x86_darwin_host.go +++ b/cc/config/x86_darwin_host.go @@ -25,9 +25,6 @@ import ( var ( darwinCflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-fdiagnostics-color", "-fPIC", @@ -38,10 +35,6 @@ var ( "-D__STDC_FORMAT_MACROS", "-D__STDC_CONSTANT_MACROS", - // HOST_RELEASE_CFLAGS - "-O2", // from build/core/combo/select.mk - "-g", // from build/core/combo/select.mk - "-fno-strict-aliasing", // from build/core/combo/select.mk "-isysroot ${macSdkRoot}", "-mmacosx-version-min=${macMinVersion}", "-DMACOSX_DEPLOYMENT_TARGET=${macMinVersion}", diff --git a/cc/config/x86_device.go b/cc/config/x86_device.go index 53d2265ca..8aea64d9c 100644 --- a/cc/config/x86_device.go +++ b/cc/config/x86_device.go @@ -22,28 +22,10 @@ import ( var ( x86Cflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-O2", - "-Wa,--noexecstack", - "-Werror=format-security", - "-D_FORTIFY_SOURCE=2", - "-Wstrict-aliasing=2", - "-ffunction-sections", "-finline-functions", "-finline-limit=300", "-fno-short-enums", - "-fstrict-aliasing", "-funswitch-loops", - "-funwind-tables", - "-fstack-protector-strong", - "-no-canonical-prefixes", - "-fno-canonical-system-headers", - - // TARGET_RELEASE_CFLAGS from build/core/combo/select.mk - "-O2", - "-g", - "-fno-strict-aliasing", } x86ClangCflags = append(x86Cflags, []string{ @@ -58,15 +40,7 @@ var ( x86Cppflags = []string{} x86Ldflags = []string{ - "-Wl,-z,noexecstack", - "-Wl,-z,relro", - "-Wl,-z,now", - "-Wl,--build-id=md5", - "-Wl,--warn-shared-textrel", - "-Wl,--fatal-warnings", - "-Wl,--gc-sections", "-Wl,--hash-style=gnu", - "-Wl,--no-undefined-version", } x86ArchVariantCflags = map[string][]string{ diff --git a/cc/config/x86_linux_bionic_host.go b/cc/config/x86_linux_bionic_host.go index 277361b96..9f0bbbdf1 100644 --- a/cc/config/x86_linux_bionic_host.go +++ b/cc/config/x86_linux_bionic_host.go @@ -22,15 +22,11 @@ import ( var ( linuxBionicCflags = ClangFilterUnknownCflags([]string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-fdiagnostics-color", "-Wa,--noexecstack", "-fPIC", - "-no-canonical-prefixes", "-U_FORTIFY_SOURCE", "-D_FORTIFY_SOURCE=2", @@ -43,14 +39,8 @@ var ( "-fno-short-enums", "-funswitch-loops", "-funwind-tables", - "-no-canonical-prefixes", "-fno-canonical-system-headers", - // HOST_RELEASE_CFLAGS - "-O2", // from build/core/combo/select.mk - "-g", // from build/core/combo/select.mk - "-fno-strict-aliasing", // from build/core/combo/select.mk - // Tell clang where the gcc toolchain is "--gcc-toolchain=${LinuxBionicGccRoot}", @@ -65,7 +55,6 @@ var ( "-Wl,--build-id=md5", "-Wl,--warn-shared-textrel", "-Wl,--fatal-warnings", - "-Wl,--gc-sections", "-Wl,--hash-style=gnu", "-Wl,--no-undefined-version", diff --git a/cc/config/x86_linux_host.go b/cc/config/x86_linux_host.go index 88bd5140e..4f0506804 100644 --- a/cc/config/x86_linux_host.go +++ b/cc/config/x86_linux_host.go @@ -22,15 +22,11 @@ import ( var ( linuxCflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-fdiagnostics-color", "-Wa,--noexecstack", "-fPIC", - "-no-canonical-prefixes", "-U_FORTIFY_SOURCE", "-D_FORTIFY_SOURCE=2", @@ -40,11 +36,6 @@ var ( //See bug 12708004. "-D__STDC_FORMAT_MACROS", "-D__STDC_CONSTANT_MACROS", - - // HOST_RELEASE_CFLAGS - "-O2", // from build/core/combo/select.mk - "-g", // from build/core/combo/select.mk - "-fno-strict-aliasing", // from build/core/combo/select.mk } linuxLdflags = []string{ diff --git a/cc/config/x86_windows_host.go b/cc/config/x86_windows_host.go index 270084e48..c9bafe61a 100644 --- a/cc/config/x86_windows_host.go +++ b/cc/config/x86_windows_host.go @@ -22,9 +22,6 @@ import ( var ( windowsCflags = []string{ - "-fno-exceptions", // from build/core/combo/select.mk - "-Wno-multichar", // from build/core/combo/select.mk - "-DUSE_MINGW", "-DWIN32_LEAN_AND_MEAN", "-Wno-unused-parameter", @@ -43,11 +40,6 @@ var ( "-D_FILE_OFFSET_BITS=64", "--sysroot ${WindowsGccRoot}/${WindowsGccTriple}", - - // HOST_RELEASE_CFLAGS - "-O2", // from build/core/combo/select.mk - "-g", // from build/core/combo/select.mk - "-fno-strict-aliasing", // from build/core/combo/select.mk } windowsIncludeFlags = []string{ diff --git a/cc/linker.go b/cc/linker.go index 1cf3f6137..fae55425b 100644 --- a/cc/linker.go +++ b/cc/linker.go @@ -196,38 +196,42 @@ func (linker *baseLinker) linkerDeps(ctx BaseModuleContext, deps Deps) Deps { func (linker *baseLinker) linkerFlags(ctx ModuleContext, flags Flags) Flags { toolchain := ctx.toolchain() - if !ctx.noDefaultCompilerFlags() { - 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") + hod := "Host" + if ctx.Os().Class == android.Device { + hod = "Device" + } + + 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/makevars.go b/cc/makevars.go index 295b4ac00..f84ae24e2 100644 --- a/cc/makevars.go +++ b/cc/makevars.go @@ -174,6 +174,7 @@ func makeVarsToolchain(ctx android.MakeVarsContext, secondPrefix string, toolchain.Cppflags(), }, " ")) ctx.Strict(makePrefix+"GLOBAL_LDFLAGS", strings.Join([]string{ + fmt.Sprintf("${config.%sGlobalLdflags}", hod), toolchain.Ldflags(), toolchain.ToolchainLdflags(), productExtraLdflags, @@ -219,6 +220,7 @@ func makeVarsToolchain(ctx android.MakeVarsContext, secondPrefix string, toolchain.ClangCppflags(), }, " ")) ctx.Strict(clangPrefix+"GLOBAL_LDFLAGS", strings.Join([]string{ + fmt.Sprintf("${config.%sGlobalLdflags}", hod), toolchain.ClangLdflags(), toolchain.ToolchainClangLdflags(), productExtraLdflags, 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") }