bp2build: reference static variants directly
Previously, when referencing a cc_library as a static_lib from a
converted module, the corresponding target would depend on the "root
target" of that cc_library. This resulted in a superfluous dependency on
the shared target of the cc_library dependency. This superfluous
dependency could sometimes result in cycles.
This change ensures the static target name is directly specified in such
cases.
Test: mixed_libc.sh CI
Test: USE_BAZEL_ANALYSIS=1 m fmtlib
Change-Id: I36ee9f0a9017b1e9d73df9e3174669107f0afd4f
diff --git a/android/bazel.go b/android/bazel.go
index 8341e57..9cebc80 100644
--- a/android/bazel.go
+++ b/android/bazel.go
@@ -259,7 +259,6 @@
// Per-module denylist of cc_library modules to only generate the static
// variant if their shared variant isn't ready or buildable by Bazel.
bp2buildCcLibraryStaticOnlyList = []string{
- "libstdc++", // http://b/186822597, cc_library, ld.lld: error: undefined symbol: __errno
"libjemalloc5", // http://b/188503688, cc_library, `target: { android: { enabled: false } }` for android targets.
}
@@ -294,8 +293,8 @@
}
}
-func GenerateCcLibraryStaticOnly(ctx BazelConversionPathContext) bool {
- return bp2buildCcLibraryStaticOnly[ctx.Module().Name()]
+func GenerateCcLibraryStaticOnly(moduleName string) bool {
+ return bp2buildCcLibraryStaticOnly[moduleName]
}
func ShouldKeepExistingBuildFileForDir(dir string) bool {
@@ -325,7 +324,7 @@
return false
}
- if GenerateCcLibraryStaticOnly(ctx) {
+ if GenerateCcLibraryStaticOnly(ctx.Module().Name()) {
// Don't use partially-converted cc_library targets in mixed builds,
// since mixed builds would generally rely on both static and shared
// variants of a cc_library.