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
This commit is contained in:
Sam Delmerico
2023-03-17 11:34:15 -04:00
committed by Liz Kammer
parent 94d107020a
commit 512437b0b4
4 changed files with 39 additions and 34 deletions

View File

@@ -736,15 +736,6 @@ var (
// the "prebuilt_" prefix to the name, so that it's differentiable from // the "prebuilt_" prefix to the name, so that it's differentiable from
// the source versions within Soong's module graph. // the source versions within Soong's module graph.
Bp2buildModuleDoNotConvertList = []string{ 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 // Depends on unconverted libandroid, libgui
"dvr_buffer_queue-test", "dvr_buffer_queue-test",
"dvr_display-test", "dvr_display-test",

View File

@@ -3591,42 +3591,57 @@ cc_library {
}) })
} }
func TestCcLibraryWithAidlAndSharedLibs(t *testing.T) { func TestCcLibraryWithAidlAndLibs(t *testing.T) {
runCcLibraryTestCase(t, Bp2buildTestCase{ 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", ModuleTypeUnderTest: "cc_library",
ModuleTypeUnderTestFactory: cc.LibraryFactory, ModuleTypeUnderTestFactory: cc.LibraryFactory,
Blueprint: ` Blueprint: `
cc_library_static { cc_library_static {
name: "foo", name: "foo",
srcs: [ srcs: [
"Foo.aidl", "Foo.aidl",
], ],
static_libs: [
"bar-static",
"baz-static",
],
shared_libs: [ shared_libs: [
"bar", "bar-shared",
"baz", "baz-shared",
],
export_static_lib_headers: [
"baz-static",
], ],
export_shared_lib_headers: [ export_shared_lib_headers: [
"baz", "baz-shared",
], ],
}` + }` +
simpleModuleDoNotConvertBp2build("cc_library", "bar") + simpleModuleDoNotConvertBp2build("cc_library_static", "bar-static") +
simpleModuleDoNotConvertBp2build("cc_library", "baz"), simpleModuleDoNotConvertBp2build("cc_library_static", "baz-static") +
simpleModuleDoNotConvertBp2build("cc_library", "bar-shared") +
simpleModuleDoNotConvertBp2build("cc_library", "baz-shared"),
ExpectedBazelTargets: []string{ ExpectedBazelTargets: []string{
MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{ MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{
"srcs": `["Foo.aidl"]`, "srcs": `["Foo.aidl"]`,
}), }),
MakeBazelTarget("cc_aidl_library", "foo_cc_aidl_library", AttrNameToString{ MakeBazelTarget("cc_aidl_library", "foo_cc_aidl_library", AttrNameToString{
"deps": `[":foo_aidl_library"]`, "deps": `[":foo_aidl_library"]`,
"implementation_deps": `[
":baz-static",
":bar-static",
]`,
"implementation_dynamic_deps": `[ "implementation_dynamic_deps": `[
":baz", ":baz-shared",
":bar", ":bar-shared",
]`, ]`,
}), }),
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
"implementation_whole_archive_deps": `[":foo_cc_aidl_library"]`, "implementation_whole_archive_deps": `[":foo_cc_aidl_library"]`,
"dynamic_deps": `[":baz"]`, "deps": `[":baz-static"]`,
"implementation_dynamic_deps": `[":bar"]`, "implementation_deps": `[":bar-static"]`,
"dynamic_deps": `[":baz-shared"]`,
"implementation_dynamic_deps": `[":bar-shared"]`,
"local_includes": `["."]`, "local_includes": `["."]`,
}), }),
}, },

View File

@@ -917,15 +917,12 @@ func bp2buildCcAidlLibrary(
if !aidlLibs.IsEmpty() { if !aidlLibs.IsEmpty() {
ccAidlLibrarylabel := m.Name() + "_cc_aidl_library" 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, // Since parent cc_library already has these dependencies, we can add them as implementation
// we err on the side of not re-exporting the headers of the dynamic deps from cc_aidl_lirary // deps so that they don't re-export
// because the parent cc library already has all the dynamic deps implementationDeps := linkerAttrs.deps.Clone()
implementationDynamicDeps := bazel.MakeLabelListAttribute( implementationDeps.Append(linkerAttrs.implementationDeps)
bazel.AppendBazelLabelLists( implementationDynamicDeps := linkerAttrs.dynamicDeps.Clone()
linkerAttrs.dynamicDeps.Value, implementationDynamicDeps.Append(linkerAttrs.implementationDynamicDeps)
linkerAttrs.implementationDynamicDeps.Value,
),
)
ctx.CreateBazelTargetModule( ctx.CreateBazelTargetModule(
bazel.BazelTargetModuleProperties{ bazel.BazelTargetModuleProperties{
@@ -935,7 +932,8 @@ func bp2buildCcAidlLibrary(
android.CommonAttributes{Name: ccAidlLibrarylabel}, android.CommonAttributes{Name: ccAidlLibrarylabel},
&ccAidlLibraryAttributes{ &ccAidlLibraryAttributes{
Deps: aidlLibs, Deps: aidlLibs,
Implementation_dynamic_deps: implementationDynamicDeps, Implementation_deps: *implementationDeps,
Implementation_dynamic_deps: *implementationDynamicDeps,
}, },
) )
label := &bazel.LabelAttribute{ label := &bazel.LabelAttribute{

View File

@@ -268,6 +268,7 @@ type aidlLibraryAttributes struct {
type ccAidlLibraryAttributes struct { type ccAidlLibraryAttributes struct {
Deps bazel.LabelListAttribute Deps bazel.LabelListAttribute
Implementation_deps bazel.LabelListAttribute
Implementation_dynamic_deps bazel.LabelListAttribute Implementation_dynamic_deps bazel.LabelListAttribute
} }