Merge "Add shared libs from upstream cc modules to cc_aidl_library targets"
This commit is contained in:
@@ -3206,3 +3206,45 @@ cc_library {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestCcLibraryWithAidlAndSharedLibs(t *testing.T) {
|
||||
runCcLibraryTestCase(t, Bp2buildTestCase{
|
||||
Description: "cc_aidl_library depends on shared libs from parent cc_library_static",
|
||||
ModuleTypeUnderTest: "cc_library",
|
||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||
Blueprint: `
|
||||
cc_library_static {
|
||||
name: "foo",
|
||||
srcs: [
|
||||
"Foo.aidl",
|
||||
],
|
||||
shared_libs: [
|
||||
"bar",
|
||||
"baz",
|
||||
],
|
||||
export_shared_lib_headers: [
|
||||
"baz",
|
||||
],
|
||||
}` +
|
||||
simpleModuleDoNotConvertBp2build("cc_library", "bar") +
|
||||
simpleModuleDoNotConvertBp2build("cc_library", "baz"),
|
||||
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_dynamic_deps": `[
|
||||
":baz",
|
||||
":bar",
|
||||
]`,
|
||||
}),
|
||||
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
|
||||
"implementation_whole_archive_deps": `[":foo_cc_aidl_library"]`,
|
||||
"dynamic_deps": `[":baz"]`,
|
||||
"implementation_dynamic_deps": `[":bar"]`,
|
||||
"local_includes": `["."]`,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
@@ -725,7 +725,7 @@ func bp2BuildParseBaseProps(ctx android.Bp2buildMutatorContext, module *Module)
|
||||
(&linkerAttrs).wholeArchiveDeps.Add(protoDep.wholeStaticLib)
|
||||
(&linkerAttrs).implementationWholeArchiveDeps.Add(protoDep.implementationWholeStaticLib)
|
||||
|
||||
aidlDep := bp2buildCcAidlLibrary(ctx, module, compilerAttrs.aidlSrcs)
|
||||
aidlDep := bp2buildCcAidlLibrary(ctx, module, compilerAttrs.aidlSrcs, linkerAttrs)
|
||||
if aidlDep != nil {
|
||||
if lib, ok := module.linker.(*libraryDecorator); ok {
|
||||
if proptools.Bool(lib.Properties.Aidl.Export_aidl_headers) {
|
||||
@@ -760,6 +760,7 @@ func bp2buildCcAidlLibrary(
|
||||
ctx android.Bp2buildMutatorContext,
|
||||
m *Module,
|
||||
aidlLabelList bazel.LabelListAttribute,
|
||||
linkerAttrs linkerAttributes,
|
||||
) *bazel.LabelAttribute {
|
||||
if !aidlLabelList.IsEmpty() {
|
||||
aidlLibs, aidlSrcs := aidlLabelList.Partition(func(src bazel.Label) bool {
|
||||
@@ -787,6 +788,16 @@ 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,
|
||||
),
|
||||
)
|
||||
|
||||
ctx.CreateBazelTargetModule(
|
||||
bazel.BazelTargetModuleProperties{
|
||||
Rule_class: "cc_aidl_library",
|
||||
@@ -794,7 +805,8 @@ func bp2buildCcAidlLibrary(
|
||||
},
|
||||
android.CommonAttributes{Name: ccAidlLibrarylabel},
|
||||
&ccAidlLibraryAttributes{
|
||||
Deps: aidlLibs,
|
||||
Deps: aidlLibs,
|
||||
Implementation_dynamic_deps: implementationDynamicDeps,
|
||||
},
|
||||
)
|
||||
label := &bazel.LabelAttribute{
|
||||
|
@@ -276,7 +276,8 @@ type aidlLibraryAttributes struct {
|
||||
}
|
||||
|
||||
type ccAidlLibraryAttributes struct {
|
||||
Deps bazel.LabelListAttribute
|
||||
Deps bazel.LabelListAttribute
|
||||
Implementation_dynamic_deps bazel.LabelListAttribute
|
||||
}
|
||||
|
||||
type stripAttributes struct {
|
||||
|
Reference in New Issue
Block a user