Use assemble_vintf to verify framework manifests.

Test: builds, and verify that system/manifest.xml is there.

Bug: 36681384 Runtime-Collectible information must be statically
collectible
Bug: 36983271 VINTF checked at build time

Change-Id: Ic3bb50211311fa423a2ad56bd2891cb57d7dc1a5
diff --git a/core/Makefile b/core/Makefile
index f9c1882..ba5be92 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -2288,12 +2288,12 @@
 	$(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
+	$(hide) cp $(BUILT_SYSTEM_MANIFEST) $(zip_root)/META/system_manifest.xml
+ifdef BUILT_VENDOR_MANIFEST
+	$(hide) cp $(BUILT_VENDOR_MANIFEST) $(zip_root)/META/vendor_manifest.xml
 endif
-ifdef INSTALLED_VENDOR_MATRIX
-	$(hide) cp $(INSTALLED_VENDOR_MATRIX) $(zip_root)/META/vendor_matrix.xml
+ifdef BUILT_VENDOR_MATRIX
+	$(hide) cp $(BUILT_VENDOR_MATRIX) $(zip_root)/META/vendor_matrix.xml
 endif
 
 	$(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH MKBOOTIMG=$(MKBOOTIMG) \
diff --git a/core/config.mk b/core/config.mk
index 3bceffb..6d5feb3 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -686,7 +686,7 @@
   DEFAULT_SYSTEM_DEV_CERTIFICATE := build/target/product/security/testkey
 endif
 
-INSTALLED_SYSTEM_MANIFEST := $(PRODUCT_OUT)/system/manifest.xml
+FRAMEWORK_MANIFEST_FILE := system/libhidl/manifest.xml
 
 # ###############################################################
 # Set up final options.
diff --git a/target/board/Android.mk b/target/board/Android.mk
index efc3bf3..a24abbe 100644
--- a/target/board/Android.mk
+++ b/target/board/Android.mk
@@ -41,8 +41,8 @@
 	BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $< -o $@
 
 LOCAL_PREBUILT_MODULE_FILE := $(GEN)
-INSTALLED_VENDOR_MANIFEST := $(LOCAL_MODULE_PATH)/$(LOCAL_MODULE)
 include $(BUILD_PREBUILT)
+BUILT_VENDOR_MANIFEST := $(LOCAL_BUILT_MODULE)
 endif
 
 ifdef DEVICE_MATRIX_FILE
@@ -51,6 +51,20 @@
 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)
+BUILT_VENDOR_MATRIX := $(LOCAL_BUILT_MODULE)
 endif
+
+include $(CLEAR_VARS)
+LOCAL_MODULE        := system_manifest.xml
+LOCAL_MODULE_STEM   := manifest.xml
+LOCAL_MODULE_CLASS  := ETC
+LOCAL_MODULE_PATH   := $(TARGET_OUT)
+
+GEN := $(local-generated-sources-dir)/manifest.xml
+$(GEN): $(FRAMEWORK_MANIFEST_FILE) $(HOST_OUT_EXECUTABLES)/assemble_vintf
+	BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $< -o $@
+
+LOCAL_PREBUILT_MODULE_FILE := $(GEN)
+include $(BUILD_PREBUILT)
+BUILT_SYSTEM_MANIFEST := $(LOCAL_BUILT_MODULE)
diff --git a/target/product/embedded.mk b/target/product/embedded.mk
index 2b7156b..b88a143 100644
--- a/target/product/embedded.mk
+++ b/target/product/embedded.mk
@@ -88,6 +88,7 @@
     vndservicemanager \
     matrix.xml \
     manifest.xml \
+    system_manifest.xml \
 
 # SELinux packages
 PRODUCT_PACKAGES += \
@@ -122,6 +123,3 @@
     system/core/rootdir/init.usb.configfs.rc:root/init.usb.configfs.rc \
     system/core/rootdir/ueventd.rc:root/ueventd.rc \
     system/core/rootdir/etc/hosts:system/etc/hosts
-
-# Framework Manifest
-PRODUCT_COPY_FILES += system/libhidl/manifest.xml:system/manifest.xml