diff options
Diffstat (limited to 'android/bazel.go')
-rw-r--r-- | android/bazel.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/android/bazel.go b/android/bazel.go index 71884a7d2..6c476a78e 100644 --- a/android/bazel.go +++ b/android/bazel.go @@ -210,7 +210,6 @@ var ( "libc_tzcode", // http://b/186822591, cc_library_static, localtime.c:84:46: error: expected expression "libc_bionic_ndk", // http://b/186822256, cc_library_static, signal.cpp:186:52: error: ISO C++ requires field designators to be specified in declaration order "libc_malloc_hooks", // http://b/187016307, cc_library, ld.lld: error: undefined symbol: __malloc_hook - "libstdc++", // http://b/186822597, cc_library, ld.lld: error: undefined symbol: __errno "libm", // http://b/183064661, cc_library, math.h:25:16: error: unexpected token in argument list // http://b/186823769: Needs C++ STL support, includes from unconverted standard libraries in //external/libcxx @@ -237,6 +236,12 @@ var ( "libjemalloc5_unittest", } + // 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 + } + // Per-module denylist to opt modules out of mixed builds. Such modules will // still be generated via bp2build. mixedBuildsDisabledList = []string{ @@ -251,6 +256,7 @@ var ( // Used for quicker lookups bp2buildDoNotWriteBuildFile = map[string]bool{} bp2buildModuleDoNotConvert = map[string]bool{} + bp2buildCcLibraryStaticOnly = map[string]bool{} mixedBuildsDisabled = map[string]bool{} ) @@ -263,11 +269,19 @@ func init() { bp2buildModuleDoNotConvert[moduleName] = true } + for _, moduleName := range bp2buildCcLibraryStaticOnlyList { + bp2buildCcLibraryStaticOnly[moduleName] = true + } + for _, moduleName := range mixedBuildsDisabledList { mixedBuildsDisabled[moduleName] = true } } +func GenerateCcLibraryStaticOnly(ctx BazelConversionPathContext) bool { + return bp2buildCcLibraryStaticOnly[ctx.Module().Name()] +} + func ShouldWriteBuildFileForDir(dir string) bool { if _, ok := bp2buildDoNotWriteBuildFile[dir]; ok { return false @@ -285,6 +299,12 @@ func (b *BazelModuleBase) MixedBuildsEnabled(ctx BazelConversionPathContext) boo if len(b.GetBazelLabel(ctx, ctx.Module())) == 0 { return false } + if GenerateCcLibraryStaticOnly(ctx) { + // 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. + return false + } return !mixedBuildsDisabled[ctx.Module().Name()] } |