Runtime deps to a stubs lib crosses APEX boundary
When there is a runtime depedency (via runtime_libs property) to a
library providing stable C APIs, the dependency is considered as
crossing APEX boundary. Therefore, the requested lib doesn't need to be
made available to the APEX where the requesting lib is in.
Exempt-From-Owner-Approval: cherry-pick from aosp, approved there.
Bug: 147813447
Test: m
Merged-In: I9cf8a5877850fb85b92c851e15fac921b8b7641b
(cherry picked from commit 323a4c3ab34a6af4db7d0d99d22d64284b1570dc)
Change-Id: I9cf8a5877850fb85b92c851e15fac921b8b7641b
diff --git a/apex/apex_test.go b/apex/apex_test.go
index 34736e5..1eab4da 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -802,7 +802,6 @@
stubs: {
versions: ["10", "20", "30"],
},
- apex_available: [ "myapex" ],
}
cc_library {
@@ -3152,6 +3151,7 @@
name: "libfoo",
stl: "none",
system_shared_libs: [],
+ runtime_libs: ["libbaz"],
apex_available: ["myapex"],
}
@@ -3160,6 +3160,15 @@
stl: "none",
system_shared_libs: [],
apex_available: ["//apex_available:anyapex"],
+ }
+
+ cc_library {
+ name: "libbaz",
+ stl: "none",
+ system_shared_libs: [],
+ stubs: {
+ versions: ["10", "20", "30"],
+ },
}`)
// check that libfoo and libbar are created only for myapex, but not for the platform
diff --git a/cc/cc.go b/cc/cc.go
index 836de0a..e5e724e 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -2638,9 +2638,15 @@
func (c *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Module) bool {
if depTag, ok := ctx.OtherModuleDependencyTag(dep).(DependencyTag); ok {
if cc, ok := dep.(*Module); ok {
- if cc.HasStubsVariants() && depTag.Shared && depTag.Library {
- // dynamic dep to a stubs lib crosses APEX boundary
- return false
+ if cc.HasStubsVariants() {
+ if depTag.Shared && depTag.Library {
+ // dynamic dep to a stubs lib crosses APEX boundary
+ return false
+ }
+ if IsRuntimeDepTag(depTag) {
+ // runtime dep to a stubs lib also crosses APEX boundary
+ return false
+ }
}
if depTag.FromStatic {
// shared_lib dependency from a static lib is considered as crossing