diff options
| -rw-r--r-- | bp2build/cc_object_conversion_test.go | 56 | ||||
| -rw-r--r-- | cc/object.go | 13 |
2 files changed, 64 insertions, 5 deletions
diff --git a/bp2build/cc_object_conversion_test.go b/bp2build/cc_object_conversion_test.go index f0941025a..f6558422f 100644 --- a/bp2build/cc_object_conversion_test.go +++ b/bp2build/cc_object_conversion_test.go @@ -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 }, } @@ -134,6 +136,52 @@ cc_defaults { )`, }, }, + { + 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", + ], +)`, + }, + }, } dir := "." diff --git a/cc/object.go b/cc/object.go index b108c1c60..140a066af 100644 --- a/cc/object.go +++ b/cc/object.go @@ -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, } |