Merge "bp2build: Improve handling of generated_sources" am: 7e1956643c

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

Change-Id: I1560405c38f158e997e7174315efa18d287a11ee
This commit is contained in:
Liz Kammer
2021-10-12 17:42:45 +00:00
committed by Automerger Merge Worker
2 changed files with 55 additions and 30 deletions

View File

@@ -1000,55 +1000,66 @@ func TestCcLibraryStaticArchSrcsExcludeSrcsGeneratedFiles(t *testing.T) {
"dep/Android.bp": ` "dep/Android.bp": `
genrule { genrule {
name: "generated_src_other_pkg", name: "generated_src_other_pkg",
out: ["generated_src_other_pkg.cpp"],
cmd: "nothing to see here", cmd: "nothing to see here",
} }
genrule { genrule {
name: "generated_hdr_other_pkg", name: "generated_hdr_other_pkg",
out: ["generated_hdr_other_pkg.cpp"],
cmd: "nothing to see here", cmd: "nothing to see here",
} }
genrule { genrule {
name: "generated_hdr_other_pkg_x86", name: "generated_hdr_other_pkg_x86",
out: ["generated_hdr_other_pkg_x86.cpp"], cmd: "nothing to see here",
}
genrule {
name: "generated_hdr_other_pkg_android",
cmd: "nothing to see here", cmd: "nothing to see here",
}`, }`,
}, },
blueprint: soongCcLibraryStaticPreamble + ` blueprint: soongCcLibraryStaticPreamble + `
genrule { genrule {
name: "generated_src", name: "generated_src",
out: ["generated_src.cpp"],
cmd: "nothing to see here", cmd: "nothing to see here",
} }
genrule { genrule {
name: "generated_src_x86", name: "generated_src_not_x86",
out: ["generated_src_x86.cpp"], cmd: "nothing to see here",
}
genrule {
name: "generated_src_android",
cmd: "nothing to see here", cmd: "nothing to see here",
} }
genrule { genrule {
name: "generated_hdr", name: "generated_hdr",
out: ["generated_hdr.h"],
cmd: "nothing to see here", cmd: "nothing to see here",
} }
cc_library_static { cc_library_static {
name: "foo_static3", name: "foo_static3",
srcs: ["common.cpp", "not-for-*.cpp"], srcs: ["common.cpp", "not-for-*.cpp"],
exclude_srcs: ["not-for-everything.cpp"], exclude_srcs: ["not-for-everything.cpp"],
generated_sources: ["generated_src", "generated_src_other_pkg"], generated_sources: ["generated_src", "generated_src_other_pkg", "generated_src_not_x86"],
generated_headers: ["generated_hdr", "generated_hdr_other_pkg"], generated_headers: ["generated_hdr", "generated_hdr_other_pkg"],
arch: { arch: {
x86: { x86: {
srcs: ["for-x86.cpp"], srcs: ["for-x86.cpp"],
exclude_srcs: ["not-for-x86.cpp"], exclude_srcs: ["not-for-x86.cpp"],
generated_sources: ["generated_src_x86"], generated_headers: ["generated_hdr_other_pkg_x86"],
generated_headers: ["generated_hdr_other_pkg_x86"], exclude_generated_sources: ["generated_src_not_x86"],
}, },
}, },
target: {
android: {
generated_sources: ["generated_src_android"],
generated_headers: ["generated_hdr_other_pkg_android"],
},
},
include_build_directory: false, include_build_directory: false,
} }
`, `,
@@ -1063,10 +1074,18 @@ cc_library_static {
] + select({ ] + select({
"//build/bazel/platforms/arch:x86": [ "//build/bazel/platforms/arch:x86": [
"//dep:generated_hdr_other_pkg_x86", "//dep:generated_hdr_other_pkg_x86",
":generated_src_x86",
"for-x86.cpp", "for-x86.cpp",
], ],
"//conditions:default": ["not-for-x86.cpp"], "//conditions:default": [
":generated_src_not_x86",
"not-for-x86.cpp",
],
}) + select({
"//build/bazel/platforms/os:android": [
"//dep:generated_hdr_other_pkg_android",
":generated_src_android",
],
"//conditions:default": [],
}), }),
)`}, )`},
}) })

View File

@@ -255,15 +255,22 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
} }
// Parse srcs from an arch or OS's props value. // Parse srcs from an arch or OS's props value.
parseSrcs := func(baseCompilerProps *BaseCompilerProperties) bazel.LabelList { parseSrcs := func(props *BaseCompilerProperties) (bazel.LabelList, bool) {
anySrcs := false
// Add srcs-like dependencies such as generated files. // Add srcs-like dependencies such as generated files.
// First create a LabelList containing these dependencies, then merge the values with srcs. // First create a LabelList containing these dependencies, then merge the values with srcs.
generatedHdrsAndSrcs := baseCompilerProps.Generated_headers generatedHdrsAndSrcs := props.Generated_headers
generatedHdrsAndSrcs = append(generatedHdrsAndSrcs, baseCompilerProps.Generated_sources...) generatedHdrsAndSrcs = append(generatedHdrsAndSrcs, props.Generated_sources...)
generatedHdrsAndSrcsLabelList := android.BazelLabelForModuleDeps(ctx, generatedHdrsAndSrcs) generatedHdrsAndSrcsLabelList := android.BazelLabelForModuleDepsExcludes(ctx, generatedHdrsAndSrcs, props.Exclude_generated_sources)
if len(generatedHdrsAndSrcs) > 0 || len(props.Exclude_generated_sources) > 0 {
anySrcs = true
}
allSrcsLabelList := android.BazelLabelForModuleSrcExcludes(ctx, baseCompilerProps.Srcs, baseCompilerProps.Exclude_srcs) allSrcsLabelList := android.BazelLabelForModuleSrcExcludes(ctx, props.Srcs, props.Exclude_srcs)
return bazel.AppendBazelLabelLists(allSrcsLabelList, generatedHdrsAndSrcsLabelList) if len(props.Srcs) > 0 || len(props.Exclude_srcs) > 0 {
anySrcs = true
}
return bazel.AppendBazelLabelLists(allSrcsLabelList, generatedHdrsAndSrcsLabelList), anySrcs
} }
archVariantCompilerProps := module.GetArchVariantProperties(ctx, &BaseCompilerProperties{}) archVariantCompilerProps := module.GetArchVariantProperties(ctx, &BaseCompilerProperties{})
@@ -272,8 +279,7 @@ func bp2BuildParseCompilerProps(ctx android.TopDownMutatorContext, module *Modul
if baseCompilerProps, ok := props.(*BaseCompilerProperties); ok { if baseCompilerProps, ok := props.(*BaseCompilerProperties); ok {
// If there's arch specific srcs or exclude_srcs, generate a select entry for it. // If there's arch specific srcs or exclude_srcs, generate a select entry for it.
// TODO(b/186153868): do this for OS specific srcs and exclude_srcs too. // TODO(b/186153868): do this for OS specific srcs and exclude_srcs too.
if len(baseCompilerProps.Srcs) > 0 || len(baseCompilerProps.Exclude_srcs) > 0 { if srcsList, ok := parseSrcs(baseCompilerProps); ok {
srcsList := parseSrcs(baseCompilerProps)
srcs.SetSelectValue(axis, config, srcsList) srcs.SetSelectValue(axis, config, srcsList)
} }