diff --git a/compatibility_matrices/Android.mk b/compatibility_matrices/Android.mk index a10d808d33..23be7de2f9 100644 --- a/compatibility_matrices/Android.mk +++ b/compatibility_matrices/Android.mk @@ -21,8 +21,9 @@ BUILD_FRAMEWORK_COMPATIBILITY_MATRIX := $(LOCAL_PATH)/compatibility_matrix.mk # Clear potential input variables to BUILD_FRAMEWORK_COMPATIBILITY_MATRIX LOCAL_ADD_VBMETA_VERSION := LOCAL_ASSEMBLE_VINTF_ENV_VARS := +LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE := +LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE := LOCAL_ASSEMBLE_VINTF_FLAGS := -LOCAL_WARN_REQUIRED_HALS := LOCAL_KERNEL_VERSIONS := LOCAL_GEN_FILE_DEPENDENCIES := @@ -30,18 +31,21 @@ LOCAL_GEN_FILE_DEPENDENCIES := include $(CLEAR_VARS) +LOCAL_MODULE := framework_compatibility_matrix.legacy.xml LOCAL_MODULE_STEM := compatibility_matrix.legacy.xml LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM) LOCAL_KERNEL_VERSIONS := 3.18.0 4.4.0 4.9.0 include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX) include $(CLEAR_VARS) +LOCAL_MODULE := framework_compatibility_matrix.1.xml LOCAL_MODULE_STEM := compatibility_matrix.1.xml LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM) LOCAL_KERNEL_VERSIONS := 3.18.0 4.4.0 4.9.0 include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX) include $(CLEAR_VARS) +LOCAL_MODULE := framework_compatibility_matrix.2.xml LOCAL_MODULE_STEM := compatibility_matrix.2.xml LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM) LOCAL_KERNEL_VERSIONS := 3.18.0 4.4.0 4.9.0 @@ -50,6 +54,7 @@ include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX) # TODO(b/72409164): STOPSHIP: update kernel version requirements include $(CLEAR_VARS) +LOCAL_MODULE := framework_compatibility_matrix.current.xml LOCAL_MODULE_STEM := compatibility_matrix.current.xml LOCAL_SRC_FILES := $(LOCAL_MODULE_STEM) LOCAL_KERNEL_VERSIONS := 4.4.0 4.9.0 @@ -58,9 +63,9 @@ include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX) # Framework Compatibility Matrix (common to all FCM versions) include $(CLEAR_VARS) -LOCAL_MODULE_STEM := compatibility_matrix.device.xml -# define LOCAL_MODULE and LOCAL_MODULE_CLASS for local-generated-sources-dir. LOCAL_MODULE := framework_compatibility_matrix.device.xml +LOCAL_MODULE_STEM := compatibility_matrix.device.xml +# define LOCAL_MODULE_CLASS for local-generated-sources-dir. LOCAL_MODULE_CLASS := ETC ifndef DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE @@ -78,7 +83,7 @@ my_gen_check_manifest := $(local-generated-sources-dir)/manifest.check.xml $(my_gen_check_manifest): PRIVATE_SRC_FILE := $(my_manifest_src_file) $(my_gen_check_manifest): $(my_manifest_src_file) $(HOST_OUT_EXECUTABLES)/assemble_vintf BOARD_SEPOLICY_VERS=$(BOARD_SEPOLICY_VERS) \ - IGNORE_TARGET_FCM_VERSION=true \ + VINTF_IGNORE_TARGET_FCM_VERSION=true \ $(HOST_OUT_EXECUTABLES)/assemble_vintf -i $(PRIVATE_SRC_FILE) -o $@ LOCAL_GEN_FILE_DEPENDENCIES += $(my_gen_check_manifest) @@ -95,7 +100,8 @@ LOCAL_ASSEMBLE_VINTF_ENV_VARS := \ PLATFORM_SEPOLICY_VERSION \ PLATFORM_SEPOLICY_COMPAT_VERSIONS -LOCAL_WARN_REQUIRED_HALS := \ +LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE := PRODUCT_ENFORCE_VINTF_MANIFEST=true +LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE := \ "Error: DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX cannot contain required HALs." include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX) @@ -121,6 +127,14 @@ endif LOCAL_ASSEMBLE_VINTF_ENV_VARS := PRODUCT_ENFORCE_VINTF_MANIFEST +# TODO(b/65028233): Enforce no "unused HALs" for devices that does not define +# DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE as well +ifeq (true,$(strip $(PRODUCT_ENFORCE_VINTF_MANIFEST))) +ifdef DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE +LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE := VINTF_ENFORCE_NO_UNUSED_HALS=true +endif +endif + include $(BUILD_FRAMEWORK_COMPATIBILITY_MATRIX) BUILT_SYSTEM_COMPATIBILITY_MATRIX := $(LOCAL_BUILT_MODULE) diff --git a/compatibility_matrices/compatibility_matrix.mk b/compatibility_matrices/compatibility_matrix.mk index abc679656b..6dc2b4fb69 100644 --- a/compatibility_matrices/compatibility_matrix.mk +++ b/compatibility_matrices/compatibility_matrix.mk @@ -25,12 +25,33 @@ endef # $(warning $(call remove-minor-revision,3.18.0)) -ifndef LOCAL_MODULE_STEM -$(error LOCAL_MODULE_STEM must be defined.) -endif +##### Input Variables: +# LOCAL_MODULE: required. Module name for the build system. +# LOCAL_MODULE_CLASS: optional. Default is ETC. +# LOCAL_MODULE_PATH: optional. Path of output file. Default is $(TARGET_OUT)/etc/vintf. +# LOCAL_MODULE_STEM: optional. Name of output file. Default is $(LOCAL_MODULE). +# LOCAL_SRC_FILES: required. Local source files provided to assemble_vintf +# (command line argument -i). +# LOCAL_GENERATED_SOURCES: optional. Global source files provided to assemble_vintf +# (command line argument -i). +# +# LOCAL_ADD_VBMETA_VERSION: Use AVBTOOL to add avb version to the output matrix +# (corresponds to tag) +# LOCAL_ASSEMBLE_VINTF_ENV_VARS: Add a list of environment variable names from global variables in +# the build system that is lazily evaluated (e.g. PRODUCT_ENFORCE_VINTF_MANIFEST). +# LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE: Add a list of environment variables that is local to +# assemble_vintf invocation. Format is "VINTF_ENFORCE_NO_UNUSED_HALS=true". +# LOCAL_ASSEMBLE_VINTF_FLAGS: Add additional command line arguments to assemble_vintf invocation. +# LOCAL_KERNEL_VERSIONS: Parse kernel configurations and add to the output matrix +# (corresponds to tags.) +# LOCAL_GEN_FILE_DEPENDENCIES: A list of additional dependencies for the generated file. ifndef LOCAL_MODULE -LOCAL_MODULE := framework_$(LOCAL_MODULE_STEM) +$(error LOCAL_MODULE must be defined.) +endif + +ifndef LOCAL_MODULE_STEM +LOCAL_MODULE_STEM := $(LOCAL_MODULE) endif ifndef LOCAL_MODULE_CLASS @@ -81,13 +102,17 @@ my_matrix_src_files := \ $(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) +$(GEN): PRIVATE_ADDITIONAL_ENV_VARS := $(LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE) + +ifneq (,$(strip $(LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE))) +$(GEN): PRIVATE_COMMAND_TAIL := || (echo $(strip $(LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE)) && 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),\ + $(if $(findstring $(varname),$(PRIVATE_ADDITIONAL_ENV_VARS)),\ + $(error $(varname) should not be overridden by LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE.))) $(foreach varname,$(PRIVATE_ENV_VARS),$(varname)="$($(varname))") \ $(PRIVATE_ADDITIONAL_ENV_VARS) \ $(HOST_OUT_EXECUTABLES)/assemble_vintf \ @@ -101,8 +126,9 @@ LOCAL_GENERATED_SOURCES := LOCAL_ADD_VBMETA_VERSION := LOCAL_ASSEMBLE_VINTF_ENV_VARS := +LOCAL_ASSEMBLE_VINTF_ENV_VARS_OVERRIDE := +LOCAL_ASSEMBLE_VINTF_ERROR_MESSAGE := LOCAL_ASSEMBLE_VINTF_FLAGS := -LOCAL_WARN_REQUIRED_HALS := LOCAL_KERNEL_VERSIONS := LOCAL_GEN_FILE_DEPENDENCIES := my_matrix_src_files :=