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

Commit 512437b0 authored by Sam Delmerico's avatar Sam Delmerico Committed by Liz Kammer
Browse files

add parent static deps to cc_aidl_library targets

The static deps of the parent library can be necessary to build a
bp2build-generated cc_aidl_library target. We should add these deps as
implementation_deps so that they are accessible.

Bug: 250876486
Test: b build //frameworks/native/libs/gui/...
Change-Id: Ibe7c3598a684907473e2a4e040fb3976455a59e9
parent 94d10702
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -736,15 +736,6 @@ var (
	// the "prebuilt_" prefix to the name, so that it's differentiable from
	// the source versions within Soong's module graph.
	Bp2buildModuleDoNotConvertList = []string{
		// TODO(b/250876486): Created cc_aidl_library doesn't have static libs from parent cc module
		"libgui_window_info_static",
		"libgui",     // Depends on unconverted libgui_window_info_static
		"libdisplay", // Depends on uncovnerted libgui
		// Depends on unconverted libdisplay
		"libdvr_static.google",
		"libdvr.google",
		"libvrsensor",
		"dvr_api-test",
		// Depends on unconverted libandroid, libgui
		"dvr_buffer_queue-test",
		"dvr_display-test",
+30 −15
Original line number Diff line number Diff line
@@ -3591,9 +3591,9 @@ cc_library {
	})
}

func TestCcLibraryWithAidlAndSharedLibs(t *testing.T) {
func TestCcLibraryWithAidlAndLibs(t *testing.T) {
	runCcLibraryTestCase(t, Bp2buildTestCase{
		Description:                "cc_aidl_library depends on shared libs from parent cc_library_static",
		Description:                "cc_aidl_library depends on libs from parent cc_library_static",
		ModuleTypeUnderTest:        "cc_library",
		ModuleTypeUnderTestFactory: cc.LibraryFactory,
		Blueprint: `
@@ -3602,31 +3602,46 @@ cc_library_static {
	srcs: [
		"Foo.aidl",
	],
	static_libs: [
		"bar-static",
		"baz-static",
	],
	shared_libs: [
		"bar",
		"baz",
		"bar-shared",
		"baz-shared",
	],
	export_static_lib_headers: [
		"baz-static",
	],
	export_shared_lib_headers: [
		"baz",
		"baz-shared",
	],
}` +
			simpleModuleDoNotConvertBp2build("cc_library", "bar") +
			simpleModuleDoNotConvertBp2build("cc_library", "baz"),
			simpleModuleDoNotConvertBp2build("cc_library_static", "bar-static") +
			simpleModuleDoNotConvertBp2build("cc_library_static", "baz-static") +
			simpleModuleDoNotConvertBp2build("cc_library", "bar-shared") +
			simpleModuleDoNotConvertBp2build("cc_library", "baz-shared"),
		ExpectedBazelTargets: []string{
			MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{
				"srcs": `["Foo.aidl"]`,
			}),
			MakeBazelTarget("cc_aidl_library", "foo_cc_aidl_library", AttrNameToString{
				"deps": `[":foo_aidl_library"]`,
				"implementation_deps": `[
        ":baz-static",
        ":bar-static",
    ]`,
				"implementation_dynamic_deps": `[
        ":baz",
        ":bar",
        ":baz-shared",
        ":bar-shared",
    ]`,
			}),
			MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
				"implementation_whole_archive_deps": `[":foo_cc_aidl_library"]`,
				"dynamic_deps":                      `[":baz"]`,
				"implementation_dynamic_deps":       `[":bar"]`,
				"deps":                              `[":baz-static"]`,
				"implementation_deps":               `[":bar-static"]`,
				"dynamic_deps":                      `[":baz-shared"]`,
				"implementation_dynamic_deps":       `[":bar-shared"]`,
				"local_includes":                    `["."]`,
			}),
		},
+8 −10
Original line number Diff line number Diff line
@@ -917,15 +917,12 @@ func bp2buildCcAidlLibrary(

		if !aidlLibs.IsEmpty() {
			ccAidlLibrarylabel := m.Name() + "_cc_aidl_library"
			// Since cc_aidl_library only needs the dynamic deps (aka shared libs) from the parent cc library for compiling,
			// we err on the side of not re-exporting the headers of the dynamic deps from cc_aidl_lirary
			// because the parent cc library already has all the dynamic deps
			implementationDynamicDeps := bazel.MakeLabelListAttribute(
				bazel.AppendBazelLabelLists(
					linkerAttrs.dynamicDeps.Value,
					linkerAttrs.implementationDynamicDeps.Value,
				),
			)
			// Since parent cc_library already has these dependencies, we can add them as implementation
			// deps so that they don't re-export
			implementationDeps := linkerAttrs.deps.Clone()
			implementationDeps.Append(linkerAttrs.implementationDeps)
			implementationDynamicDeps := linkerAttrs.dynamicDeps.Clone()
			implementationDynamicDeps.Append(linkerAttrs.implementationDynamicDeps)

			ctx.CreateBazelTargetModule(
				bazel.BazelTargetModuleProperties{
@@ -935,7 +932,8 @@ func bp2buildCcAidlLibrary(
				android.CommonAttributes{Name: ccAidlLibrarylabel},
				&ccAidlLibraryAttributes{
					Deps:                        aidlLibs,
					Implementation_dynamic_deps: implementationDynamicDeps,
					Implementation_deps:         *implementationDeps,
					Implementation_dynamic_deps: *implementationDynamicDeps,
				},
			)
			label := &bazel.LabelAttribute{
+1 −0
Original line number Diff line number Diff line
@@ -268,6 +268,7 @@ type aidlLibraryAttributes struct {

type ccAidlLibraryAttributes struct {
	Deps                        bazel.LabelListAttribute
	Implementation_deps         bazel.LabelListAttribute
	Implementation_dynamic_deps bazel.LabelListAttribute
}