diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go index 246f1693e..9bb171330 100644 --- a/bp2build/cc_library_conversion_test.go +++ b/bp2build/cc_library_conversion_test.go @@ -2867,7 +2867,6 @@ cc_library { ExpectedBazelTargets: makeCcLibraryTargets("foolib", AttrNameToString{ "implementation_dynamic_deps": `select({ "//build/bazel/rules/apex:foo": ["@api_surfaces//module-libapi/current:barlib"], - "//build/bazel/rules/apex:system": ["@api_surfaces//module-libapi/current:barlib"], "//conditions:default": [":barlib"], })`, "local_includes": `["."]`, @@ -2925,10 +2924,6 @@ cc_library { "@api_surfaces//module-libapi/current:barlib", "@api_surfaces//module-libapi/current:quxlib", ], - "//build/bazel/rules/apex:system": [ - "@api_surfaces//module-libapi/current:barlib", - "@api_surfaces//module-libapi/current:quxlib", - ], "//conditions:default": [ ":barlib", ":quxlib", diff --git a/bp2build/cc_library_shared_conversion_test.go b/bp2build/cc_library_shared_conversion_test.go index 90b13b03f..44b97227e 100644 --- a/bp2build/cc_library_shared_conversion_test.go +++ b/bp2build/cc_library_shared_conversion_test.go @@ -661,7 +661,7 @@ cc_library_shared { ":libapexfoo_stable", ], "//build/bazel/rules/apex:system": [ - "@api_surfaces//module-libapi/current:libplatform_stable", + ":libplatform_stable", "@api_surfaces//module-libapi/current:libapexfoo_stable", ], "//conditions:default": [ diff --git a/cc/bp2build.go b/cc/bp2build.go index 83553c8c2..62416f79d 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -1624,6 +1624,11 @@ func setStubsForDynamicDeps(ctx android.BazelConversionPathContext, axis bazel.C if linkable, ok := ctx.Module().(LinkableInterface); ok && linkable.Bootstrap() { sameApiDomain = true } + // If dependency has `apex_available: ["//apex_available:platform]`, then the platform variant of rdep should link against its impl. + // https://cs.android.com/android/_/android/platform/build/soong/+/main:cc/cc.go;l=3617;bpv=1;bpt=0;drc=c6a93d853b37ec90786e745b8d282145e6d3b589 + if depApexAvailable := dep.(*Module).ApexAvailable(); len(depApexAvailable) == 1 && depApexAvailable[0] == android.AvailableToPlatform { + sameApiDomain = true + } } else { sameApiDomain = android.InList(apiDomain, dep.(*Module).ApexAvailable()) }