diff --git a/core/main.mk b/core/main.mk index 62d3719830..1fd53859f2 100644 --- a/core/main.mk +++ b/core/main.mk @@ -404,12 +404,8 @@ endif # Typical build; include any Android.mk files we can find. # -# Before we go and include all of the module makefiles, strip values for easier -# processing. -$(call strip-product-vars) -# Before we go and include all of the module makefiles, mark the PRODUCT_* -# and ADDITIONAL*PROPERTIES values readonly so that they won't be modified. -$(call readonly-product-vars) +# Strip and readonly a few more variables so they won't be modified. +$(readonly-final-product-vars) ADDITIONAL_DEFAULT_PROPERTIES := $(strip $(ADDITIONAL_DEFAULT_PROPERTIES)) .KATI_READONLY := ADDITIONAL_DEFAULT_PROPERTIES ADDITIONAL_BUILD_PROPERTIES := $(strip $(ADDITIONAL_BUILD_PROPERTIES)) diff --git a/core/product.mk b/core/product.mk index bb63ab8288..29bd1d1e40 100644 --- a/core/product.mk +++ b/core/product.mk @@ -106,138 +106,242 @@ define get-all-product-makefiles $(call get-product-makefiles,$(_find-android-products-files)) endef -# -# Functions for including product makefiles -# +_product_var_list := +_product_var_list += PRODUCT_NAME +_product_var_list += PRODUCT_MODEL -_product_var_list := \ - PRODUCT_NAME \ - PRODUCT_MODEL \ - PRODUCT_LOCALES \ - PRODUCT_AAPT_CONFIG \ - PRODUCT_AAPT_PREF_CONFIG \ - PRODUCT_AAPT_PREBUILT_DPI \ - PRODUCT_HOST_PACKAGES \ - PRODUCT_PACKAGES \ - PRODUCT_PACKAGES_DEBUG \ - PRODUCT_PACKAGES_DEBUG_ASAN \ - PRODUCT_PACKAGES_ENG \ - PRODUCT_PACKAGES_TESTS \ - PRODUCT_DEVICE \ - PRODUCT_MANUFACTURER \ - PRODUCT_BRAND \ +# 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 + +# The device that this product maps to. +_product_var_list += PRODUCT_DEVICE +_product_var_list += PRODUCT_MANUFACTURER +_product_var_list += 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_SYSTEM_NAME \ PRODUCT_SYSTEM_MODEL \ PRODUCT_SYSTEM_DEVICE \ PRODUCT_SYSTEM_BRAND \ PRODUCT_SYSTEM_MANUFACTURER \ - PRODUCT_PROPERTY_OVERRIDES \ - PRODUCT_DEFAULT_PROPERTY_OVERRIDES \ - PRODUCT_PRODUCT_PROPERTIES \ - PRODUCT_PRODUCT_SERVICES_PROPERTIES \ - PRODUCT_ODM_PROPERTIES \ - PRODUCT_CHARACTERISTICS \ - PRODUCT_COPY_FILES \ - PRODUCT_OTA_PUBLIC_KEYS \ - PRODUCT_EXTRA_RECOVERY_KEYS \ - PRODUCT_PACKAGE_OVERLAYS \ - DEVICE_PACKAGE_OVERLAYS \ - PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS \ - PRODUCT_ENFORCE_RRO_TARGETS \ - PRODUCT_SDK_ATREE_FILES \ - PRODUCT_SDK_ADDON_NAME \ - PRODUCT_SDK_ADDON_COPY_FILES \ - PRODUCT_SDK_ADDON_COPY_MODULES \ - PRODUCT_SDK_ADDON_DOC_MODULES \ - PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP \ - PRODUCT_SOONG_NAMESPACES \ - PRODUCT_DEFAULT_WIFI_CHANNELS \ - PRODUCT_DEFAULT_DEV_CERTIFICATE \ - PRODUCT_RESTRICT_VENDOR_FILES \ - PRODUCT_VENDOR_KERNEL_HEADERS \ - PRODUCT_BOOT_JARS \ - PRODUCT_SUPPORTS_BOOT_SIGNER \ - PRODUCT_SUPPORTS_VBOOT \ - PRODUCT_SUPPORTS_VERITY \ - PRODUCT_SUPPORTS_VERITY_FEC \ - PRODUCT_OEM_PROPERTIES \ - PRODUCT_SYSTEM_DEFAULT_PROPERTIES \ - PRODUCT_SYSTEM_PROPERTY_BLACKLIST \ - PRODUCT_VENDOR_PROPERTY_BLACKLIST \ - PRODUCT_SYSTEM_SERVER_APPS \ - PRODUCT_SYSTEM_SERVER_JARS \ - PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK \ - PRODUCT_DEXPREOPT_SPEED_APPS \ - PRODUCT_LOADED_BY_PRIVILEGED_MODULES \ - PRODUCT_VBOOT_SIGNING_KEY \ - PRODUCT_VBOOT_SIGNING_SUBKEY \ - PRODUCT_VERITY_SIGNING_KEY \ - PRODUCT_SYSTEM_VERITY_PARTITION \ - PRODUCT_VENDOR_VERITY_PARTITION \ - PRODUCT_PRODUCT_VERITY_PARTITION \ - PRODUCT_PRODUCT_SERVICES_VERITY_PARTITION \ - PRODUCT_ODM_VERITY_PARTITION \ - PRODUCT_SYSTEM_SERVER_DEBUG_INFO \ - PRODUCT_OTHER_JAVA_DEBUG_INFO \ - PRODUCT_DEX_PREOPT_MODULE_CONFIGS \ - PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER \ - PRODUCT_DEX_PREOPT_DEFAULT_FLAGS \ - PRODUCT_DEX_PREOPT_BOOT_FLAGS \ - PRODUCT_DEX_PREOPT_PROFILE_DIR \ - PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION \ - PRODUCT_DEX_PREOPT_GENERATE_DM_FILES \ - PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING \ + +# 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 + +# 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 + +# 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 + +# 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 + +# A list of words like :[:]. +# The file at the source path should be copied to the destination path +# when building this product. is relative to +# $(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 + +# 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 + +# Should we use the default resources or add any product specific overlays +_product_var_list += PRODUCT_PACKAGE_OVERLAYS +_product_var_list += DEVICE_PACKAGE_OVERLAYS + +# Resource overlay list which must be excluded from enforcing RRO. +_product_var_list += PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS + +# Package list to apply enforcing RRO. +_product_var_list += 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 + +# which Soong namespaces to export to Make +_product_var_list += PRODUCT_SOONG_NAMESPACES + +_product_var_list += PRODUCT_DEFAULT_WIFI_CHANNELS +_product_var_list += PRODUCT_DEFAULT_DEV_CERTIFICATE +_product_var_list += PRODUCT_RESTRICT_VENDOR_FILES + +# The list of product-specific kernel header dirs +_product_var_list += 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 + +# 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_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 + +# 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 + +# 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 + +# Boot image options. +_product_var_list += \ PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE \ - PRODUCT_SYSTEM_SERVER_COMPILER_FILTER \ - PRODUCT_SANITIZER_MODULE_CONFIGS \ - PRODUCT_SYSTEM_BASE_FS_PATH \ - PRODUCT_VENDOR_BASE_FS_PATH \ - PRODUCT_PRODUCT_BASE_FS_PATH \ - PRODUCT_PRODUCT_SERVICES_BASE_FS_PATH \ - PRODUCT_ODM_BASE_FS_PATH \ - PRODUCT_SHIPPING_API_LEVEL \ - VENDOR_PRODUCT_RESTRICT_VENDOR_FILES \ - VENDOR_EXCEPTION_MODULES \ - VENDOR_EXCEPTION_PATHS \ - PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD \ - PRODUCT_ART_USE_READ_BARRIER \ - PRODUCT_IOT \ - PRODUCT_SYSTEM_HEADROOM \ - PRODUCT_MINIMIZE_JAVA_DEBUG_INFO \ - PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS \ - PRODUCT_ADB_KEYS \ - PRODUCT_CFI_INCLUDE_PATHS \ - PRODUCT_CFI_EXCLUDE_PATHS \ - PRODUCT_DISABLE_SCUDO \ - PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE \ - PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE \ - PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS \ - PRODUCT_ENFORCE_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT \ - PRODUCT_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT_WHITELIST \ - PRODUCT_ARTIFACT_PATH_REQUIREMENT_HINT \ - PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST \ + PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION \ + +_product_var_list += 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 + +# Whether the product wants to ship libartd. For rules and meaning, see art/Android.mk. +_product_var_list += PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD + +# Make this art variable visible to soong_config.mk. +_product_var_list += PRODUCT_ART_USE_READ_BARRIER + +# Whether the product is an Android Things variant. +_product_var_list += PRODUCT_IOT + +# Add reserved headroom to a system image. +_product_var_list += PRODUCT_SYSTEM_HEADROOM + +# Whether to save disk space by minimizing java debug info +_product_var_list += 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_var_list += PRODUCT_ADB_KEYS + +# Whether any paths should have CFI enabled for components +_product_var_list += PRODUCT_CFI_INCLUDE_PATHS + +# Whether any paths are excluded from sanitization when SANITIZE_TARGET=cfi +_product_var_list += PRODUCT_CFI_EXCLUDE_PATHS + +# Whether the Scudo hardened allocator is disabled platform-wide +_product_var_list += PRODUCT_DISABLE_SCUDO + +# A flag to override PRODUCT_COMPATIBLE_PROPERTY +_product_var_list += 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 + +# 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 + +# 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 + +# 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_USE_DYNAMIC_PARTITIONS \ PRODUCT_USE_DYNAMIC_PARTITION_SIZE \ PRODUCT_BUILD_SUPER_PARTITION \ - PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION \ - PRODUCT_USE_DYNAMIC_PARTITIONS \ - PRODUCT_RETROFIT_DYNAMIC_PARTITIONS \ - PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS \ - PRODUCT_XOM_EXCLUDE_PATHS \ - PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES \ - PRODUCT_PACKAGE_NAME_OVERRIDES \ - PRODUCT_CERTIFICATE_OVERRIDES \ - PRODUCT_BUILD_SYSTEM_IMAGE \ - PRODUCT_BUILD_SYSTEM_OTHER_IMAGE \ - PRODUCT_BUILD_VENDOR_IMAGE \ - PRODUCT_BUILD_PRODUCT_IMAGE \ - PRODUCT_BUILD_PRODUCT_SERVICES_IMAGE \ - PRODUCT_BUILD_ODM_IMAGE \ - PRODUCT_BUILD_CACHE_IMAGE \ - PRODUCT_BUILD_RAMDISK_IMAGE \ - PRODUCT_BUILD_USERDATA_IMAGE \ - PRODUCT_UPDATABLE_BOOT_MODULES \ - PRODUCT_UPDATABLE_BOOT_LOCATIONS \ - PRODUCT_CHECK_ELF_FILES \ + +# If set, kernel configuration requirements are present in OTA package (and will be enforced +# 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 + +# 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 + +# Whether the product would like to check prebuilt ELF files. +_product_var_list += PRODUCT_CHECK_ELF_FILES +.KATI_READONLY := _product_var_list define dump-product $(warning ==== $(1) ====)\ @@ -250,6 +354,10 @@ define dump-products $(foreach p,$(PRODUCTS),$(call dump-product,$(p))) endef +# +# Functions for including product makefiles +# + # # $(1): product to inherit # @@ -372,26 +480,44 @@ define resolve-short-product-name $(strip $(call _resolve-short-product-name,$(1))) endef -_product_stash_var_list := $(_product_var_list) -# TODO: Move this to board_config.mk when no longer set in product makefiles -_product_stash_var_list += WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY -_product_strip_var_list := +# BoardConfig variables that are also inherited in product mks. Should ideally +# be cleaned up to not be product variables. +_readonly_late_variables := \ + DEVICE_PACKAGE_OVERLAYS \ + WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY \ + +# Modified internally in the build system +_readonly_late_variables += \ + PRODUCT_COPY_FILES \ + PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING \ + PRODUCT_DEX_PREOPT_BOOT_FLAGS \ + +_readonly_early_variables := $(filter-out $(_readonly_late_variables),$(_product_var_list)) # # Mark the variables in _product_stash_var_list as readonly # -define readonly-product-vars -$(foreach v,$(_product_stash_var_list), \ +define readonly-variables +$(foreach v,$(1), \ $(eval $(v) ?=) \ $(eval .KATI_READONLY := $(v)) \ ) endef +define readonly-product-vars +$(call readonly-variables,$(_readonly_early_variables)) +endef + +define readonly-final-product-vars +$(call readonly-variables,$(_readonly_late_variables)) +endef # # Strip the variables in _product_strip_var_list # define strip-product-vars -$(foreach v,$(_product_strip_var_list),$(eval $(v) := $(strip $($(v))))) +$(foreach v,$(_product_var_list), \ + $(eval $(v) := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).$(v)))) \ +) endef define add-to-product-copy-files-if-exists diff --git a/core/product_config.mk b/core/product_config.mk index 7ab1d6d17c..a088f069c9 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -252,29 +252,19 @@ current_product_makefile := all_product_makefiles := all_product_configs := +############################################################################ +# Strip and assign the PRODUCT_ variables. +$(call strip-product-vars) ############################################################################# +# Sanity check and assign default values -# A list of module names of BOOTCLASSPATH (jar files) -PRODUCT_BOOT_JARS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BOOT_JARS)) -PRODUCT_UPDATABLE_BOOT_MODULES := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_UPDATABLE_BOOT_MODULES)) -PRODUCT_UPDATABLE_BOOT_LOCATIONS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_UPDATABLE_BOOT_LOCATIONS)) -PRODUCT_SYSTEM_SERVER_JARS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_SERVER_JARS)) -PRODUCT_SYSTEM_SERVER_APPS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_SERVER_APPS)) -PRODUCT_DEXPREOPT_SPEED_APPS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEXPREOPT_SPEED_APPS)) -PRODUCT_LOADED_BY_PRIVILEGED_MODULES := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_LOADED_BY_PRIVILEGED_MODULES)) +TARGET_DEVICE := $(PRODUCT_DEVICE) -# All of the apps that we force preopt, this overrides WITH_DEXPREOPT. -PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK)) - -# Find the device that this product maps to. -TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE) +# TODO: also keep track of things like "port", "land" in product files. # Figure out which resoure configuration options to use for this # product. -PRODUCT_LOCALES := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_LOCALES)) -# TODO: also keep track of things like "port", "land" in product files. - # If CUSTOM_LOCALES contains any locales not already included # in PRODUCT_LOCALES, add them to PRODUCT_LOCALES. extra_locales := $(filter-out $(PRODUCT_LOCALES),$(CUSTOM_LOCALES)) @@ -288,170 +278,55 @@ ifneq (,$(extra_locales)) endif # Add PRODUCT_LOCALES to PRODUCT_AAPT_CONFIG -PRODUCT_AAPT_CONFIG := $(strip $(PRODUCT_LOCALES) $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_AAPT_CONFIG)) -PRODUCT_AAPT_PREF_CONFIG := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_AAPT_PREF_CONFIG)) -PRODUCT_AAPT_PREBUILT_DPI := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_AAPT_PREBUILT_DPI)) +PRODUCT_AAPT_CONFIG := $(PRODUCT_LOCALES) $(PRODUCT_AAPT_CONFIG) # Keep a copy of the space-separated config PRODUCT_AAPT_CONFIG_SP := $(PRODUCT_AAPT_CONFIG) +PRODUCT_AAPT_CONFIG := $(subst $(space),$(comma),$(PRODUCT_AAPT_CONFIG)) -# Convert spaces to commas. -PRODUCT_AAPT_CONFIG := \ - $(subst $(space),$(comma),$(strip $(PRODUCT_AAPT_CONFIG))) - -PRODUCT_SYSTEM_NAME := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_NAME)) ifndef PRODUCT_SYSTEM_NAME - PRODUCT_SYSTEM_NAME := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_NAME)) + PRODUCT_SYSTEM_NAME := $(PRODUCT_NAME) endif - -PRODUCT_SYSTEM_DEVICE := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_DEVICE)) ifndef PRODUCT_SYSTEM_DEVICE - PRODUCT_SYSTEM_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE) + PRODUCT_SYSTEM_DEVICE := $(PRODUCT_DEVICE) endif - -PRODUCT_BRAND := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BRAND)) -PRODUCT_SYSTEM_BRAND := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_BRAND)) ifndef PRODUCT_SYSTEM_BRAND PRODUCT_SYSTEM_BRAND := $(PRODUCT_BRAND) endif - -PRODUCT_MODEL := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_MODEL)) ifndef PRODUCT_MODEL - PRODUCT_MODEL := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_NAME)) + PRODUCT_MODEL := $(PRODUCT_NAME) endif -PRODUCT_SYSTEM_MODEL := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_MODEL)) ifndef PRODUCT_SYSTEM_MODEL PRODUCT_SYSTEM_MODEL := $(PRODUCT_MODEL) endif -PRODUCT_MANUFACTURER := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_MANUFACTURER)) ifndef PRODUCT_MANUFACTURER PRODUCT_MANUFACTURER := unknown endif -PRODUCT_SYSTEM_MANUFACTURER := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_MANUFACTURER)) ifndef PRODUCT_SYSTEM_MANUFACTURER PRODUCT_SYSTEM_MANUFACTURER := $(PRODUCT_MANUFACTURER) endif -ifeq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CHARACTERISTICS),) +ifndef PRODUCT_CHARACTERISTICS TARGET_AAPT_CHARACTERISTICS := default else - TARGET_AAPT_CHARACTERISTICS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CHARACTERISTICS)) + TARGET_AAPT_CHARACTERISTICS := $(PRODUCT_CHARACTERISTICS) endif -PRODUCT_DEFAULT_WIFI_CHANNELS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEFAULT_WIFI_CHANNELS)) - -PRODUCT_DEFAULT_DEV_CERTIFICATE := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEFAULT_DEV_CERTIFICATE)) ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE -ifneq (1,$(words $(PRODUCT_DEFAULT_DEV_CERTIFICATE))) + ifneq (1,$(words $(PRODUCT_DEFAULT_DEV_CERTIFICATE))) $(error PRODUCT_DEFAULT_DEV_CERTIFICATE='$(PRODUCT_DEFAULT_DEV_CERTIFICATE)', \ only 1 certificate is allowed.) -endif + endif endif -# A list of words like :[:]. -# The file at the source path should be copied to the destination path -# when building this product. is relative to -# $(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_COPY_FILES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_COPY_FILES)) +ENFORCE_SYSTEM_CERTIFICATE := $(PRODUCT_ENFORCE_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT) +ENFORCE_SYSTEM_CERTIFICATE_WHITELIST := $(PRODUCT_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT_WHITELIST) -# A list of property assignments, like "key = value", with zero or more -# whitespace characters on either side of the '='. -PRODUCT_PROPERTY_OVERRIDES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PROPERTY_OVERRIDES)) -.KATI_READONLY := PRODUCT_PROPERTY_OVERRIDES - -PRODUCT_SHIPPING_API_LEVEL := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SHIPPING_API_LEVEL)) - -# 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_DEFAULT_PROPERTY_OVERRIDES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEFAULT_PROPERTY_OVERRIDES)) - -.KATI_READONLY := 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 default.prop of system partition -PRODUCT_SYSTEM_DEFAULT_PROPERTIES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_DEFAULT_PROPERTIES)) -.KATI_READONLY := PRODUCT_SYSTEM_DEFAULT_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_PRODUCT_PROPERTIES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_PROPERTIES)) -.KATI_READONLY := PRODUCT_PRODUCT_PROPERTIES - -ENFORCE_SYSTEM_CERTIFICATE := \ - $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ENFORCE_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT) - -ENFORCE_SYSTEM_CERTIFICATE_WHITELIST := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ARTIFACT_SYSTEM_CERTIFICATE_REQUIREMENT_WHITELIST)) - -# 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_PRODUCT_SERVICES_PROPERTIES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_SERVICES_PROPERTIES)) -.KATI_READONLY := PRODUCT_PRODUCT_SERVICES_PROPERTIES - -# Should we use the default resources or add any product specific overlays -PRODUCT_PACKAGE_OVERLAYS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGE_OVERLAYS)) -DEVICE_PACKAGE_OVERLAYS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).DEVICE_PACKAGE_OVERLAYS)) - -# The list of product-specific kernel header dirs -PRODUCT_VENDOR_KERNEL_HEADERS := \ - $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_KERNEL_HEADERS) - -# 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_OTA_PUBLIC_KEYS := $(sort \ - $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_OTA_PUBLIC_KEYS)) - -PRODUCT_EXTRA_RECOVERY_KEYS := $(sort \ - $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_EXTRA_RECOVERY_KEYS)) - -PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_DEFAULT_COMPILER_FILTER)) -PRODUCT_DEX_PREOPT_DEFAULT_FLAGS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_DEFAULT_FLAGS)) -PRODUCT_DEX_PREOPT_GENERATE_DM_FILES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_GENERATE_DM_FILES)) -PRODUCT_DEX_PREOPT_BOOT_FLAGS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_BOOT_FLAGS)) -PRODUCT_DEX_PREOPT_PROFILE_DIR := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_PROFILE_DIR)) -PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_NEVER_ALLOW_STRIPPING)) - -# Boot image options. -PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE)) -PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION)) - -PRODUCT_SYSTEM_SERVER_COMPILER_FILTER := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_SERVER_COMPILER_FILTER)) -PRODUCT_SYSTEM_SERVER_DEBUG_INFO := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_SERVER_DEBUG_INFO)) -PRODUCT_OTHER_JAVA_DEBUG_INFO := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_OTHER_JAVA_DEBUG_INFO)) +PRODUCT_OTA_PUBLIC_KEYS := $(sort $(PRODUCT_OTA_PUBLIC_KEYS)) +PRODUCT_EXTRA_RECOVERY_KEYS := $(sort $(PRODUCT_EXTRA_RECOVERY_KEYS)) # Resolve and setup per-module dex-preopt configs. -PRODUCT_DEX_PREOPT_MODULE_CONFIGS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEX_PREOPT_MODULE_CONFIGS)) DEXPREOPT_DISABLED_MODULES := # If a module has multiple setups, the first takes precedence. _pdpmc_modules := @@ -466,9 +341,8 @@ $(foreach c,$(PRODUCT_DEX_PREOPT_MODULE_CONFIGS),\ $(eval DEXPREOPT.$(TARGET_PRODUCT).$(m).CONFIG := $(cf))))) _pdpmc_modules := + # Resolve and setup per-module sanitizer configs. -PRODUCT_SANITIZER_MODULE_CONFIGS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SANITIZER_MODULE_CONFIGS)) # If a module has multiple setups, the first takes precedence. _psmc_modules := $(foreach c,$(PRODUCT_SANITIZER_MODULE_CONFIGS),\ @@ -480,123 +354,29 @@ $(foreach c,$(PRODUCT_SANITIZER_MODULE_CONFIGS),\ $(eval SANITIZER.$(TARGET_PRODUCT).$(m).CONFIG := $(cf)))) _psmc_modules := -# Whether the product wants to ship libartd. For rules and meaning, see art/Android.mk. -PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD)) - -# Make this art variable visible to soong_config.mk. -PRODUCT_ART_USE_READ_BARRIER := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ART_USE_READ_BARRIER)) - -# Whether the product is an Android Things variant. -PRODUCT_IOT := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_IOT)) - -# Resource overlay list which must be excluded from enforcing RRO. -PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS)) - -# Package list to apply enforcing RRO. -PRODUCT_ENFORCE_RRO_TARGETS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ENFORCE_RRO_TARGETS)) - -# Whether the product would like to check prebuilt ELF files. -PRODUCT_CHECK_ELF_FILES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CHECK_ELF_FILES)) -.KATI_READONLY := PRODUCT_CHECK_ELF_FILES - -# Add reserved headroom to a system image. -PRODUCT_SYSTEM_HEADROOM := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_HEADROOM)) - -# Whether to save disk space by minimizing java debug info -PRODUCT_MINIMIZE_JAVA_DEBUG_INFO := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_MINIMIZE_JAVA_DEBUG_INFO)) - -# Whether any paths are excluded from sanitization when SANITIZE_TARGET=integer_overflow -PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS)) - -# ADB keys for debuggable builds -PRODUCT_ADB_KEYS := -ifneq ($(filter eng userdebug,$(TARGET_BUILD_VARIANT)),) - PRODUCT_ADB_KEYS := $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ADB_KEYS)) +# Reset ADB keys for non-debuggable builds +ifeq (,$(filter eng userdebug,$(TARGET_BUILD_VARIANT)),) + PRODUCT_ADB_KEYS := endif ifneq ($(filter-out 0 1,$(words $(PRODUCT_ADB_KEYS))),) $(error Only one file may be in PRODUCT_ADB_KEYS: $(PRODUCT_ADB_KEYS)) endif -.KATI_READONLY := PRODUCT_ADB_KEYS -# Whether any paths are excluded from sanitization when SANITIZE_TARGET=cfi -PRODUCT_CFI_EXCLUDE_PATHS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CFI_EXCLUDE_PATHS)) - -# Whether any paths should have CFI enabled for components -PRODUCT_CFI_INCLUDE_PATHS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_CFI_INCLUDE_PATHS)) - -# Whether the Scudo hardened allocator is disabled platform-wide -PRODUCT_DISABLE_SCUDO := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DISABLE_SCUDO)) - -# Whether any paths are excluded from being set XOM when ENABLE_XOM=true -PRODUCT_XOM_EXCLUDE_PATHS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_XOM_EXCLUDE_PATHS)) - -# which Soong namespaces to export to Make -PRODUCT_SOONG_NAMESPACES := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SOONG_NAMESPACES)) - -# A flag to override PRODUCT_COMPATIBLE_PROPERTY -PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE)) - -# Whether the whitelist of actionable compatible properties should be disabled or not -PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_ACTIONABLE_COMPATIBLE_PROPERTY_DISABLE)) - -# Dynamic partition feature flags. - -# 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_RETROFIT_DYNAMIC_PARTITIONS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_RETROFIT_DYNAMIC_PARTITIONS)) -.KATI_READONLY := PRODUCT_RETROFIT_DYNAMIC_PARTITIONS - -PRODUCT_USE_DYNAMIC_PARTITIONS := $(or \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_USE_DYNAMIC_PARTITIONS)), \ - $(PRODUCT_RETROFIT_DYNAMIC_PARTITIONS)) -.KATI_READONLY := PRODUCT_USE_DYNAMIC_PARTITIONS +ifndef PRODUCT_USE_DYNAMIC_PARTITIONS + PRODUCT_USE_DYNAMIC_PARTITIONS := $(PRODUCT_RETROFIT_DYNAMIC_PARTITIONS) +endif # All requirements of PRODUCT_USE_DYNAMIC_PARTITIONS falls back to # PRODUCT_USE_DYNAMIC_PARTITIONS if not defined. -PRODUCT_USE_DYNAMIC_PARTITION_SIZE := $(or \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_USE_DYNAMIC_PARTITION_SIZE)),\ - $(PRODUCT_USE_DYNAMIC_PARTITIONS)) -.KATI_READONLY := PRODUCT_USE_DYNAMIC_PARTITION_SIZE -PRODUCT_BUILD_SUPER_PARTITION := $(or \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_BUILD_SUPER_PARTITION)),\ - $(PRODUCT_USE_DYNAMIC_PARTITIONS)) -.KATI_READONLY := PRODUCT_BUILD_SUPER_PARTITION +ifndef PRODUCT_USE_DYNAMIC_PARTITION_SIZE + PRODUCT_USE_DYNAMIC_PARTITION_SIZE := $(PRODUCT_USE_DYNAMIC_PARTITIONS) +endif -# List of modules that should be forcefully unmarked from being LOCAL_PRODUCT_MODULE, and hence -# installed on /system directory by default. -PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION)) -.KATI_READONLY := PRODUCT_FORCE_PRODUCT_MODULES_TO_SYSTEM_PARTITION - -# If set, kernel configuration requirements are present in OTA package (and will be enforced -# 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_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS := \ - $(strip $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS)) +ifndef PRODUCT_BUILD_SUPER_PARTITION + PRODUCT_BUILD_SUPER_PARTITION := $(PRODUCT_USE_DYNAMIC_PARTITIONS) +endif define product-overrides-config -PRODUCT_$(1)_OVERRIDES := $$(strip $$(PRODUCTS.$$(INTERNAL_PRODUCT).PRODUCT_$(1)_OVERRIDES)) -.KATI_READONLY := PRODUCT_$(1)_OVERRIDES $$(foreach rule,$$(PRODUCT_$(1)_OVERRIDES),\ $$(if $$(filter 2,$$(words $$(subst :,$$(space),$$(rule)))),,\ $$(error Rule "$$(rule)" in PRODUCT_$(1)_OVERRIDE is not :))) @@ -610,8 +390,7 @@ $(foreach var, \ # Macro to use below. $(1) is the name of the partition define product-build-image-config -PRODUCT_BUILD_$(1)_IMAGE := $$(firstword $$(strip $$(PRODUCTS.$$(INTERNAL_PRODUCT).PRODUCT_BUILD_$(1)_IMAGE))) -.KATI_READONLY := PRODUCT_BUILD_$(1)_IMAGE +PRODUCT_BUILD_$(1)_IMAGE := $$(firstword $$(PRODUCT_BUILD_$(1)_IMAGE)) ifneq ($$(filter-out true false,$$(PRODUCT_BUILD_$(1)_IMAGE)),) $$(error Invalid PRODUCT_BUILD_$(1)_IMAGE: $$(PRODUCT_BUILD_$(1)_IMAGE) -- true false and empty are supported) endif @@ -631,3 +410,5 @@ $(foreach image, \ $(eval $(call product-build-image-config,$(image)))) product-build-image-config := + +$(call readonly-product-vars)