Rule to copy device manifest to device
The device manifest defines the collection of HAL interfaces exposed by
the vendor. Create a common rule so each target need not define their own.
Bug: 36810913
Test: Ran marlin build and inspected file was copied
Change-Id: I9f53796fdd85e706f91664d275aff6dbd785213f
diff --git a/core/Makefile b/core/Makefile
index 755f3bb..f9c1882 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -2064,6 +2064,8 @@
$(HOST_OUT_EXECUTABLES)/imgdiff \
$(HOST_OUT_EXECUTABLES)/bsdiff \
$(BUILD_IMAGE_SRCS) \
+ $(INSTALLED_VENDOR_MANIFEST) \
+ $(INSTALLED_VENDOR_MATRIX) \
| $(ACP)
@echo "Package target files: $@"
$(call create-system-vendor-symlink)
@@ -2285,6 +2287,15 @@
ifdef INSTALLED_SYSTEMOTHERIMAGE_TARGET
$(hide) $(call fs_config,$(zip_root)/SYSTEM_OTHER,system/) > $(zip_root)/META/system_other_filesystem_config.txt
endif
+ @# Metadata for compatibility verification.
+ $(hide) cp $(INSTALLED_SYSTEM_MANIFEST) $(zip_root)/META/system_manifest.xml
+ifdef INSTALLED_VENDOR_MANIFEST
+ $(hide) cp $(INSTALLED_VENDOR_MANIFEST) $(zip_root)/META/vendor_manifest.xml
+endif
+ifdef INSTALLED_VENDOR_MATRIX
+ $(hide) cp $(INSTALLED_VENDOR_MATRIX) $(zip_root)/META/vendor_matrix.xml
+endif
+
$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH MKBOOTIMG=$(MKBOOTIMG) \
./build/tools/releasetools/add_img_to_target_files -a -v -p $(HOST_OUT) $(zip_root)
@# Zip everything up, preserving symlinks and placing META/ files first to
diff --git a/core/config.mk b/core/config.mk
index 863416e..3bceffb 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -686,6 +686,8 @@
DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
endif
+INSTALLED_SYSTEM_MANIFEST := $(PRODUCT_OUT)/system/manifest.xml
+
# ###############################################################
# Set up final options.
# ###############################################################
diff --git a/target/board/Android.mk b/target/board/Android.mk
index f8ecc4e..6376156 100644
--- a/target/board/Android.mk
+++ b/target/board/Android.mk
@@ -2,6 +2,8 @@
# Set up product-global definitions and include product-specific rules.
#
+LOCAL_PATH := $(call my-dir)
+
-include $(TARGET_DEVICE_DIR)/AndroidBoard.mk
# Generate a file that contains various information about the
@@ -25,3 +27,25 @@
else
$(hide) echo "board=$(TARGET_BOOTLOADER_BOARD_NAME)" > $@
endif
+
+# Copy compatibility metadata to the device.
+
+ifdef DEVICE_MANIFEST_FILE
+include $(CLEAR_VARS)
+LOCAL_MODULE := manifest.xml
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)
+LOCAL_PREBUILT_MODULE_FILE := $(DEVICE_MANIFEST_FILE)
+INSTALLED_VENDOR_MANIFEST := $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+endif
+
+ifdef DEVICE_MATRIX_FILE
+include $(CLEAR_VARS)
+LOCAL_MODULE := matrix.xml
+LOCAL_MODULE_CLASS := ETC
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)
+LOCAL_PREBUILT_MODULE_FILE := $(DEVICE_MATRIX_FILE)
+INSTALLED_VENDOR_MATRIX := $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
+include $(BUILD_PREBUILT)
+endif
diff --git a/target/product/embedded.mk b/target/product/embedded.mk
index 8115385..f5efe5d 100644
--- a/target/product/embedded.mk
+++ b/target/product/embedded.mk
@@ -85,6 +85,8 @@
toybox \
tzdatacheck \
vndservicemanager \
+ matrix.xml \
+ manifest.xml \
# SELinux packages
PRODUCT_PACKAGES += \
@@ -119,5 +121,4 @@
system/core/rootdir/etc/hosts:system/etc/hosts
# Framework Manifest
-PRODUCT_COPY_FILES += \
- system/libhidl/manifest.xml:system/manifest.xml
+PRODUCT_COPY_FILES += system/libhidl/manifest.xml:system/manifest.xml