diff --git a/android/bazel_handler.go b/android/bazel_handler.go index 6648a2fb8..974f8f50c 100644 --- a/android/bazel_handler.go +++ b/android/bazel_handler.go @@ -587,13 +587,11 @@ def %s(target): %s def get_arch(target): - # TODO(b/199363072): filegroups and file targets aren't associated with any - # specific platform architecture in mixed builds. This is consistent with how - # Soong treats filegroups, but it may not be the case with manually-written - # filegroup BUILD targets. - if target.kind in ["filegroup", ""]: - return "common" buildoptions = build_options(target) + if buildoptions == None: + # File targets do not have buildoptions. File targets aren't associated with + # any specific platform architecture in mixed builds. + return "common" platforms = build_options(target)["//command_line_option:platforms"] if len(platforms) != 1: # An individual configured target should have only one platform architecture. diff --git a/android/filegroup.go b/android/filegroup.go index 2cf556750..f8f095586 100644 --- a/android/filegroup.go +++ b/android/filegroup.go @@ -112,15 +112,22 @@ func FileGroupFactory() Module { return module } -func (fg *fileGroup) GenerateBazelBuildActions(ctx ModuleContext) bool { +func (fg *fileGroup) maybeGenerateBazelBuildActions(ctx ModuleContext) { if !fg.MixedBuildsEnabled(ctx) { - return false + return + } + + archVariant := ctx.Arch().ArchType + if len(fg.Srcs()) == 1 && fg.Srcs()[0].Base() == fg.Name() { + // This will be a regular file target, not filegroup, in Bazel. + // See FilegroupBp2Build for more information. + archVariant = Common } bazelCtx := ctx.Config().BazelContext - filePaths, ok := bazelCtx.GetOutputFiles(fg.GetBazelLabel(ctx, fg), Common) + filePaths, ok := bazelCtx.GetOutputFiles(fg.GetBazelLabel(ctx, fg), archVariant) if !ok { - return false + return } bazelOuts := make(Paths, 0, len(filePaths)) @@ -130,19 +137,15 @@ func (fg *fileGroup) GenerateBazelBuildActions(ctx ModuleContext) bool { } fg.srcs = bazelOuts - - return true } func (fg *fileGroup) GenerateAndroidBuildActions(ctx ModuleContext) { - if fg.GenerateBazelBuildActions(ctx) { - return - } - fg.srcs = PathsForModuleSrcExcludes(ctx, fg.properties.Srcs, fg.properties.Exclude_srcs) if fg.properties.Path != nil { fg.srcs = PathsWithModuleSrcSubDir(ctx, fg.srcs, String(fg.properties.Path)) } + + fg.maybeGenerateBazelBuildActions(ctx) } func (fg *fileGroup) Srcs() Paths {