1# ADDITIONAL_<partition>_PROPERTIES are properties that are determined by the 2# build system itself. Don't let it be defined from outside of the core build 3# system like Android.mk or <product>.mk files. 4_additional_prop_var_names := \ 5 ADDITIONAL_SYSTEM_PROPERTIES \ 6 ADDITIONAL_VENDOR_PROPERTIES \ 7 ADDITIONAL_ODM_PROPERTIES \ 8 ADDITIONAL_PRODUCT_PROPERTIES 9 10$(foreach name, $(_additional_prop_var_names),\ 11 $(if $($(name)),\ 12 $(error $(name) must not set before here. $($(name)))\ 13 ,)\ 14 $(eval $(name) :=)\ 15) 16_additional_prop_var_names := 17 18$(KATI_obsolete_var ADDITIONAL_SYSTEM_PROPERTIES,Use build/soong/scripts/gen_build_prop.py instead) 19$(KATI_obsolete_var ADDITIONAL_ODM_PROPERTIES,Use build/soong/scripts/gen_build_prop.py instead) 20$(KATI_obsolete_var ADDITIONAL_PRODUCT_PROPERTIES,Use build/soong/scripts/gen_build_prop.py instead) 21 22# Add cpu properties for bionic and ART. 23ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.arch=$(TARGET_ARCH) 24ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.cpu_variant=$(TARGET_CPU_VARIANT_RUNTIME) 25ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.2nd_arch=$(TARGET_2ND_ARCH) 26ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.2nd_cpu_variant=$(TARGET_2ND_CPU_VARIANT_RUNTIME) 27 28ADDITIONAL_VENDOR_PROPERTIES += persist.sys.dalvik.vm.lib.2=libart.so 29ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).variant=$(DEX2OAT_TARGET_CPU_VARIANT_RUNTIME) 30ifneq ($(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),) 31 ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) 32endif 33 34ifdef TARGET_2ND_ARCH 35 ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).variant=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT_RUNTIME) 36 ifneq ($($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),) 37 ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).features=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) 38 endif 39endif 40 41# Although these variables are prefixed with TARGET_RECOVERY_, they are also needed under charger 42# mode (via libminui). 43ifdef TARGET_RECOVERY_DEFAULT_ROTATION 44ADDITIONAL_VENDOR_PROPERTIES += \ 45 ro.minui.default_rotation=$(TARGET_RECOVERY_DEFAULT_ROTATION) 46endif 47ifdef TARGET_RECOVERY_OVERSCAN_PERCENT 48ADDITIONAL_VENDOR_PROPERTIES += \ 49 ro.minui.overscan_percent=$(TARGET_RECOVERY_OVERSCAN_PERCENT) 50endif 51ifdef TARGET_RECOVERY_PIXEL_FORMAT 52ADDITIONAL_VENDOR_PROPERTIES += \ 53 ro.minui.pixel_format=$(TARGET_RECOVERY_PIXEL_FORMAT) 54endif 55 56ifdef PRODUCT_USE_DYNAMIC_PARTITIONS 57ADDITIONAL_VENDOR_PROPERTIES += \ 58 ro.boot.dynamic_partitions=$(PRODUCT_USE_DYNAMIC_PARTITIONS) 59endif 60 61ifdef PRODUCT_RETROFIT_DYNAMIC_PARTITIONS 62ADDITIONAL_VENDOR_PROPERTIES += \ 63 ro.boot.dynamic_partitions_retrofit=$(PRODUCT_RETROFIT_DYNAMIC_PARTITIONS) 64endif 65 66ifdef PRODUCT_SHIPPING_API_LEVEL 67ADDITIONAL_VENDOR_PROPERTIES += \ 68 ro.product.first_api_level=$(PRODUCT_SHIPPING_API_LEVEL) 69endif 70 71ifdef PRODUCT_SHIPPING_VENDOR_API_LEVEL 72ADDITIONAL_VENDOR_PROPERTIES += \ 73 ro.vendor.api_level=$(PRODUCT_SHIPPING_VENDOR_API_LEVEL) 74endif 75 76ifneq ($(TARGET_BUILD_VARIANT),user) 77 ifdef PRODUCT_SET_DEBUGFS_RESTRICTIONS 78 ADDITIONAL_VENDOR_PROPERTIES += \ 79 ro.product.debugfs_restrictions.enabled=$(PRODUCT_SET_DEBUGFS_RESTRICTIONS) 80 endif 81endif 82 83# Vendors with GRF must define BOARD_SHIPPING_API_LEVEL for the vendor API level. 84# This must not be defined for the non-GRF devices. 85# The values of the GRF properties will be verified by post_process_props.py 86ifdef BOARD_SHIPPING_API_LEVEL 87ADDITIONAL_VENDOR_PROPERTIES += \ 88 ro.board.first_api_level=$(BOARD_SHIPPING_API_LEVEL) 89endif 90 91# Build system set BOARD_API_LEVEL to show the api level of the vendor API surface. 92# This must not be altered outside of build system. 93ifdef BOARD_API_LEVEL 94 ADDITIONAL_VENDOR_PROPERTIES += \ 95 ro.board.api_level?=$(BOARD_API_LEVEL) 96 ifdef BOARD_API_LEVEL_PROP_OVERRIDE 97 ADDITIONAL_VENDOR_PROPERTIES += \ 98 ro.board.api_level=$(BOARD_API_LEVEL_PROP_OVERRIDE) 99 endif 100endif 101# RELEASE_BOARD_API_LEVEL_FROZEN is true when the vendor API surface is frozen. 102ifdef RELEASE_BOARD_API_LEVEL_FROZEN 103ADDITIONAL_VENDOR_PROPERTIES += \ 104 ro.board.api_frozen=$(RELEASE_BOARD_API_LEVEL_FROZEN) 105endif 106 107# Set build prop. This prop is read by ota_from_target_files when generating OTA, 108# to decide if VABC should be disabled. 109ifeq ($(BOARD_DONT_USE_VABC_OTA),true) 110ADDITIONAL_VENDOR_PROPERTIES += \ 111 ro.vendor.build.dont_use_vabc=true 112endif 113 114# Set the flag in vendor. So VTS would know if the new fingerprint format is in use when 115# the system images are replaced by GSI. 116ifeq ($(BOARD_USE_VBMETA_DIGTEST_IN_FINGERPRINT),true) 117ADDITIONAL_VENDOR_PROPERTIES += \ 118 ro.vendor.build.fingerprint_has_digest=1 119endif 120 121ADDITIONAL_VENDOR_PROPERTIES += \ 122 ro.vendor.build.security_patch=$(VENDOR_SECURITY_PATCH) \ 123 ro.product.board=$(TARGET_BOOTLOADER_BOARD_NAME) \ 124 ro.board.platform=$(TARGET_BOARD_PLATFORM) \ 125 ro.hwui.use_vulkan=$(TARGET_USES_VULKAN) 126 127ifdef TARGET_SCREEN_DENSITY 128ADDITIONAL_VENDOR_PROPERTIES += \ 129 ro.sf.lcd_density=$(TARGET_SCREEN_DENSITY) 130endif 131 132ifdef AB_OTA_UPDATER 133ADDITIONAL_VENDOR_PROPERTIES += \ 134 ro.build.ab_update=$(AB_OTA_UPDATER) 135endif 136 137ifeq ($(AB_OTA_UPDATER),true) 138ADDITIONAL_VENDOR_PROPERTIES += ro.vendor.build.ab_ota_partitions=$(subst $(space),$(comma),$(sort $(AB_OTA_PARTITIONS))) 139endif 140 141user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT)) 142 143config_enable_uffd_gc := \ 144 $(firstword $(OVERRIDE_ENABLE_UFFD_GC) $(PRODUCT_ENABLE_UFFD_GC) default) 145 146ADDITIONAL_VENDOR_PROPERTIES := $(strip $(ADDITIONAL_VENDOR_PROPERTIES)) 147 148.KATI_READONLY += \ 149 ADDITIONAL_VENDOR_PROPERTIES 150