blob: f9b9d1c2ee74304a95223e30724ffaeca67f77d8 [file] [log] [blame]
Inseob Kim85b83a92024-05-08 11:13:26 +09001# 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#
19# -----------------------------------------------------------------
20# Add the product-defined properties to the build properties.
21ifneq ($(BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED), true)
22 ADDITIONAL_SYSTEM_PROPERTIES += $(PRODUCT_PROPERTY_OVERRIDES)
23else
24 ifndef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE
25 ADDITIONAL_SYSTEM_PROPERTIES += $(PRODUCT_PROPERTY_OVERRIDES)
26 endif
27endif
28
29ADDITIONAL_SYSTEM_PROPERTIES += ro.treble.enabled=${PRODUCT_FULL_TREBLE}
30
31# Set ro.llndk.api_level to show the maximum vendor API level that the LLNDK in
32# the system partition supports.
33ifdef RELEASE_BOARD_API_LEVEL
34ADDITIONAL_SYSTEM_PROPERTIES += ro.llndk.api_level=$(RELEASE_BOARD_API_LEVEL)
35endif
36
37# Sets ro.actionable_compatible_property.enabled to know on runtime whether the
38# allowed list of actionable compatible properties is enabled or not.
39ADDITIONAL_SYSTEM_PROPERTIES += ro.actionable_compatible_property.enabled=true
40
41# Add the system server compiler filter if they are specified for the product.
42ifneq (,$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER))
43ADDITIONAL_PRODUCT_PROPERTIES += dalvik.vm.systemservercompilerfilter=$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER)
44endif
45
46# Add the 16K developer option if it is defined for the product.
47ifeq ($(PRODUCT_16K_DEVELOPER_OPTION),true)
48ADDITIONAL_PRODUCT_PROPERTIES += ro.product.build.16k_page.enabled=true
49else
50ADDITIONAL_PRODUCT_PROPERTIES += ro.product.build.16k_page.enabled=false
51endif
52
Pawan Wagha08472f2024-07-08 22:55:33 +000053ifeq ($(TARGET_BOOTS_16K),true)
54ADDITIONAL_PRODUCT_PROPERTIES += ro.product.page_size=16384
55else
56ADDITIONAL_PRODUCT_PROPERTIES += ro.product.page_size=4096
57endif
58
Inseob Kim85b83a92024-05-08 11:13:26 +090059# Enable core platform API violation warnings on userdebug and eng builds.
60ifneq ($(TARGET_BUILD_VARIANT),user)
61ADDITIONAL_SYSTEM_PROPERTIES += persist.debug.dalvik.vm.core_platform_api_policy=just-warn
62endif
63
64# Define ro.sanitize.<name> properties for all global sanitizers.
65ADDITIONAL_SYSTEM_PROPERTIES += $(foreach s,$(SANITIZE_TARGET),ro.sanitize.$(s)=true)
66
67# Sets the default value of ro.postinstall.fstab.prefix to /system.
68# Device board config should override the value to /product when needed by:
69#
70# PRODUCT_PRODUCT_PROPERTIES += ro.postinstall.fstab.prefix=/product
71#
72# It then uses ${ro.postinstall.fstab.prefix}/etc/fstab.postinstall to
73# mount system_other partition.
74ADDITIONAL_SYSTEM_PROPERTIES += ro.postinstall.fstab.prefix=/system
75
76# Add cpu properties for bionic and ART.
77ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.arch=$(TARGET_ARCH)
78ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.cpu_variant=$(TARGET_CPU_VARIANT_RUNTIME)
79ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.2nd_arch=$(TARGET_2ND_ARCH)
80ADDITIONAL_VENDOR_PROPERTIES += ro.bionic.2nd_cpu_variant=$(TARGET_2ND_CPU_VARIANT_RUNTIME)
81
82ADDITIONAL_VENDOR_PROPERTIES += persist.sys.dalvik.vm.lib.2=libart.so
83ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).variant=$(DEX2OAT_TARGET_CPU_VARIANT_RUNTIME)
84ifneq ($(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),)
85 ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES)
86endif
87
88ifdef TARGET_2ND_ARCH
89 ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).variant=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT_RUNTIME)
90 ifneq ($($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),)
91 ADDITIONAL_VENDOR_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).features=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES)
92 endif
93endif
94
95# Although these variables are prefixed with TARGET_RECOVERY_, they are also needed under charger
96# mode (via libminui).
97ifdef TARGET_RECOVERY_DEFAULT_ROTATION
98ADDITIONAL_VENDOR_PROPERTIES += \
99 ro.minui.default_rotation=$(TARGET_RECOVERY_DEFAULT_ROTATION)
100endif
101ifdef TARGET_RECOVERY_OVERSCAN_PERCENT
102ADDITIONAL_VENDOR_PROPERTIES += \
103 ro.minui.overscan_percent=$(TARGET_RECOVERY_OVERSCAN_PERCENT)
104endif
105ifdef TARGET_RECOVERY_PIXEL_FORMAT
106ADDITIONAL_VENDOR_PROPERTIES += \
107 ro.minui.pixel_format=$(TARGET_RECOVERY_PIXEL_FORMAT)
108endif
109
110ifdef PRODUCT_USE_DYNAMIC_PARTITIONS
111ADDITIONAL_VENDOR_PROPERTIES += \
112 ro.boot.dynamic_partitions=$(PRODUCT_USE_DYNAMIC_PARTITIONS)
113endif
114
115ifdef PRODUCT_RETROFIT_DYNAMIC_PARTITIONS
116ADDITIONAL_VENDOR_PROPERTIES += \
117 ro.boot.dynamic_partitions_retrofit=$(PRODUCT_RETROFIT_DYNAMIC_PARTITIONS)
118endif
119
120ifdef PRODUCT_SHIPPING_API_LEVEL
121ADDITIONAL_VENDOR_PROPERTIES += \
122 ro.product.first_api_level=$(PRODUCT_SHIPPING_API_LEVEL)
123endif
124
125ifdef PRODUCT_SHIPPING_VENDOR_API_LEVEL
126ADDITIONAL_VENDOR_PROPERTIES += \
127 ro.vendor.api_level=$(PRODUCT_SHIPPING_VENDOR_API_LEVEL)
128endif
129
130ifneq ($(TARGET_BUILD_VARIANT),user)
131 ifdef PRODUCT_SET_DEBUGFS_RESTRICTIONS
132 ADDITIONAL_VENDOR_PROPERTIES += \
133 ro.product.debugfs_restrictions.enabled=$(PRODUCT_SET_DEBUGFS_RESTRICTIONS)
134 endif
135endif
136
137# Vendors with GRF must define BOARD_SHIPPING_API_LEVEL for the vendor API level.
138# This must not be defined for the non-GRF devices.
139# The values of the GRF properties will be verified by post_process_props.py
140ifdef BOARD_SHIPPING_API_LEVEL
141ADDITIONAL_VENDOR_PROPERTIES += \
142 ro.board.first_api_level=$(BOARD_SHIPPING_API_LEVEL)
143endif
144
145# Build system set BOARD_API_LEVEL to show the api level of the vendor API surface.
146# This must not be altered outside of build system.
147ifdef BOARD_API_LEVEL
148ADDITIONAL_VENDOR_PROPERTIES += \
149 ro.board.api_level=$(BOARD_API_LEVEL)
150endif
151# RELEASE_BOARD_API_LEVEL_FROZEN is true when the vendor API surface is frozen.
152ifdef RELEASE_BOARD_API_LEVEL_FROZEN
153ADDITIONAL_VENDOR_PROPERTIES += \
154 ro.board.api_frozen=$(RELEASE_BOARD_API_LEVEL_FROZEN)
155endif
156
157# Set build prop. This prop is read by ota_from_target_files when generating OTA,
158# to decide if VABC should be disabled.
159ifeq ($(BOARD_DONT_USE_VABC_OTA),true)
160ADDITIONAL_VENDOR_PROPERTIES += \
161 ro.vendor.build.dont_use_vabc=true
162endif
163
164# Set the flag in vendor. So VTS would know if the new fingerprint format is in use when
165# the system images are replaced by GSI.
166ifeq ($(BOARD_USE_VBMETA_DIGTEST_IN_FINGERPRINT),true)
167ADDITIONAL_VENDOR_PROPERTIES += \
168 ro.vendor.build.fingerprint_has_digest=1
169endif
170
171ADDITIONAL_VENDOR_PROPERTIES += \
172 ro.vendor.build.security_patch=$(VENDOR_SECURITY_PATCH) \
173 ro.product.board=$(TARGET_BOOTLOADER_BOARD_NAME) \
174 ro.board.platform=$(TARGET_BOARD_PLATFORM) \
175 ro.hwui.use_vulkan=$(TARGET_USES_VULKAN)
176
177ifdef TARGET_SCREEN_DENSITY
178ADDITIONAL_VENDOR_PROPERTIES += \
179 ro.sf.lcd_density=$(TARGET_SCREEN_DENSITY)
180endif
181
182ifdef AB_OTA_UPDATER
183ADDITIONAL_VENDOR_PROPERTIES += \
184 ro.build.ab_update=$(AB_OTA_UPDATER)
185endif
186
187ADDITIONAL_PRODUCT_PROPERTIES += ro.build.characteristics=$(TARGET_AAPT_CHARACTERISTICS)
188
189ifeq ($(AB_OTA_UPDATER),true)
190ADDITIONAL_PRODUCT_PROPERTIES += ro.product.ab_ota_partitions=$(subst $(space),$(comma),$(sort $(AB_OTA_PARTITIONS)))
191ADDITIONAL_VENDOR_PROPERTIES += ro.vendor.build.ab_ota_partitions=$(subst $(space),$(comma),$(sort $(AB_OTA_PARTITIONS)))
192endif
193
194# Set this property for VTS to skip large page size tests on unsupported devices.
195ADDITIONAL_PRODUCT_PROPERTIES += \
196 ro.product.cpu.pagesize.max=$(TARGET_MAX_PAGE_SIZE_SUPPORTED)
197
198ifeq ($(PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO),true)
199ADDITIONAL_PRODUCT_PROPERTIES += ro.product.build.no_bionic_page_size_macro=true
200endif
201
202user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
203enable_target_debugging := true
Joe Onoratod4b42242024-06-07 16:04:17 -0700204enable_dalvik_lock_contention_logging := true
Inseob Kim85b83a92024-05-08 11:13:26 +0900205ifneq (,$(user_variant))
206 # Target is secure in user builds.
207 ADDITIONAL_SYSTEM_PROPERTIES += ro.secure=1
208 ADDITIONAL_SYSTEM_PROPERTIES += security.perf_harden=1
209
210 ifeq ($(user_variant),user)
211 ADDITIONAL_SYSTEM_PROPERTIES += ro.adb.secure=1
212 endif
213
214 ifneq ($(user_variant),userdebug)
215 # Disable debugging in plain user builds.
216 enable_target_debugging :=
Joe Onoratod4b42242024-06-07 16:04:17 -0700217 enable_dalvik_lock_contention_logging :=
218 else
219 # Disable debugging in userdebug builds if PRODUCT_NOT_DEBUGGABLE_IN_USERDEBUG
220 # is set.
221 ifneq (,$(strip $(PRODUCT_NOT_DEBUGGABLE_IN_USERDEBUG)))
222 enable_target_debugging :=
223 endif
Inseob Kim85b83a92024-05-08 11:13:26 +0900224 endif
225
226 # Disallow mock locations by default for user builds
227 ADDITIONAL_SYSTEM_PROPERTIES += ro.allow.mock.location=0
228
229else # !user_variant
230 # Turn on checkjni for non-user builds.
231 ADDITIONAL_SYSTEM_PROPERTIES += ro.kernel.android.checkjni=1
232 # Set device insecure for non-user builds.
233 ADDITIONAL_SYSTEM_PROPERTIES += ro.secure=0
234 # Allow mock locations by default for non user builds
235 ADDITIONAL_SYSTEM_PROPERTIES += ro.allow.mock.location=1
236endif # !user_variant
237
Joe Onoratod4b42242024-06-07 16:04:17 -0700238ifeq (true,$(strip $(enable_dalvik_lock_contention_logging)))
239 # Enable Dalvik lock contention logging.
240 ADDITIONAL_SYSTEM_PROPERTIES += dalvik.vm.lockprof.threshold=500
241endif # !enable_dalvik_lock_contention_logging
242
Inseob Kim85b83a92024-05-08 11:13:26 +0900243ifeq (true,$(strip $(enable_target_debugging)))
244 # Target is more debuggable and adbd is on by default
245 ADDITIONAL_SYSTEM_PROPERTIES += ro.debuggable=1
Inseob Kim85b83a92024-05-08 11:13:26 +0900246else # !enable_target_debugging
247 # Target is less debuggable and adbd is off by default
248 ADDITIONAL_SYSTEM_PROPERTIES += ro.debuggable=0
249endif # !enable_target_debugging
250
Joe Onoratod4b42242024-06-07 16:04:17 -0700251enable_target_debugging:=
252enable_dalvik_lock_contention_logging:=
253
Inseob Kim85b83a92024-05-08 11:13:26 +0900254ifneq ($(filter sdk sdk_addon,$(MAKECMDGOALS)),)
255_is_sdk_build := true
256endif
257
258ifeq ($(TARGET_BUILD_VARIANT),eng)
259ifneq ($(filter ro.setupwizard.mode=ENABLED, $(call collapse-pairs, $(ADDITIONAL_SYSTEM_PROPERTIES))),)
260 # Don't require the setup wizard on eng builds
261 ADDITIONAL_SYSTEM_PROPERTIES := $(filter-out ro.setupwizard.mode=%,\
262 $(call collapse-pairs, $(ADDITIONAL_SYSTEM_PROPERTIES))) \
263 ro.setupwizard.mode=OPTIONAL
264endif
265ifndef _is_sdk_build
266 # To speedup startup of non-preopted builds, don't verify or compile the boot image.
267 ADDITIONAL_SYSTEM_PROPERTIES += dalvik.vm.image-dex2oat-filter=extract
268endif
269# b/323566535
270ADDITIONAL_SYSTEM_PROPERTIES += init.svc_debug.no_fatal.zygote=true
271endif
272
273ifdef _is_sdk_build
274ADDITIONAL_SYSTEM_PROPERTIES += xmpp.auto-presence=true
275ADDITIONAL_SYSTEM_PROPERTIES += ro.config.nocheckin=yes
276endif
277
278_is_sdk_build :=
279
280ADDITIONAL_SYSTEM_PROPERTIES += net.bt.name=Android
281
282# This property is set by flashing debug boot image, so default to false.
283ADDITIONAL_SYSTEM_PROPERTIES += ro.force.debuggable=0
284
285config_enable_uffd_gc := \
286 $(firstword $(OVERRIDE_ENABLE_UFFD_GC) $(PRODUCT_ENABLE_UFFD_GC) default)
287
Martin Stjernholma8c687f2024-05-15 16:42:02 +0100288# This is a temporary system property that controls the ART module. The plan is
289# to remove it by Aug 2025, at which time Mainline updates of the ART module
290# will ignore it as well.
Inseob Kim85b83a92024-05-08 11:13:26 +0900291# If the value is "default", it will be mangled by post_process_props.py.
292ADDITIONAL_PRODUCT_PROPERTIES += ro.dalvik.vm.enable_uffd_gc=$(config_enable_uffd_gc)
293
294ADDITIONAL_SYSTEM_PROPERTIES := $(strip $(ADDITIONAL_SYSTEM_PROPERTIES))
295ADDITIONAL_PRODUCT_PROPERTIES := $(strip $(ADDITIONAL_PRODUCT_PROPERTIES))
296ADDITIONAL_VENDOR_PROPERTIES := $(strip $(ADDITIONAL_VENDOR_PROPERTIES))
297
298.KATI_READONLY += \
299 ADDITIONAL_SYSTEM_PROPERTIES \
300 ADDITIONAL_PRODUCT_PROPERTIES \
301 ADDITIONAL_VENDOR_PROPERTIES