Merge "Fix bp2build for cc_aidl_library to use LabelListAttribute.Partition"
diff --git a/cc/bp2build.go b/cc/bp2build.go
index aea85ec..63151ad 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -746,77 +746,57 @@
}
}
-func bp2buildAidlLibraries(
- ctx android.Bp2buildMutatorContext,
- m *Module,
- aidlSrcs bazel.LabelListAttribute,
-) bazel.LabelList {
- var aidlLibraries bazel.LabelList
- var directAidlSrcs bazel.LabelList
-
- // Make a list of labels that correspond to filegroups that are already converted to aidl_library
- for _, aidlSrc := range aidlSrcs.Value.Includes {
- src := aidlSrc.OriginalModuleName
- if fg, ok := android.ToFileGroupAsLibrary(ctx, src); ok &&
- fg.ShouldConvertToAidlLibrary(ctx) {
- aidlLibraries.Add(&bazel.Label{
- Label: fg.GetAidlLibraryLabel(ctx),
- })
- } else {
- directAidlSrcs.Add(&aidlSrc)
- }
- }
-
- if len(directAidlSrcs.Includes) > 0 {
- aidlLibraryLabel := m.Name() + "_aidl_library"
- ctx.CreateBazelTargetModule(
- bazel.BazelTargetModuleProperties{
- Rule_class: "aidl_library",
- Bzl_load_location: "//build/bazel/rules/aidl:library.bzl",
- },
- android.CommonAttributes{Name: aidlLibraryLabel},
- &aidlLibraryAttributes{
- Srcs: bazel.MakeLabelListAttribute(directAidlSrcs),
- },
- )
- aidlLibraries.Add(&bazel.Label{
- Label: ":" + aidlLibraryLabel,
- })
- }
- return aidlLibraries
-}
-
func bp2buildCcAidlLibrary(
ctx android.Bp2buildMutatorContext,
m *Module,
- aidlSrcs bazel.LabelListAttribute,
+ aidlLabelList bazel.LabelListAttribute,
) *bazel.LabelAttribute {
- suffix := "_cc_aidl_library"
- ccAidlLibrarylabel := m.Name() + suffix
+ if !aidlLabelList.IsEmpty() {
+ aidlLibs, aidlSrcs := aidlLabelList.Partition(func(src bazel.Label) bool {
+ if fg, ok := android.ToFileGroupAsLibrary(ctx, src.OriginalModuleName); ok &&
+ fg.ShouldConvertToAidlLibrary(ctx) {
+ return true
+ }
+ return false
+ })
- aidlLibraries := bp2buildAidlLibraries(ctx, m, aidlSrcs)
+ if !aidlSrcs.IsEmpty() {
+ aidlLibName := m.Name() + "_aidl_library"
+ ctx.CreateBazelTargetModule(
+ bazel.BazelTargetModuleProperties{
+ Rule_class: "aidl_library",
+ Bzl_load_location: "//build/bazel/rules/aidl:library.bzl",
+ },
+ android.CommonAttributes{Name: aidlLibName},
+ &aidlLibraryAttributes{
+ Srcs: aidlSrcs,
+ },
+ )
+ aidlLibs.Add(&bazel.LabelAttribute{Value: &bazel.Label{Label: ":" + aidlLibName}})
+ }
- if aidlLibraries.IsEmpty() {
- return nil
+ if !aidlLibs.IsEmpty() {
+ ccAidlLibrarylabel := m.Name() + "_cc_aidl_library"
+ ctx.CreateBazelTargetModule(
+ bazel.BazelTargetModuleProperties{
+ Rule_class: "cc_aidl_library",
+ Bzl_load_location: "//build/bazel/rules/cc:cc_aidl_library.bzl",
+ },
+ android.CommonAttributes{Name: ccAidlLibrarylabel},
+ &ccAidlLibraryAttributes{
+ Deps: aidlLibs,
+ },
+ )
+ label := &bazel.LabelAttribute{
+ Value: &bazel.Label{
+ Label: ":" + ccAidlLibrarylabel,
+ },
+ }
+ return label
+ }
}
- ctx.CreateBazelTargetModule(
- bazel.BazelTargetModuleProperties{
- Rule_class: "cc_aidl_library",
- Bzl_load_location: "//build/bazel/rules/cc:cc_aidl_library.bzl",
- },
- android.CommonAttributes{Name: ccAidlLibrarylabel},
- &ccAidlLibraryAttributes{
- Deps: bazel.MakeLabelListAttribute(aidlLibraries),
- },
- )
-
- label := &bazel.LabelAttribute{
- Value: &bazel.Label{
- Label: ":" + ccAidlLibrarylabel,
- },
- }
- return label
+ return nil
}
func bp2BuildParseSdkAttributes(module *Module) sdkAttributes {