Support BUILD_HOST_static=1 for musl and linux_bionic builds
BUILD_HOST_static=1 is useful for musl and linux_bionic builds to
produce standalone static binaries.
Bug: 179809553
Test: m USE_HOST_MUSL=true BUILD_HOST_static=1 apexer deapexer
Change-Id: Iac0f4ca92c3ffb27bccd4cac15a6ef9fa5924471
diff --git a/cc/binary.go b/cc/binary.go
index 0fe4490..9262f21 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -220,18 +220,18 @@
func (binary *binaryDecorator) linkerInit(ctx BaseModuleContext) {
binary.baseLinker.linkerInit(ctx)
- if !ctx.toolchain().Bionic() && !ctx.toolchain().Musl() {
- if ctx.Os() == android.Linux {
- // Unless explicitly specified otherwise, host static binaries are built with -static
- // if HostStaticBinaries is true for the product configuration.
- if binary.Properties.Static_executable == nil && ctx.Config().HostStaticBinaries() {
- binary.Properties.Static_executable = BoolPtr(true)
- }
- } else {
- // Static executables are not supported on Darwin or Windows
- binary.Properties.Static_executable = nil
+ if ctx.Os().Linux() && ctx.Host() {
+ // Unless explicitly specified otherwise, host static binaries are built with -static
+ // if HostStaticBinaries is true for the product configuration.
+ if binary.Properties.Static_executable == nil && ctx.Config().HostStaticBinaries() {
+ binary.Properties.Static_executable = BoolPtr(true)
}
}
+
+ if ctx.Darwin() || ctx.Windows() {
+ // Static executables are not supported on Darwin or Windows
+ binary.Properties.Static_executable = nil
+ }
}
func (binary *binaryDecorator) static() bool {