From c3f1356a3a70a1cbcbe7853ea19a83dc451a0633 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Mon, 19 Mar 2018 18:12:39 +0900 Subject: [PATCH] Allow platform modules to link to vendor public libraries Normally, when building with VNDK, platform modules are not allowed to link against vendor libraries, because the ABI of the vendor libraries are not guaranteed to be stable and may differ across multiple vendor images. However, the vendor public libraries are the exceptions. Vendor public libraries are vendor libraries that are exposed to 3rd party apps and listed in /vendor/etc/public.libraries.txt. Since they are intended to be exposed to public, their ABI stability is guaranteed (by definition, though it is up to the vendor to actually guarantee it). This change allows platform modules to link to vendor public libraries. When the name of a vendor public libraries (whose stub is defined via vendor_public_library in Android.bp) is listed in LOCAL_SHARED_LIBRARIES, it is actually linked to the stub library which is available to platform modules. Bug: 74275385 Test: m -j Change-Id: I063b43431196190b59332b1bcad59f267073f89f --- core/binary.mk | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/binary.mk b/core/binary.mk index 97429c3ae..954df1f44 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -1330,6 +1330,15 @@ ifneq ($(LOCAL_USE_VNDK),) endif endif +# Platform can use vendor public libraries. If a required shared lib is one of +# the vendor public libraries, the lib is switched to the stub version of the lib. +ifeq ($(LOCAL_USE_VNDK),) + ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK)) + my_shared_libraries := $(foreach l,$(my_shared_libraries),\ + $(if $(filter $(l),$(VENDOR_PUBLIC_LIBRARIES)),$(l).vendorpublic,$(l))) + endif +endif + ########################################################## ## Set up installed module dependency ## We cannot compute the full path of the LOCAL_SHARED_LIBRARIES for