Ignore shared libs for static executables.
Ie42edc5184f315f998db953594e425214b810e0e added system_shared_libs to
static libraries so that their exported headers can be referenced.
However, it also added unrequired dependencies, which is an
error-triggering issue for static executables.
This change addresses it by adding a condition to shared libs handling code
in binary.go.
Bug: 121152570
Test: cc_test.go, library_test.go
Change-Id: I1828442c4e496f8d815fccaeca970cd5766bdf5d
diff --git a/cc/binary.go b/cc/binary.go
index 6923f2b..bc9abfe 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -299,9 +299,6 @@
var linkerDeps android.Paths
- sharedLibs := deps.SharedLibs
- sharedLibs = append(sharedLibs, deps.LateSharedLibs...)
-
if deps.LinkerFlagsFile.Valid() {
flags.LdFlags = append(flags.LdFlags, "$$(cat "+deps.LinkerFlagsFile.String()+")")
linkerDeps = append(linkerDeps, deps.LinkerFlagsFile.Path())
@@ -363,8 +360,15 @@
binary.injectHostBionicLinkerSymbols(ctx, outputFile, deps.DynamicLinker.Path(), injectedOutputFile)
}
- linkerDeps = append(linkerDeps, deps.SharedLibsDeps...)
- linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...)
+ var sharedLibs android.Paths
+ // Ignore shared libs for static executables.
+ if !binary.static() {
+ sharedLibs = deps.SharedLibs
+ sharedLibs = append(sharedLibs, deps.LateSharedLibs...)
+ linkerDeps = append(linkerDeps, deps.SharedLibsDeps...)
+ linkerDeps = append(linkerDeps, deps.LateSharedLibsDeps...)
+ }
+
linkerDeps = append(linkerDeps, objs.tidyFiles...)
linkerDeps = append(linkerDeps, flags.LdFlagsDeps...)