Do vendor check on modules installed by LOCAL_SHARED_LIBRARIES
Since commit 6c86a1 we have split LOCAL_SHARED_LIBRARIES out of
LOCAL_REQUIRED_MODULES and the vendor check does no longer cover the
installed modules introduced by LOCAL_SHARED_LIBRARIES.
This change brings back the coverage.
Change-Id: Ie78692e48f173a3350792eb2fee8127ff9433caa
diff --git a/core/binary.mk b/core/binary.mk
index d70edbb..10d4927 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -86,7 +86,7 @@
# of the shared libraries are determined.
ifdef LOCAL_INSTALLED_MODULE
ifdef installed_shared_library_module_names
-$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(installed_shared_library_module_names))
+$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_MODULE):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(installed_shared_library_module_names))
endif
endif
diff --git a/core/definitions.mk b/core/definitions.mk
index 7bee582..7834baa 100644
--- a/core/definitions.mk
+++ b/core/definitions.mk
@@ -82,7 +82,7 @@
ALL_GPL_MODULE_LICENSE_FILES:=
# Target and host installed module's dependencies on shared libraries.
-# They are list of "<installed_file>:lib1,lib2...".
+# They are list of "<module_name>:<installed_file>:lib1,lib2...".
TARGET_DEPENDENCIES_ON_SHARED_LIBRARIES :=
HOST_DEPENDENCIES_ON_SHARED_LIBRARIES :=
diff --git a/core/main.mk b/core/main.mk
index 49e0a9a..e03801c 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -556,12 +556,12 @@
$(eval p := $(subst :,$(space),$(m))) \
$(eval r := $(filter $(TARGET_OUT_ROOT)/%,$(call module-installed-files,\
$(subst $(comma),$(space),$(lastword $(p)))))) \
- $(eval $(call add-required-deps,$(firstword $(p)),$(r))))
+ $(eval $(call add-required-deps,$(word 2,$(p)),$(r))))
$(foreach m,$(HOST_DEPENDENCIES_ON_SHARED_LIBRARIES), \
$(eval p := $(subst :,$(space),$(m))) \
$(eval r := $(filter $(HOST_OUT_ROOT)/%,$(call module-installed-files,\
$(subst $(comma),$(space),$(lastword $(p)))))) \
- $(eval $(call add-required-deps,$(firstword $(p)),$(r))))
+ $(eval $(call add-required-deps,$(word 2,$(p)),$(r))))
m :=
r :=
diff --git a/core/prebuilt.mk b/core/prebuilt.mk
index 6b8e3f8..6e08832 100644
--- a/core/prebuilt.mk
+++ b/core/prebuilt.mk
@@ -83,7 +83,7 @@
# of the shared libraries are determined.
ifdef LOCAL_INSTALLED_MODULE
ifdef LOCAL_SHARED_LIBRARIES
-$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(LOCAL_SHARED_LIBRARIES))
+$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_MODULE):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(LOCAL_SHARED_LIBRARIES))
endif
endif
diff --git a/core/tasks/vendor_module_check.mk b/core/tasks/vendor_module_check.mk
index 8d4eb05..fcf2bbe 100644
--- a/core/tasks/vendor_module_check.mk
+++ b/core/tasks/vendor_module_check.mk
@@ -40,6 +40,18 @@
_vendor_check_modules := $(sort $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES))
$(call expand-required-modules,_vendor_check_modules,$(_vendor_check_modules))
+# Expand the target modules installed via LOCAL_SHARED_LIBRARIES
+# $(1): the list of modules to expand.
+define expand-required-shared-libraries
+$(eval _ersl_new_modules := $(filter $(addsuffix :%,$(1)),$(TARGET_DEPENDENCIES_ON_SHARED_LIBRARIES)))\
+$(eval _ersl_new_modules := $(foreach p,$(_ersl_new_modules),$(word 3,$(subst :,$(space),$(p)))))\
+$(eval _ersl_new_modules := $(sort $(subst $(comma),$(space),$(_ersl_new_modules))))\
+$(eval _ersl_new_modules := $(filter-out $(_vendor_check_modules),$(_ersl_new_modules)))\
+$(if $(_ersl_new_modules),$(eval _vendor_check_modules += $(_ersl_new_modules))\
+ $(call expand-required-shared-libraries,$(_ersl_new_modules)))
+endef
+$(call expand-required-shared-libraries,$(_vendor_check_modules))
+
_vendor_module_owner_info :=
# Restrict owners
ifneq (,$(filter true owner all, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_RESTRICT_VENDOR_FILES)))