diff --git a/core/node_fns.mk b/core/node_fns.mk index ccfcc25183..b81d60c0f5 100644 --- a/core/node_fns.mk +++ b/core/node_fns.mk @@ -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)) \ diff --git a/core/product.mk b/core/product.mk index 66570e4673..10e99a2ba4 100644 --- a/core/product.mk +++ b/core/product.mk @@ -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 :[:]. # 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 : 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