summaryrefslogtreecommitdiff
path: root/android/proto.go
diff options
context:
space:
mode:
Diffstat (limited to 'android/proto.go')
-rw-r--r--android/proto.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/android/proto.go b/android/proto.go
index b9365a70f..4cd73e3a8 100644
--- a/android/proto.go
+++ b/android/proto.go
@@ -330,7 +330,8 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz
Label: l,
})
}
- protoLibrariesInIncludeDir := createProtoLibraryTargetsForIncludeDirs(ctx, protoIncludeDirs)
+ // Partitioning by packages can create dupes of protoIncludeDirs, so dedupe it first.
+ protoLibrariesInIncludeDir := createProtoLibraryTargetsForIncludeDirs(ctx, SortedUniqueStrings(protoIncludeDirs))
transitiveProtoLibraries.Append(protoLibrariesInIncludeDir)
}
@@ -401,7 +402,13 @@ func createProtoLibraryTargetsForIncludeDirs(ctx Bp2buildMutatorContext, include
if rel != "." {
attrs.Import_prefix = proptools.StringPtr(rel)
}
- ctx.CreateBazelTargetModule(
+
+ // If a specific directory is listed in proto.include_dirs of two separate modules (one host-specific and another device-specific),
+ // we do not want to create the proto_library with target_compatible_with of the first visited of these two modules
+ // As a workarounds, delete `target_compatible_with`
+ alwaysEnabled := bazel.BoolAttribute{}
+ alwaysEnabled.Value = proptools.BoolPtr(true)
+ ctx.CreateBazelTargetModuleWithRestrictions(
bazel.BazelTargetModuleProperties{Rule_class: "proto_library"},
CommonAttributes{
Name: label,
@@ -411,6 +418,7 @@ func createProtoLibraryTargetsForIncludeDirs(ctx Bp2buildMutatorContext, include
Tags: bazel.MakeStringListAttribute([]string{"manual"}),
},
&attrs,
+ alwaysEnabled,
)
}
}