Build DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE

... along with compatibility_matrix.device.xml.
The new module cm.device.xml contains the original content
of empty.xml (kernel configs, sepolicy, etc.) as well
as HALs from DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE.
This variable points to a framework compatibility matrix
that contains framework HALs as a vendor extension; all
HALs in this file must be optional.

Bug: 65028233
Test: m framework_compatibility_matrix.xml -j and manual inspection
Test: vts_treble_vintf_test

Change-Id: I94949f62f7f5b332d845f2e7fa4714df7c49ed3e
diff --git a/compatibility_matrices/compatibility_matrix.mk b/compatibility_matrices/compatibility_matrix.mk
index 96815b8..abc6796 100644
--- a/compatibility_matrices/compatibility_matrix.mk
+++ b/compatibility_matrices/compatibility_matrix.mk
@@ -29,8 +29,13 @@
 $(error LOCAL_MODULE_STEM must be defined.)
 endif
 
+ifndef LOCAL_MODULE
 LOCAL_MODULE := framework_$(LOCAL_MODULE_STEM)
+endif
+
+ifndef LOCAL_MODULE_CLASS
 LOCAL_MODULE_CLASS := ETC
+endif
 
 ifndef LOCAL_MODULE_PATH
 LOCAL_MODULE_PATH := $(TARGET_OUT)/etc/vintf
@@ -76,13 +81,19 @@
 	$(addprefix $(LOCAL_PATH)/,$(LOCAL_SRC_FILES)) \
 	$(LOCAL_GENERATED_SOURCES)
 
+ifneq (,$(strip $(LOCAL_WARN_REQUIRED_HALS)))
+$(GEN): PRIVATE_ADDITIONAL_ENV_VARS += PRODUCT_ENFORCE_VINTF_MANIFEST=true
+$(GEN): PRIVATE_COMMAND_TAIL := || (echo $(strip $(LOCAL_WARN_REQUIRED_HALS)) && false)
+endif
+
 $(GEN): PRIVATE_SRC_FILES := $(my_matrix_src_files)
 $(GEN): $(my_matrix_src_files) $(HOST_OUT_EXECUTABLES)/assemble_vintf
 	$(foreach varname,$(PRIVATE_ENV_VARS),$(varname)="$($(varname))") \
+		$(PRIVATE_ADDITIONAL_ENV_VARS) \
 		$(HOST_OUT_EXECUTABLES)/assemble_vintf \
 		-i $(call normalize-path-list,$(PRIVATE_SRC_FILES)) \
 		-o $@ \
-		$(PRIVATE_FLAGS)
+		$(PRIVATE_FLAGS) $(PRIVATE_COMMAND_TAIL)
 
 LOCAL_PREBUILT_MODULE_FILE := $(GEN)
 LOCAL_SRC_FILES :=
@@ -91,6 +102,7 @@
 LOCAL_ADD_VBMETA_VERSION :=
 LOCAL_ASSEMBLE_VINTF_ENV_VARS :=
 LOCAL_ASSEMBLE_VINTF_FLAGS :=
+LOCAL_WARN_REQUIRED_HALS :=
 LOCAL_KERNEL_VERSIONS :=
 LOCAL_GEN_FILE_DEPENDENCIES :=
 my_matrix_src_files :=