Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1251bb57 authored by Jingwen Chen's avatar Jingwen Chen Committed by Gerrit Code Review
Browse files

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

parents f3e0d222 db120245
Loading
Loading
Loading
Loading
+52 −4
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ func TestCcObjectBp2Build(t *testing.T) {
			filesystem: map[string]string{
				"a/b/foo.h":     "",
				"a/b/bar.h":     "",
				"a/b/exclude.c": "",
				"a/b/c.c":       "",
			},
			blueprint: `cc_object {
@@ -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",
    ],
)`,
			},
		},
+12 −1
Original line number Diff line number Diff line
@@ -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,
	}