Stop relying on target.kind in mixed builds. am: 8f22274297

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

Change-Id: Iabf3aaea4cec22e1bc46dc8677bed5e6a57e0a20
This commit is contained in:
Jingwen Chen
2021-10-07 19:49:33 +00:00
committed by Automerger Merge Worker
2 changed files with 17 additions and 16 deletions

View File

@@ -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.

View File

@@ -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 {