diff --git a/android/bazel.go b/android/bazel.go index 8e2e3508e..5d1507c30 100644 --- a/android/bazel.go +++ b/android/bazel.go @@ -235,6 +235,7 @@ var ( // Configure modules in these directories to enable bp2build_available: true or false by default. bp2buildDefaultConfig = Bp2BuildConfig{ + "art/libartpalette": Bp2BuildDefaultTrueRecursively, "art/libdexfile": Bp2BuildDefaultTrueRecursively, "art/runtime": Bp2BuildDefaultTrueRecursively, "art/tools": Bp2BuildDefaultTrue, @@ -296,6 +297,9 @@ var ( "external/google-benchmark": Bp2BuildDefaultTrueRecursively, "external/googletest": Bp2BuildDefaultTrueRecursively, "external/gwp_asan": Bp2BuildDefaultTrueRecursively, + "external/icu": Bp2BuildDefaultTrueRecursively, + "external/icu/android_icu4j": Bp2BuildDefaultFalse, // java rules incomplete + "external/icu/icu4j": Bp2BuildDefaultFalse, // java rules incomplete "external/jemalloc_new": Bp2BuildDefaultTrueRecursively, "external/jsoncpp": Bp2BuildDefaultTrueRecursively, "external/libcap": Bp2BuildDefaultTrueRecursively, @@ -481,14 +485,27 @@ var ( "libdexfiled", // depends on unconverted modules: dexfile_operator_srcs, libartbased, libartpalette // go deps: - "apex-protos", // depends on soong_zip, a go binary - "robolectric_tzdata", // depends on soong_zip, a go binary - "robolectric-sqlite4java-native", // depends on soong_zip, a go binary + "apex-protos", // depends on soong_zip, a go binary + "generated_android_icu4j_src_files", "generated_android_icu4j_test_files", "icu4c_test_data", // depends on unconverted modules: soong_zip "host_bionic_linker_asm", // depends on extract_linker, a go binary. "host_bionic_linker_script", // depends on extract_linker, a go binary. + "robolectric-sqlite4java-native", // depends on soong_zip, a go binary + "robolectric_tzdata", // depends on soong_zip, a go binary + + "android_icu4j_srcgen_binary", // Bazel build error: deps not allowed without srcs; move to runtime_deps + "core-icu4j-for-host", // Bazel build error: deps not allowed without srcs; move to runtime_deps // java deps - "bin2c_fastdeployagent", // depends on deployagent, a java binary + "android_icu4j_srcgen", // depends on unconverted modules: currysrc + "currysrc", // depends on unconverted modules: currysrc_org.eclipse, guavalib, jopt-simple-4.9 + "bin2c_fastdeployagent", // depends on unconverted module: deployagent + "timezone-host", // depends on unconverted modules: art.module.api.annotations + "robolectric-sqlite4java-0.282", // depends on unconverted modules: robolectric-sqlite4java-import, robolectric-sqlite4java-native + "truth-prebuilt", // depends on unconverted modules: asm-7.0, guava + "truth-host-prebuilt", // depends on unconverted modules: truth-prebuilt + + "generated_android_icu4j_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip + "generated_android_icu4j_test_resources", // depends on unconverted modules: android_icu4j_srcgen_binary, soong_zip } // Per-module denylist of cc_library modules to only generate the static diff --git a/cc/bp2build.go b/cc/bp2build.go index c5eab0683..30c3c509b 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -844,10 +844,8 @@ func bp2BuildParseExportedIncludesHelper(ctx android.BazelConversionPathContext, func bazelLabelForStaticModule(ctx android.BazelConversionPathContext, m blueprint.Module) string { label := android.BazelModuleLabel(ctx, m) - if aModule, ok := m.(android.Module); ok { - if ctx.OtherModuleType(aModule) == "cc_library" && !android.GenerateCcLibraryStaticOnly(m.Name()) { - label += "_bp2build_cc_library_static" - } + if ccModule, ok := m.(*Module); ok && ccModule.typ() == fullLibrary && !android.GenerateCcLibraryStaticOnly(m.Name()) { + label += "_bp2build_cc_library_static" } return label } diff --git a/cc/cc.go b/cc/cc.go index 31babc2da..46e3b91fb 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -1751,7 +1751,7 @@ func (c *Module) setSubnameProperty(actx android.ModuleContext) { // Returns true if Bazel was successfully used for the analysis of this module. func (c *Module) maybeGenerateBazelActions(actx android.ModuleContext) bool { var bazelModuleLabel string - if actx.ModuleType() == "cc_library" && c.static() { + if c.typ() == fullLibrary && c.static() { // cc_library is a special case in bp2build; two targets are generated -- one for each // of the shared and static variants. The shared variant keeps the module name, but the // static variant uses a different suffixed name. @@ -1759,6 +1759,7 @@ func (c *Module) maybeGenerateBazelActions(actx android.ModuleContext) bool { } else { bazelModuleLabel = c.GetBazelLabel(actx, c) } + bazelActionsUsed := false // Mixed builds mode is disabled for modules outside of device OS. // TODO(b/200841190): Support non-device OS in mixed builds. @@ -3466,17 +3467,23 @@ func (c *Module) AlwaysRequiresPlatformApexVariant() bool { var _ snapshot.RelativeInstallPath = (*Module)(nil) -// ConvertWithBp2build converts Module to Bazel for bp2build. -func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) { - prebuilt := c.IsPrebuilt() +type moduleType int + +const ( + unknownType moduleType = iota + binary + object + fullLibrary + staticLibrary + sharedLibrary + headerLibrary +) + +func (c *Module) typ() moduleType { if c.Binary() { - if !prebuilt { - binaryBp2build(ctx, c, ctx.ModuleType()) - } + return binary } else if c.Object() { - if !prebuilt { - objectBp2Build(ctx, c) - } + return object } else if c.CcLibrary() { static := false shared := false @@ -3487,25 +3494,48 @@ func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) { static = library.MutatedProperties.BuildStatic shared = library.MutatedProperties.BuildShared } - if static && shared { - if !prebuilt { - libraryBp2Build(ctx, c) - } + return fullLibrary } else if !static && !shared { - libraryHeadersBp2Build(ctx, c) + return headerLibrary } else if static { - if prebuilt { - prebuiltLibraryStaticBp2Build(ctx, c) - } else { - sharedOrStaticLibraryBp2Build(ctx, c, true) - } - } else if shared { - if prebuilt { - prebuiltLibrarySharedBp2Build(ctx, c) - } else { - sharedOrStaticLibraryBp2Build(ctx, c, false) - } + return staticLibrary + } + return sharedLibrary + } + return unknownType +} + +// ConvertWithBp2build converts Module to Bazel for bp2build. +func (c *Module) ConvertWithBp2build(ctx android.TopDownMutatorContext) { + prebuilt := c.IsPrebuilt() + switch c.typ() { + case binary: + if !prebuilt { + binaryBp2build(ctx, c, ctx.ModuleType()) + } + case object: + if !prebuilt { + objectBp2Build(ctx, c) + } + case fullLibrary: + if !prebuilt { + libraryBp2Build(ctx, c) + } + case headerLibrary: + libraryHeadersBp2Build(ctx, c) + case staticLibrary: + + if prebuilt { + prebuiltLibraryStaticBp2Build(ctx, c) + } else { + sharedOrStaticLibraryBp2Build(ctx, c, true) + } + case sharedLibrary: + if prebuilt { + prebuiltLibrarySharedBp2Build(ctx, c) + } else { + sharedOrStaticLibraryBp2Build(ctx, c, false) } } }