diff --git a/core/Makefile b/core/Makefile index 8f0895b9c..e0f6da8dc 100644 --- a/core/Makefile +++ b/core/Makefile @@ -13,7 +13,7 @@ is_tests_build := $(filter tests,$(MAKECMDGOALS)) # ----------------------------------------------------------------- # Define rules to copy PRODUCT_COPY_FILES defined by the product. -# PRODUCT_COPY_FILES contains words like :. +# PRODUCT_COPY_FILES contains words like :[:]. # is relative to $(PRODUCT_OUT), so it should look like, # e.g., "system/etc/file.xml". # The filter part means "only eval the copy-one-file rule if this diff --git a/core/product.mk b/core/product.mk index 20d1e975c..c0e6e3efc 100644 --- a/core/product.mk +++ b/core/product.mk @@ -165,7 +165,7 @@ $(if ,, \ $(eval pb := $(strip $(PRODUCTS.$(p).PRODUCT_BRAND))) \ $(if $(pb),,$(error $(p): PRODUCT_BRAND must be defined.)) \ $(foreach cf,$(strip $(PRODUCTS.$(p).PRODUCT_COPY_FILES)), \ - $(if $(filter 2,$(words $(subst :,$(space),$(cf)))),, \ + $(if $(filter 2 3,$(words $(subst :,$(space),$(cf)))),, \ $(error $(p): malformed COPY_FILE "$(cf)") \ ) \ ) \ diff --git a/core/product_config.mk b/core/product_config.mk index 9c85d2c51..7bb18527c 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -284,11 +284,12 @@ ifneq (1,$(words $(PRODUCT_DEFAULT_DEV_CERTIFICATE))) endif endif -# A list of words like :. The file at -# the source path should be copied to the destination path when building -# this product. is relative to $(PRODUCT_OUT), so -# it should look like, e.g., "system/etc/file.xml". The rules -# for these copy steps are defined in config/Makefile. +# A list of words like :[:]. +# The file at the source path should be copied to the destination path +# when building this product. is relative to +# $(PRODUCT_OUT), so it should look like, e.g., "system/etc/file.xml". +# The rules for these copy steps are defined in build/core/Makefile. +# The optional : is used to indicate the owner of a vendor file. PRODUCT_COPY_FILES := \ $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_COPY_FILES)) diff --git a/core/tasks/vendor_module_check.mk b/core/tasks/vendor_module_check.mk index 9cbca4122..cbee38486 100644 --- a/core/tasks/vendor_module_check.mk +++ b/core/tasks/vendor_module_check.mk @@ -17,22 +17,22 @@ # Restrict the vendor module owners here. _vendor_owner_whitelist := \ asus \ - audience \ - broadcom \ - csr \ + audience \ + broadcom \ + csr \ elan \ google \ - imgtec \ - invensense \ + imgtec \ + invensense \ lge \ nvidia \ - nxp \ + nxp \ qcom \ - samsung \ - samsung_arm \ - ti \ + samsung \ + samsung_arm \ + ti \ trusted_logic \ - widevine + widevine ifneq (,$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_RESTRICT_VENDOR_FILES)) @@ -47,10 +47,13 @@ ifneq (,$(filter vendor/%, $(PRODUCT_PACKAGE_OVERLAYS) $(DEVICE_PACKAGE_OVERLAYS $(error Error: Product "$(TARGET_PRODUCT)" can not have overlay in vendor tree: \ $(filter vendor/%, $(PRODUCT_PACKAGE_OVERLAYS) $(DEVICE_PACKAGE_OVERLAYS))) endif -ifneq (,$(filter vendor/%, $(PRODUCT_COPY_FILES))) -$(error Error: Product "$(TARGET_PRODUCT)" can not have PRODUCT_COPY_FILES from vendor tree: \ - $(filter vendor/%, $(PRODUCT_COPY_FILES))) +_vendor_check_copy_files := $(filter vendor/%, $(PRODUCT_COPY_FILES)) +ifneq (,$(_vendor_check_copy_files)) +$(foreach c, $(_vendor_check_copy_files), \ + $(if $(filter $(_vendor_owner_whitelist), $(call word-colon, 3, $(c))),,\ + $(error Error: vendor PRODUCT_COPY_FILES file "$(c)" has unknown owner))) endif +_vendor_check_copy_files := $(foreach m, $(_vendor_check_modules), \ $(if $(filter vendor/%, $(ALL_MODULES.$(m).PATH)),\