Merge "bp2build: add support for cc_object's objs and exclude_srcs properties."

This commit is contained in:
Jingwen Chen 2021-02-25 14:09:08 +00:00 committed by Gerrit Code Review
commit 1251bb5775
2 changed files with 64 additions and 5 deletions

View file

@ -38,9 +38,10 @@ func TestCcObjectBp2Build(t *testing.T) {
moduleTypeUnderTestFactory: cc.ObjectFactory,
moduleTypeUnderTestBp2BuildMutator: cc.ObjectBp2Build,
filesystem: map[string]string{
"a/b/foo.h": "",
"a/b/bar.h": "",
"a/b/c.c": "",
"a/b/foo.h": "",
"a/b/bar.h": "",
"a/b/exclude.c": "",
"a/b/c.c": "",
},
blueprint: `cc_object {
name: "foo",
@ -52,8 +53,9 @@ func TestCcObjectBp2Build(t *testing.T) {
],
srcs: [
"a/b/*.h",
"a/b/c.c"
"a/b/*.c"
],
exclude_srcs: ["a/b/exclude.c"],
bazel_module: { bp2build_available: true },
}
@ -131,6 +133,52 @@ cc_defaults {
srcs = [
"a/b/c.c",
],
)`,
},
},
{
description: "cc_object with cc_object deps in objs props",
moduleTypeUnderTest: "cc_object",
moduleTypeUnderTestFactory: cc.ObjectFactory,
moduleTypeUnderTestBp2BuildMutator: cc.ObjectBp2Build,
filesystem: map[string]string{
"a/b/c.c": "",
"x/y/z.c": "",
},
blueprint: `cc_object {
name: "foo",
srcs: ["a/b/c.c"],
objs: ["bar"],
bazel_module: { bp2build_available: true },
}
cc_object {
name: "bar",
srcs: ["x/y/z.c"],
bazel_module: { bp2build_available: true },
}
`,
expectedBazelTargets: []string{`cc_object(
name = "bar",
copts = [
"-fno-addrsig",
],
srcs = [
"x/y/z.c",
],
)`, `cc_object(
name = "foo",
copts = [
"-fno-addrsig",
],
deps = [
":bar",
],
srcs = [
"a/b/c.c",
],
)`,
},
},

View file

@ -92,6 +92,7 @@ func ObjectFactory() android.Module {
// For bp2build conversion.
type bazelObjectAttributes struct {
Srcs bazel.LabelList
Deps bazel.LabelList
Copts []string
Local_include_dirs []string
}
@ -134,18 +135,28 @@ func ObjectBp2Build(ctx android.TopDownMutatorContext) {
var copts []string
var srcs []string
var excludeSrcs []string
var localIncludeDirs []string
for _, props := range m.compiler.compilerProps() {
if baseCompilerProps, ok := props.(*BaseCompilerProperties); ok {
copts = baseCompilerProps.Cflags
srcs = baseCompilerProps.Srcs
excludeSrcs = baseCompilerProps.Exclude_srcs
localIncludeDirs = baseCompilerProps.Local_include_dirs
break
}
}
var deps bazel.LabelList
for _, props := range m.linker.linkerProps() {
if objectLinkerProps, ok := props.(*ObjectLinkerProperties); ok {
deps = android.BazelLabelForModuleDeps(ctx, objectLinkerProps.Objs)
}
}
attrs := &bazelObjectAttributes{
Srcs: android.BazelLabelForModuleSrc(ctx, srcs),
Srcs: android.BazelLabelForModuleSrcExcludes(ctx, srcs, excludeSrcs),
Deps: deps,
Copts: copts,
Local_include_dirs: localIncludeDirs,
}