Move no_crt property to apply to libraries and binaries
Change-Id: I8a770ad422dac0fd67b43ca464e0942f504e1c30
This commit is contained in:
44
cc/cc.go
44
cc/cc.go
@@ -356,6 +356,10 @@ type BaseLinkerProperties struct {
|
|||||||
// list of static libraries to re-export include directories from. Entries must be
|
// list of static libraries to re-export include directories from. Entries must be
|
||||||
// present in static_libs.
|
// present in static_libs.
|
||||||
Export_static_lib_headers []string `android:"arch_variant"`
|
Export_static_lib_headers []string `android:"arch_variant"`
|
||||||
|
|
||||||
|
// don't link in crt_begin and crt_end. This flag should only be necessary for
|
||||||
|
// compiling crt or libc.
|
||||||
|
Nocrt *bool `android:"arch_variant"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type LibraryCompilerProperties struct {
|
type LibraryCompilerProperties struct {
|
||||||
@@ -400,10 +404,6 @@ type LibraryLinkerProperties struct {
|
|||||||
// local file name to pass to the linker as -force_symbols_weak_list
|
// local file name to pass to the linker as -force_symbols_weak_list
|
||||||
Force_symbols_weak_list *string `android:"arch_variant"`
|
Force_symbols_weak_list *string `android:"arch_variant"`
|
||||||
|
|
||||||
// don't link in crt_begin and crt_end. This flag should only be necessary for
|
|
||||||
// compiling crt or libc.
|
|
||||||
Nocrt *bool `android:"arch_variant"`
|
|
||||||
|
|
||||||
VariantName string `blueprint:"mutated"`
|
VariantName string `blueprint:"mutated"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1367,6 +1367,8 @@ func (linker *baseLinker) deps(ctx BaseModuleContext, deps Deps) Deps {
|
|||||||
func (linker *baseLinker) flags(ctx ModuleContext, flags Flags) Flags {
|
func (linker *baseLinker) flags(ctx ModuleContext, flags Flags) Flags {
|
||||||
toolchain := ctx.toolchain()
|
toolchain := ctx.toolchain()
|
||||||
|
|
||||||
|
flags.Nocrt = Bool(linker.Properties.Nocrt)
|
||||||
|
|
||||||
if !ctx.noDefaultCompilerFlags() {
|
if !ctx.noDefaultCompilerFlags() {
|
||||||
if ctx.Device() && !Bool(linker.Properties.Allow_undefined_symbols) {
|
if ctx.Device() && !Bool(linker.Properties.Allow_undefined_symbols) {
|
||||||
flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined")
|
flags.LdFlags = append(flags.LdFlags, "-Wl,--no-undefined")
|
||||||
@@ -1602,8 +1604,6 @@ func (library *libraryLinker) props() []interface{} {
|
|||||||
func (library *libraryLinker) flags(ctx ModuleContext, flags Flags) Flags {
|
func (library *libraryLinker) flags(ctx ModuleContext, flags Flags) Flags {
|
||||||
flags = library.baseLinker.flags(ctx, flags)
|
flags = library.baseLinker.flags(ctx, flags)
|
||||||
|
|
||||||
flags.Nocrt = Bool(library.Properties.Nocrt)
|
|
||||||
|
|
||||||
if !library.static() {
|
if !library.static() {
|
||||||
libName := ctx.ModuleName() + library.Properties.VariantName
|
libName := ctx.ModuleName() + library.Properties.VariantName
|
||||||
// GCC for Android assumes that -shared means -Bsymbolic, use -Wl,-shared instead
|
// GCC for Android assumes that -shared means -Bsymbolic, use -Wl,-shared instead
|
||||||
@@ -1645,7 +1645,7 @@ func (library *libraryLinker) deps(ctx BaseModuleContext, deps Deps) Deps {
|
|||||||
deps.StaticLibs = append(deps.StaticLibs, library.Properties.Static.Static_libs...)
|
deps.StaticLibs = append(deps.StaticLibs, library.Properties.Static.Static_libs...)
|
||||||
deps.SharedLibs = append(deps.SharedLibs, library.Properties.Static.Shared_libs...)
|
deps.SharedLibs = append(deps.SharedLibs, library.Properties.Static.Shared_libs...)
|
||||||
} else {
|
} else {
|
||||||
if ctx.Device() && !Bool(library.Properties.Nocrt) {
|
if ctx.Device() && !Bool(library.baseLinker.Properties.Nocrt) {
|
||||||
if !ctx.sdk() {
|
if !ctx.sdk() {
|
||||||
deps.CrtBegin = "crtbegin_so"
|
deps.CrtBegin = "crtbegin_so"
|
||||||
deps.CrtEnd = "crtend_so"
|
deps.CrtEnd = "crtend_so"
|
||||||
@@ -1932,20 +1932,26 @@ func (binary *binaryLinker) getStem(ctx BaseModuleContext) string {
|
|||||||
func (binary *binaryLinker) deps(ctx BaseModuleContext, deps Deps) Deps {
|
func (binary *binaryLinker) deps(ctx BaseModuleContext, deps Deps) Deps {
|
||||||
deps = binary.baseLinker.deps(ctx, deps)
|
deps = binary.baseLinker.deps(ctx, deps)
|
||||||
if ctx.Device() {
|
if ctx.Device() {
|
||||||
if !ctx.sdk() {
|
if !Bool(binary.baseLinker.Properties.Nocrt) {
|
||||||
if binary.buildStatic() {
|
if !ctx.sdk() {
|
||||||
deps.CrtBegin = "crtbegin_static"
|
if binary.buildStatic() {
|
||||||
|
deps.CrtBegin = "crtbegin_static"
|
||||||
|
} else {
|
||||||
|
deps.CrtBegin = "crtbegin_dynamic"
|
||||||
|
}
|
||||||
|
deps.CrtEnd = "crtend_android"
|
||||||
} else {
|
} else {
|
||||||
deps.CrtBegin = "crtbegin_dynamic"
|
if binary.buildStatic() {
|
||||||
|
deps.CrtBegin = "ndk_crtbegin_static." + ctx.sdkVersion()
|
||||||
|
} else {
|
||||||
|
if Bool(binary.Properties.Static_executable) {
|
||||||
|
deps.CrtBegin = "ndk_crtbegin_static." + ctx.sdkVersion()
|
||||||
|
} else {
|
||||||
|
deps.CrtBegin = "ndk_crtbegin_dynamic." + ctx.sdkVersion()
|
||||||
|
}
|
||||||
|
deps.CrtEnd = "ndk_crtend_android." + ctx.sdkVersion()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
deps.CrtEnd = "crtend_android"
|
|
||||||
} else {
|
|
||||||
if binary.buildStatic() {
|
|
||||||
deps.CrtBegin = "ndk_crtbegin_static." + ctx.sdkVersion()
|
|
||||||
} else {
|
|
||||||
deps.CrtBegin = "ndk_crtbegin_dynamic." + ctx.sdkVersion()
|
|
||||||
}
|
|
||||||
deps.CrtEnd = "ndk_crtend_android." + ctx.sdkVersion()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if binary.buildStatic() {
|
if binary.buildStatic() {
|
||||||
|
Reference in New Issue
Block a user