Merge "bp2build: build static version of libstdc++." am: ee4e7fe76f am: 5603f8daac am: 6ea1ef4dde

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1693386

Change-Id: Ib6f3b7778ab8c3dab23f5ccaa61a456af4545644
This commit is contained in:
Treehugger Robot
2021-05-04 09:50:55 +00:00
committed by Automerger Merge Worker
2 changed files with 52 additions and 19 deletions

View File

@@ -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()]
}