Merge "Runtime deps to a stubs lib crosses APEX boundary" into rvc-dev
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