Merge "Add support for single-value product variables"

This commit is contained in:
Anton Hansson 2019-05-07 09:14:27 +00:00 committed by Gerrit Code Review
commit 3e29407793
2 changed files with 152 additions and 132 deletions

View file

@ -142,7 +142,8 @@ endef
#
# $(1): context prefix
# $(2): name of this node
# $(3): list of variable names
# $(3): list of node variable names
# $(4): list of single value variable names (subset of $(3))
#
define _expand-inherited-values
$(foreach v,$(3), \
@ -154,15 +155,21 @@ define _expand-inherited-values
$(patsubst $(INHERIT_TAG)%,%, \
$(filter $(INHERIT_TAG)%, $($(_eiv_tv)) \
)))) \
$(eval ### "Whether this variable should only take a single value") \
$(eval _eiv_sv := $(filter $(v),$(4))) \
$(foreach i,$(_eiv_i), \
$(eval ### "Make sure that this inherit appears only once") \
$(eval $(_eiv_tv) := \
$(call uniq-word,$($(_eiv_tv)),$(INHERIT_TAG)$(i))) \
$(eval ### "The expanded value, empty if we want a single value and have one") \
$(eval _eiv_ev := \
$(if $(and $(_eiv_sv),$(filter-out $(INHERIT_TAG)%,$($(_eiv_tv)))),,\
$($(1).$(i).$(v)) \
) \
) \
$(eval ### "Expand the inherit tag") \
$(eval $(_eiv_tv) := \
$(strip \
$(patsubst $(INHERIT_TAG)$(i),$($(1).$(i).$(v)), \
$($(_eiv_tv))))) \
$(strip $(patsubst $(INHERIT_TAG)$(i),$(_eiv_ev),$($(_eiv_tv))))) \
$(eval ### "Clear the child so DAGs don't create duplicate entries" ) \
$(eval $(1).$(i).$(v) :=) \
$(eval ### "If we just inherited ourselves, it's a cycle.") \
@ -180,6 +187,7 @@ endef
# $(1): context prefix
# $(2): makefile representing this node
# $(3): list of node variable names
# $(4): list of single value variable names (subset of $(3))
#
# _include_stack contains the list of included files, with the most recent files first.
define _import-node
@ -198,7 +206,7 @@ define _import-node
$(call get-inherited-nodes,$(1).$(2),$(3)))
$(call _import-nodes-inner,$(1),$($(1).$(2).inherited),$(3))
$(call _expand-inherited-values,$(1),$(2),$(3))
$(call _expand-inherited-values,$(1),$(2),$(3),$(4))
$(eval $(1).$(2).inherited :=)
$(eval _include_stack := $(wordlist 2,9999,$$(_include_stack)))
@ -215,6 +223,7 @@ endef
# $(1): context prefix
# $(2): list of makefiles representing nodes to import
# $(3): list of node variable names
# $(4): list of single value variable names (subset of $(3))
#
#TODO: Make the "does not exist" message more helpful;
# should print out the name of the file trying to include it.
@ -225,7 +234,7 @@ define _import-nodes-inner
$(eval ### "skipping already-imported $(_in)") \
, \
$(eval $(1).$(_in).seen := true) \
$(call _import-node,$(1),$(strip $(_in)),$(3)) \
$(call _import-node,$(1),$(strip $(_in)),$(3),$(4)) \
) \
, \
$(error $(1): "$(_in)" does not exist) \
@ -237,6 +246,8 @@ endef
# $(1): output list variable name, like "PRODUCTS" or "DEVICES"
# $(2): list of makefiles representing nodes to import
# $(3): list of node variable names
# $(4): list with subset of variable names that take only a single value, instead
# of the default list semantics
#
define import-nodes
$(if \
@ -245,7 +256,7 @@ $(if \
$(if $(_include_stack),$(eval $(error ASSERTION FAILED: _include_stack \
should be empty here: $(_include_stack))),) \
$(eval _include_stack := ) \
$(call _import-nodes-inner,$(_node_import_context),$(_in),$(3)) \
$(call _import-nodes-inner,$(_node_import_context),$(_in),$(3),$(4)) \
$(call move-var-list,$(_node_import_context).$(_in),$(1).$(_in),$(3)) \
$(eval _node_import_context :=) \
$(eval $(1) := $($(1)) $(_in)) \

View file

@ -106,30 +106,37 @@ define get-all-product-makefiles
$(call get-product-makefiles,$(_find-android-products-files))
endef
_product_var_list :=
_product_var_list += PRODUCT_NAME
_product_var_list += PRODUCT_MODEL
# Variables that are meant to hold only a single value.
# - The value set in the current makefile takes precedence over inherited values
# - If multiple inherited makefiles set the var, the first-inherited value wins
_product_single_value_vars :=
# Variables that are lists of values.
_product_list_vars :=
_product_list_vars += PRODUCT_NAME
_product_list_vars += PRODUCT_MODEL
# The resoure configuration options to use for this product.
_product_var_list += PRODUCT_LOCALES
_product_var_list += PRODUCT_AAPT_CONFIG
_product_var_list += PRODUCT_AAPT_PREF_CONFIG
_product_var_list += PRODUCT_AAPT_PREBUILT_DPI
_product_var_list += PRODUCT_HOST_PACKAGES
_product_var_list += PRODUCT_PACKAGES
_product_var_list += PRODUCT_PACKAGES_DEBUG
_product_var_list += PRODUCT_PACKAGES_DEBUG_ASAN
_product_var_list += PRODUCT_PACKAGES_ENG
_product_var_list += PRODUCT_PACKAGES_TESTS
_product_list_vars += PRODUCT_LOCALES
_product_list_vars += PRODUCT_AAPT_CONFIG
_product_list_vars += PRODUCT_AAPT_PREF_CONFIG
_product_list_vars += PRODUCT_AAPT_PREBUILT_DPI
_product_list_vars += PRODUCT_HOST_PACKAGES
_product_list_vars += PRODUCT_PACKAGES
_product_list_vars += PRODUCT_PACKAGES_DEBUG
_product_list_vars += PRODUCT_PACKAGES_DEBUG_ASAN
_product_list_vars += PRODUCT_PACKAGES_ENG
_product_list_vars += PRODUCT_PACKAGES_TESTS
# The device that this product maps to.
_product_var_list += PRODUCT_DEVICE
_product_var_list += PRODUCT_MANUFACTURER
_product_var_list += PRODUCT_BRAND
_product_list_vars += PRODUCT_DEVICE
_product_list_vars += PRODUCT_MANUFACTURER
_product_list_vars += PRODUCT_BRAND
# These PRODUCT_SYSTEM_* flags, if defined, are used in place of the
# corresponding PRODUCT_* flags for the sysprops on /system.
_product_var_list += \
_product_list_vars += \
PRODUCT_SYSTEM_NAME \
PRODUCT_SYSTEM_MODEL \
PRODUCT_SYSTEM_DEVICE \
@ -138,24 +145,24 @@ _product_var_list += \
# A list of property assignments, like "key = value", with zero or more
# whitespace characters on either side of the '='.
_product_var_list += PRODUCT_PROPERTY_OVERRIDES
_product_list_vars += PRODUCT_PROPERTY_OVERRIDES
# A list of property assignments, like "key = value", with zero or more
# whitespace characters on either side of the '='.
# used for adding properties to default.prop
_product_var_list += PRODUCT_DEFAULT_PROPERTY_OVERRIDES
_product_list_vars += PRODUCT_DEFAULT_PROPERTY_OVERRIDES
# A list of property assignments, like "key = value", with zero or more
# whitespace characters on either side of the '='.
# used for adding properties to build.prop of product partition
_product_var_list += PRODUCT_PRODUCT_PROPERTIES
_product_list_vars += PRODUCT_PRODUCT_PROPERTIES
# A list of property assignments, like "key = value", with zero or more
# whitespace characters on either side of the '='.
# used for adding properties to build.prop of product partition
_product_var_list += PRODUCT_PRODUCT_SERVICES_PROPERTIES
_product_var_list += PRODUCT_ODM_PROPERTIES
_product_var_list += PRODUCT_CHARACTERISTICS
_product_list_vars += PRODUCT_PRODUCT_SERVICES_PROPERTIES
_product_list_vars += PRODUCT_ODM_PROPERTIES
_product_list_vars += PRODUCT_CHARACTERISTICS
# A list of words like <source path>:<destination path>[:<owner>].
# The file at the source path should be copied to the destination path
@ -163,157 +170,157 @@ _product_var_list += PRODUCT_CHARACTERISTICS
# $(PRODUCT_OUT), so it should look like, e.g., "system/etc/file.xml".
# The rules for these copy steps are defined in build/make/core/Makefile.
# The optional :<owner> is used to indicate the owner of a vendor file.
_product_var_list += PRODUCT_COPY_FILES
_product_list_vars += PRODUCT_COPY_FILES
# The OTA key(s) specified by the product config, if any. The names
# of these keys are stored in the target-files zip so that post-build
# signing tools can substitute them for the test key embedded by
# default.
_product_var_list += PRODUCT_OTA_PUBLIC_KEYS
_product_var_list += PRODUCT_EXTRA_RECOVERY_KEYS
_product_list_vars += PRODUCT_OTA_PUBLIC_KEYS
_product_list_vars += PRODUCT_EXTRA_RECOVERY_KEYS
# Should we use the default resources or add any product specific overlays
_product_var_list += PRODUCT_PACKAGE_OVERLAYS
_product_var_list += DEVICE_PACKAGE_OVERLAYS
_product_list_vars += PRODUCT_PACKAGE_OVERLAYS
_product_list_vars += DEVICE_PACKAGE_OVERLAYS
# Resource overlay list which must be excluded from enforcing RRO.
_product_var_list += PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS
_product_list_vars += PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS
# Package list to apply enforcing RRO.
_product_var_list += PRODUCT_ENFORCE_RRO_TARGETS
_product_list_vars += PRODUCT_ENFORCE_RRO_TARGETS
_product_var_list += PRODUCT_SDK_ATREE_FILES
_product_var_list += PRODUCT_SDK_ADDON_NAME
_product_var_list += PRODUCT_SDK_ADDON_COPY_FILES
_product_var_list += PRODUCT_SDK_ADDON_COPY_MODULES
_product_var_list += PRODUCT_SDK_ADDON_DOC_MODULES
_product_var_list += PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP
_product_list_vars += PRODUCT_SDK_ATREE_FILES
_product_list_vars += PRODUCT_SDK_ADDON_NAME
_product_list_vars += PRODUCT_SDK_ADDON_COPY_FILES
_product_list_vars += PRODUCT_SDK_ADDON_COPY_MODULES
_product_list_vars += PRODUCT_SDK_ADDON_DOC_MODULES
_product_list_vars += PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP
# which Soong namespaces to export to Make
_product_var_list += PRODUCT_SOONG_NAMESPACES
_product_list_vars += PRODUCT_SOONG_NAMESPACES
_product_var_list += PRODUCT_DEFAULT_WIFI_CHANNELS
_product_var_list += PRODUCT_DEFAULT_DEV_CERTIFICATE
_product_var_list += PRODUCT_RESTRICT_VENDOR_FILES
_product_list_vars += PRODUCT_DEFAULT_WIFI_CHANNELS
_product_list_vars += PRODUCT_DEFAULT_DEV_CERTIFICATE
_product_list_vars += PRODUCT_RESTRICT_VENDOR_FILES
# The list of product-specific kernel header dirs
_product_var_list += PRODUCT_VENDOR_KERNEL_HEADERS
_product_list_vars += PRODUCT_VENDOR_KERNEL_HEADERS
# A list of module names of BOOTCLASSPATH (jar files)
_product_var_list += PRODUCT_BOOT_JARS
_product_var_list += PRODUCT_SUPPORTS_BOOT_SIGNER
_product_var_list += PRODUCT_SUPPORTS_VBOOT
_product_var_list += PRODUCT_SUPPORTS_VERITY
_product_var_list += PRODUCT_SUPPORTS_VERITY_FEC
_product_var_list += PRODUCT_OEM_PROPERTIES
_product_list_vars += PRODUCT_BOOT_JARS
_product_list_vars += PRODUCT_SUPPORTS_BOOT_SIGNER
_product_list_vars += PRODUCT_SUPPORTS_VBOOT
_product_list_vars += PRODUCT_SUPPORTS_VERITY
_product_list_vars += PRODUCT_SUPPORTS_VERITY_FEC
_product_list_vars += PRODUCT_OEM_PROPERTIES
# A list of property assignments, like "key = value", with zero or more
# whitespace characters on either side of the '='.
# used for adding properties to default.prop of system partition
_product_var_list += PRODUCT_SYSTEM_DEFAULT_PROPERTIES
_product_list_vars += PRODUCT_SYSTEM_DEFAULT_PROPERTIES
_product_var_list += PRODUCT_SYSTEM_PROPERTY_BLACKLIST
_product_var_list += PRODUCT_VENDOR_PROPERTY_BLACKLIST
_product_var_list += PRODUCT_SYSTEM_SERVER_APPS
_product_var_list += PRODUCT_SYSTEM_SERVER_JARS
_product_list_vars += PRODUCT_SYSTEM_PROPERTY_BLACKLIST
_product_list_vars += PRODUCT_VENDOR_PROPERTY_BLACKLIST
_product_list_vars += PRODUCT_SYSTEM_SERVER_APPS
_product_list_vars += PRODUCT_SYSTEM_SERVER_JARS
# All of the apps that we force preopt, this overrides WITH_DEXPREOPT.
_product_var_list += PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK
_product_var_list += PRODUCT_DEXPREOPT_SPEED_APPS
_product_var_list += PRODUCT_LOADED_BY_PRIVILEGED_MODULES
_product_var_list += PRODUCT_VBOOT_SIGNING_KEY
_product_var_list += PRODUCT_VBOOT_SIGNING_SUBKEY
_product_var_list += PRODUCT_VERITY_SIGNING_KEY
_product_var_list += PRODUCT_SYSTEM_VERITY_PARTITION
_product_var_list += PRODUCT_VENDOR_VERITY_PARTITION
_product_var_list += PRODUCT_PRODUCT_VERITY_PARTITION
_product_var_list += PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION
_product_var_list += PRODUCT_ODM_VERITY_PARTITION
_product_var_list += PRODUCT_SYSTEM_SERVER_DEBUG_INFO
_product_var_list += PRODUCT_OTHER_JAVA_DEBUG_INFO
_product_list_vars += PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK
_product_list_vars += PRODUCT_DEXPREOPT_SPEED_APPS
_product_list_vars += PRODUCT_LOADED_BY_PRIVILEGED_MODULES
_product_list_vars += PRODUCT_VBOOT_SIGNING_KEY
_product_list_vars += PRODUCT_VBOOT_SIGNING_SUBKEY
_product_list_vars += PRODUCT_VERITY_SIGNING_KEY
_product_list_vars += PRODUCT_SYSTEM_VERITY_PARTITION
_product_list_vars += PRODUCT_VENDOR_VERITY_PARTITION
_product_list_vars += PRODUCT_PRODUCT_VERITY_PARTITION
_product_list_vars += PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION
_product_list_vars += PRODUCT_ODM_VERITY_PARTITION
_product_list_vars += PRODUCT_SYSTEM_SERVER_DEBUG_INFO
_product_list_vars += PRODUCT_OTHER_JAVA_DEBUG_INFO
# Per-module dex-preopt configs.
_product_var_list += PRODUCT_DEX_PREOPT_MODULE_CONFIGS
_product_var_list += PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
_product_var_list += PRODUCT_DEX_PREOPT_DEFAULT_FLAGS
_product_var_list += PRODUCT_DEX_PREOPT_BOOT_FLAGS
_product_var_list += PRODUCT_DEX_PREOPT_PROFILE_DIR
_product_var_list += PRODUCT_DEX_PREOPT_GENERATE_DM_FILES
_product_var_list += PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING
_product_var_list += PRODUCT_DEX_PREOPT_RESOLVE_STARTUP_STRINGS
_product_list_vars += PRODUCT_DEX_PREOPT_MODULE_CONFIGS
_product_list_vars += PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER
_product_list_vars += PRODUCT_DEX_PREOPT_DEFAULT_FLAGS
_product_list_vars += PRODUCT_DEX_PREOPT_BOOT_FLAGS
_product_list_vars += PRODUCT_DEX_PREOPT_PROFILE_DIR
_product_list_vars += PRODUCT_DEX_PREOPT_GENERATE_DM_FILES
_product_list_vars += PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING
_product_list_vars += PRODUCT_DEX_PREOPT_RESOLVE_STARTUP_STRINGS
# Boot image options.
_product_var_list += \
_product_list_vars += \
PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE \
PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION \
PRODUCT_USES_DEFAULT_ART_CONFIG \
_product_var_list += PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
_product_list_vars += PRODUCT_SYSTEM_SERVER_COMPILER_FILTER
# Per-module sanitizer configs
_product_var_list += PRODUCT_SANITIZER_MODULE_CONFIGS
_product_var_list += PRODUCT_SYSTEM_BASE_FS_PATH
_product_var_list += PRODUCT_VENDOR_BASE_FS_PATH
_product_var_list += PRODUCT_PRODUCT_BASE_FS_PATH
_product_var_list += PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH
_product_var_list += PRODUCT_ODM_BASE_FS_PATH
_product_var_list += PRODUCT_SHIPPING_API_LEVEL
_product_var_list += VENDOR_PRODUCT_RESTRICT_VENDOR_FILES
_product_var_list += VENDOR_EXCEPTION_MODULES
_product_var_list += VENDOR_EXCEPTION_PATHS
_product_list_vars += PRODUCT_SANITIZER_MODULE_CONFIGS
_product_list_vars += PRODUCT_SYSTEM_BASE_FS_PATH
_product_list_vars += PRODUCT_VENDOR_BASE_FS_PATH
_product_list_vars += PRODUCT_PRODUCT_BASE_FS_PATH
_product_list_vars += PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH
_product_list_vars += PRODUCT_ODM_BASE_FS_PATH
_product_list_vars += PRODUCT_SHIPPING_API_LEVEL
_product_list_vars += VENDOR_PRODUCT_RESTRICT_VENDOR_FILES
_product_list_vars += VENDOR_EXCEPTION_MODULES
_product_list_vars += VENDOR_EXCEPTION_PATHS
# Whether the product wants to ship libartd. For rules and meaning, see art/Android.mk.
_product_var_list += PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD
_product_list_vars += PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD
# Make this art variable visible to soong_config.mk.
_product_var_list += PRODUCT_ART_USE_READ_BARRIER
_product_list_vars += PRODUCT_ART_USE_READ_BARRIER
# Whether the product is an Android Things variant.
_product_var_list += PRODUCT_IOT
_product_list_vars += PRODUCT_IOT
# Add reserved headroom to a system image.
_product_var_list += PRODUCT_SYSTEM_HEADROOM
_product_list_vars += PRODUCT_SYSTEM_HEADROOM
# Whether to save disk space by minimizing java debug info
_product_var_list += PRODUCT_MINIMIZE_JAVA_DEBUG_INFO
_product_list_vars += PRODUCT_MINIMIZE_JAVA_DEBUG_INFO
# Whether any paths are excluded from sanitization when SANITIZE_TARGET=integer_overflow
_product_var_list += PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS
_product_list_vars += PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS
_product_var_list += PRODUCT_ADB_KEYS
_product_list_vars += PRODUCT_ADB_KEYS
# Whether any paths should have CFI enabled for components
_product_var_list += PRODUCT_CFI_INCLUDE_PATHS
_product_list_vars += PRODUCT_CFI_INCLUDE_PATHS
# Whether any paths are excluded from sanitization when SANITIZE_TARGET=cfi
_product_var_list += PRODUCT_CFI_EXCLUDE_PATHS
_product_list_vars += PRODUCT_CFI_EXCLUDE_PATHS
# Whether the Scudo hardened allocator is disabled platform-wide
_product_var_list += PRODUCT_DISABLE_SCUDO
_product_list_vars += PRODUCT_DISABLE_SCUDO
# A flag to override PRODUCT_COMPATIBLE_PROPERTY
_product_var_list += PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE
_product_list_vars += PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE
# Whether the whitelist of actionable compatible properties should be disabled or not
_product_var_list += PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE
_product_var_list += PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS
_product_var_list += PRODUCT_ENFORCE_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT
_product_var_list += PRODUCT_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT_WHITELIST
_product_var_list += PRODUCT_ARTIFACT_PATH_REQUIREMENT_HINT
_product_var_list += PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST
_product_list_vars += PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE
_product_list_vars += PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS
_product_list_vars += PRODUCT_ENFORCE_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT
_product_list_vars += PRODUCT_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT_WHITELIST
_product_list_vars += PRODUCT_ARTIFACT_PATH_REQUIREMENT_HINT
_product_list_vars += PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST
# List of modules that should be forcefully unmarked from being LOCAL_PRODUCT_MODULE, and hence
# installed on /system directory by default.
_product_var_list += PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION
_product_list_vars += PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION
# When this is true, dynamic partitions is retrofitted on a device that has
# already been launched without dynamic partitions. Otherwise, the device
# is launched with dynamic partitions.
# This flag implies PRODUCT_USE_DYNAMIC_PARTITIONS.
_product_var_list += PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
_product_list_vars += PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
# Other dynamic partition feature flags.PRODUCT_USE_DYNAMIC_PARTITION_SIZE and
# PRODUCT_BUILD_SUPER_PARTITION default to the value of PRODUCT_USE_DYNAMIC_PARTITIONS.
_product_var_list += \
_product_list_vars += \
PRODUCT_USE_DYNAMIC_PARTITIONS \
PRODUCT_USE_DYNAMIC_PARTITION_SIZE \
PRODUCT_BUILD_SUPER_PARTITION \
@ -322,33 +329,35 @@ _product_var_list += \
# during OTA). Otherwise, kernel configuration requirements are enforced in VTS.
# Devices that checks the running kernel (instead of the kernel in OTA package) should not
# set this variable to prevent OTA failures.
_product_var_list += PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
_product_list_vars += PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
# If set to true, this product builds a generic OTA package, which installs generic system images
# onto matching devices. The product may only build a subset of system images (e.g. only
# system.img), so devices need to install the package in a system-only OTA manner.
_product_var_list += PRODUCT_BUILD_GENERIC_OTA_PACKAGE
_product_list_vars += PRODUCT_BUILD_GENERIC_OTA_PACKAGE
# Whether any paths are excluded from being set XOM when ENABLE_XOM=true
_product_var_list += PRODUCT_XOM_EXCLUDE_PATHS
_product_var_list += PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES
_product_var_list += PRODUCT_PACKAGE_NAME_OVERRIDES
_product_var_list += PRODUCT_CERTIFICATE_OVERRIDES
_product_var_list += PRODUCT_BUILD_SYSTEM_IMAGE
_product_var_list += PRODUCT_BUILD_SYSTEM_OTHER_IMAGE
_product_var_list += PRODUCT_BUILD_VENDOR_IMAGE
_product_var_list += PRODUCT_BUILD_PRODUCT_IMAGE
_product_var_list += PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE
_product_var_list += PRODUCT_BUILD_ODM_IMAGE
_product_var_list += PRODUCT_BUILD_CACHE_IMAGE
_product_var_list += PRODUCT_BUILD_RAMDISK_IMAGE
_product_var_list += PRODUCT_BUILD_USERDATA_IMAGE
_product_var_list += PRODUCT_UPDATABLE_BOOT_MODULES
_product_var_list += PRODUCT_UPDATABLE_BOOT_LOCATIONS
_product_list_vars += PRODUCT_XOM_EXCLUDE_PATHS
_product_list_vars += PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES
_product_list_vars += PRODUCT_PACKAGE_NAME_OVERRIDES
_product_list_vars += PRODUCT_CERTIFICATE_OVERRIDES
_product_list_vars += PRODUCT_BUILD_SYSTEM_IMAGE
_product_list_vars += PRODUCT_BUILD_SYSTEM_OTHER_IMAGE
_product_list_vars += PRODUCT_BUILD_VENDOR_IMAGE
_product_list_vars += PRODUCT_BUILD_PRODUCT_IMAGE
_product_list_vars += PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE
_product_list_vars += PRODUCT_BUILD_ODM_IMAGE
_product_list_vars += PRODUCT_BUILD_CACHE_IMAGE
_product_list_vars += PRODUCT_BUILD_RAMDISK_IMAGE
_product_list_vars += PRODUCT_BUILD_USERDATA_IMAGE
_product_list_vars += PRODUCT_UPDATABLE_BOOT_MODULES
_product_list_vars += PRODUCT_UPDATABLE_BOOT_LOCATIONS
# Whether the product would like to check prebuilt ELF files.
_product_var_list += PRODUCT_CHECK_ELF_FILES
.KATI_READONLY := _product_var_list
_product_list_vars += PRODUCT_CHECK_ELF_FILES
.KATI_READONLY := _product_single_value_vars _product_list_vars
_product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars)
define dump-product
$(warning ==== $(1) ====)\
@ -422,7 +431,7 @@ endef
#
#TODO: check to make sure that products have all the necessary vars defined
define import-products
$(call import-nodes,PRODUCTS,$(1),$(_product_var_list))
$(call import-nodes,PRODUCTS,$(1),$(_product_var_list),$(_product_single_value_vars))
endef