From 2be7f54b45e6050c6dc0f477259ddc2cb1c37b88 Mon Sep 17 00:00:00 2001 From: Trevor Radcliffe Date: Wed, 22 Jun 2022 20:30:55 +0000 Subject: [PATCH] Add support and tests for export_*_lib_headers There are 3 different properties about exporting headers in Soong: 1. export_static_lib_headers 2. export_shared_lib_headers 3. export_header_lib_headers The static and header cases are already supported in bp2build but do not have tests. This CL adds support for the shared case and adds tests for all cases. Fixes: 236268577 Test: Unit tests Change-Id: Idfb788271e607919d4ac6bc0e4eb4e6ff8f78e8d --- .../cc_library_headers_conversion_test.go | 66 +++++++++++++++++++ cc/library_headers.go | 1 + 2 files changed, 67 insertions(+) diff --git a/bp2build/cc_library_headers_conversion_test.go b/bp2build/cc_library_headers_conversion_test.go index 2b54d4592..641984b52 100644 --- a/bp2build/cc_library_headers_conversion_test.go +++ b/bp2build/cc_library_headers_conversion_test.go @@ -324,3 +324,69 @@ cc_library_headers { }, }) } + +func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) { + runCcLibraryHeadersTestCase(t, bp2buildTestCase{ + description: "cc_library_headers exported_static_lib_headers is reexported", + moduleTypeUnderTest: "cc_library_headers", + moduleTypeUnderTestFactory: cc.LibraryHeaderFactory, + filesystem: map[string]string{}, + blueprint: soongCcLibraryHeadersPreamble + ` +cc_library_headers { + name: "foo_headers", + export_static_lib_headers: ["foo_export"], + static_libs: ["foo_export", "foo_no_reexport"], + bazel_module: { bp2build_available: true }, +} +` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), + expectedBazelTargets: []string{ + makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{ + "deps": `[":foo_export"]`, + }), + }, + }) +} + +func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) { + runCcLibraryHeadersTestCase(t, bp2buildTestCase{ + description: "cc_library_headers exported_shared_lib_headers is reexported", + moduleTypeUnderTest: "cc_library_headers", + moduleTypeUnderTestFactory: cc.LibraryHeaderFactory, + filesystem: map[string]string{}, + blueprint: soongCcLibraryHeadersPreamble + ` +cc_library_headers { + name: "foo_headers", + export_shared_lib_headers: ["foo_export"], + shared_libs: ["foo_export", "foo_no_reexport"], + bazel_module: { bp2build_available: true }, +} +` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), + expectedBazelTargets: []string{ + makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{ + "deps": `[":foo_export"]`, + }), + }, + }) +} + +func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) { + runCcLibraryHeadersTestCase(t, bp2buildTestCase{ + description: "cc_library_headers exported_header_lib_headers is reexported", + moduleTypeUnderTest: "cc_library_headers", + moduleTypeUnderTestFactory: cc.LibraryHeaderFactory, + filesystem: map[string]string{}, + blueprint: soongCcLibraryHeadersPreamble + ` +cc_library_headers { + name: "foo_headers", + export_header_lib_headers: ["foo_export"], + header_libs: ["foo_export", "foo_no_reexport"], + bazel_module: { bp2build_available: true }, +} +` + simpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), + expectedBazelTargets: []string{ + makeBazelTarget("cc_library_headers", "foo_headers", attrNameToString{ + "deps": `[":foo_export"]`, + }), + }, + }) +} diff --git a/cc/library_headers.go b/cc/library_headers.go index 77c25231c..970d8d1a6 100644 --- a/cc/library_headers.go +++ b/cc/library_headers.go @@ -125,6 +125,7 @@ func libraryHeadersBp2Build(ctx android.TopDownMutatorContext, module *Module) { baseAttributes := bp2BuildParseBaseProps(ctx, module) exportedIncludes := bp2BuildParseExportedIncludes(ctx, module, &baseAttributes.includes) linkerAttrs := baseAttributes.linkerAttributes + (&linkerAttrs.deps).Append(linkerAttrs.dynamicDeps) attrs := &bazelCcLibraryHeadersAttributes{ Export_includes: exportedIncludes.Includes,