Handle prebuilt vs source selection in bp2build
Test: enable mainline modules build from prebuilts and build
Bug: 300640274
Change-Id: Ib1d6bbca7e0ab459515d3cf6378741e8368e7327
diff --git a/bp2build/cc_library_headers_conversion_test.go b/bp2build/cc_library_headers_conversion_test.go
index bf3351a..fde4c97 100644
--- a/bp2build/cc_library_headers_conversion_test.go
+++ b/bp2build/cc_library_headers_conversion_test.go
@@ -58,6 +58,7 @@
func registerCcLibraryHeadersModuleTypes(ctx android.RegistrationContext) {
cc.RegisterCCBuildComponents(ctx)
cc.RegisterLibraryHeadersBuildComponents(ctx)
+ ctx.RegisterModuleType("cc_library_shared", cc.LibrarySharedFactory)
}
func runCcLibraryHeadersTestCase(t *testing.T, tc Bp2buildTestCase) {
@@ -417,3 +418,67 @@
},
})
}
+
+func TestPrebuiltCcLibraryHeadersPreferredRdepUpdated(t *testing.T) {
+ runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
+ Description: "cc_library_headers prebuilt preferred is used as rdep",
+ StubbedBuildDefinitions: []string{"foo_export"},
+ Filesystem: map[string]string{
+ "foo/bar/Android.bp": simpleModule("cc_library_headers", "foo_headers"),
+ },
+ Blueprint: soongCcLibraryHeadersPreamble + `
+cc_prebuilt_library_headers {
+ name: "foo_headers",
+ whole_static_libs: ["foo_export"],
+ bazel_module: { bp2build_available: true },
+ prefer: true,
+}
+
+cc_library_shared {
+ name: "foo",
+ header_libs: ["foo_headers"],
+ include_build_directory: false,
+}
+` + simpleModule("cc_library_headers", "foo_export"),
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
+ "deps": `[":foo_export"]`,
+ }),
+ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
+ "implementation_deps": `[":foo_headers"]`,
+ }),
+ },
+ })
+}
+
+func TestPrebuiltCcLibraryHeadersRdepUpdated(t *testing.T) {
+ runCcLibraryHeadersTestCase(t, Bp2buildTestCase{
+ Description: "cc_library_headers not preferred is not used for rdep",
+ StubbedBuildDefinitions: []string{"foo_export"},
+ Filesystem: map[string]string{
+ "foo/bar/Android.bp": simpleModule("cc_library_headers", "foo_headers"),
+ },
+ Blueprint: soongCcLibraryHeadersPreamble + `
+cc_prebuilt_library_headers {
+ name: "foo_headers",
+ whole_static_libs: ["foo_export"],
+ bazel_module: { bp2build_available: true },
+ prefer: false,
+}
+
+cc_library_shared {
+ name: "foo",
+ header_libs: ["foo_headers"],
+ include_build_directory: false,
+}
+` + simpleModule("cc_library_headers", "foo_export"),
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{
+ "deps": `[":foo_export"]`,
+ }),
+ MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{
+ "implementation_deps": `["//foo/bar:foo_headers"]`,
+ }),
+ },
+ })
+}