VNDK library list uses installed name
For example, module libprotobuf-cpp-lite has installed library name
libprotobuf-cpp-lite-3.9.1.so.
VNDK library list should use this installed name instead of module name.
Bug: 141019581
Test: m $ANDROID_PRODUCT_OUT/obj/PACKAGING/vndk_intermediates/libs.txt
Change-Id: I7f19fedafdd2809e0b8738bbab6ad513ddb30ea0
diff --git a/target/product/gsi/Android.mk b/target/product/gsi/Android.mk
index 2b288e6..b6729bb 100644
--- a/target/product/gsi/Android.mk
+++ b/target/product/gsi/Android.mk
@@ -2,19 +2,37 @@
#####################################################################
# Create the list of vndk libraries from the source code.
+
+# Returns the unique installed basenames of a module, or module.so if there are
+# none. The guess is to handle cases like libc, where the module itself is
+# marked uninstallable but a symlink is installed with the name libc.so.
+# $(1): list of libraries
+# $(2): suffix to to add to each library (not used for guess)
+define module-installed-files-or-guess
+$(foreach lib,$(1),$(or $(strip $(sort $(notdir $(call module-installed-files,$(lib)$(2))))),$(lib).so))
+endef
+
INTERNAL_VNDK_LIB_LIST := $(call intermediates-dir-for,PACKAGING,vndk)/libs.txt
+$(INTERNAL_VNDK_LIB_LIST): PRIVATE_LLNDK_LIBRARIES := \
+ $(call module-installed-files-or-guess,$(filter-out libclang_rt.%,$(LLNDK_LIBRARIES)),)
+$(INTERNAL_VNDK_LIB_LIST): PRIVATE_VNDK_SAMEPROCESS_LIBRARIES := \
+ $(call module-installed-files-or-guess,$(VNDK_SAMEPROCESS_LIBRARIES),.vendor)
+$(INTERNAL_VNDK_LIB_LIST): PRIVATE_VNDK_CORE_LIBRARIES := \
+ $(call module-installed-files-or-guess,$(filter-out libclang_rt.%,$(VNDK_CORE_LIBRARIES)),.vendor)
+$(INTERNAL_VNDK_LIB_LIST): PRIVATE_VNDK_PRIVATE_LIBRARIES := \
+ $(call module-installed-files-or-guess,$(VNDK_PRIVATE_LIBRARIES),.vendor)
$(INTERNAL_VNDK_LIB_LIST):
@echo "Generate: $@"
@mkdir -p $(dir $@)
$(hide) echo -n > $@
- $(hide) $(foreach lib, $(filter-out libclang_rt.%,$(LLNDK_LIBRARIES)), \
- echo LLNDK: $(lib).so >> $@;)
- $(hide) $(foreach lib, $(VNDK_SAMEPROCESS_LIBRARIES), \
- echo VNDK-SP: $(lib).so >> $@;)
- $(hide) $(foreach lib, $(filter-out libclang_rt.%,$(VNDK_CORE_LIBRARIES)), \
- echo VNDK-core: $(lib).so >> $@;)
- $(hide) $(foreach lib, $(VNDK_PRIVATE_LIBRARIES), \
- echo VNDK-private: $(lib).so >> $@;)
+ $(hide) $(foreach lib, $(PRIVATE_LLNDK_LIBRARIES), \
+ echo LLNDK: $(lib) >> $@;)
+ $(hide) $(foreach lib, $(PRIVATE_VNDK_SAMEPROCESS_LIBRARIES), \
+ echo VNDK-SP: $(lib) >> $@;)
+ $(hide) $(foreach lib, $(PRIVATE_VNDK_CORE_LIBRARIES), \
+ echo VNDK-core: $(lib) >> $@;)
+ $(hide) $(foreach lib, $(PRIVATE_VNDK_PRIVATE_LIBRARIES), \
+ echo VNDK-private: $(lib) >> $@;)
#####################################################################
# This is the up-to-date list of vndk libs.
diff --git a/target/product/gsi/current.txt b/target/product/gsi/current.txt
index 6649f28..99d0f10 100644
--- a/target/product/gsi/current.txt
+++ b/target/product/gsi/current.txt
@@ -239,8 +239,8 @@
VNDK-core: libpng.so
VNDK-core: libpower.so
VNDK-core: libprocinfo.so
-VNDK-core: libprotobuf-cpp-full.so
-VNDK-core: libprotobuf-cpp-lite.so
+VNDK-core: libprotobuf-cpp-full-3.9.1.so
+VNDK-core: libprotobuf-cpp-lite-3.9.1.so
VNDK-core: libpuresoftkeymasterdevice.so
VNDK-core: libradio_metadata.so
VNDK-core: libselinux.so