Prevent vendor libs from depending on private VNDK libraries
For module installed to /vendor partition, direct linking to the libs
marked as `vendor_available: false` is not allowed. The
Bug: 64730695
Test: Add vendor_available: false to libft2 and
libcompiler_rt. Add the two libs into LOCAL_SHARED_LIBRARIES of a vendor
lib (e.g. libdrm). Build fails with the link_type check error message.
Change-Id: Iaf23574ceddb0c087111e1d95997e9ddd60cdf87
diff --git a/core/binary.mk b/core/binary.mk
index 45c2477..3e31d9a 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -1415,9 +1415,22 @@
my_warn_types :=
my_allowed_types := native:ndk
else ifdef LOCAL_USE_VNDK
-my_link_type := native:vendor
-my_warn_types :=
-my_allowed_types := native:vendor
+ _name := $(patsubst %.vendor,%,$(LOCAL_MODULE))
+ ifneq ($(filter $(_name),$(VNDK_CORE_LIBRARIES) $(VNDK_SAMEPROCESS_LIBRARIES) $(LLNDK_LIBRARIES)),)
+ ifeq ($(filter $(_name),$(VNDK_PRIVATE_LIBRARIES)),)
+ my_link_type := native:vndk
+ else
+ my_link_type := native:vndk_private
+ endif
+ my_warn_types :=
+ my_allowed_types := native:vndk native:vndk_private
+ else
+ # Modules installed to /vendor cannot directly depend on modules marked
+ # with vendor_available: false
+ my_link_type := native:vendor
+ my_warn_types :=
+ my_allowed_types := native:vendor native:vndk
+ endif
else
my_link_type := native:platform
my_warn_types :=