1*9e94795aSAndroid Build Coastguard Worker# 2*9e94795aSAndroid Build Coastguard Worker# Copyright (C) 2020 The Android Open Source Project 3*9e94795aSAndroid Build Coastguard Worker# 4*9e94795aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*9e94795aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*9e94795aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*9e94795aSAndroid Build Coastguard Worker# 8*9e94795aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*9e94795aSAndroid Build Coastguard Worker# 10*9e94795aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*9e94795aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*9e94795aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*9e94795aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*9e94795aSAndroid Build Coastguard Worker# limitations under the License. 15*9e94795aSAndroid Build Coastguard Worker# 16*9e94795aSAndroid Build Coastguard Worker 17*9e94795aSAndroid Build Coastguard Worker# sysprop.mk defines rules for generating <partition>/[etc/]build.prop files 18*9e94795aSAndroid Build Coastguard Worker 19*9e94795aSAndroid Build Coastguard Worker# ----------------------------------------------------------------- 20*9e94795aSAndroid Build Coastguard Worker# property_overrides_split_enabled 21*9e94795aSAndroid Build Coastguard Workerproperty_overrides_split_enabled := 22*9e94795aSAndroid Build Coastguard Workerifeq ($(BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED), true) 23*9e94795aSAndroid Build Coastguard Worker property_overrides_split_enabled := true 24*9e94795aSAndroid Build Coastguard Workerendif 25*9e94795aSAndroid Build Coastguard Worker 26*9e94795aSAndroid Build Coastguard WorkerPOST_PROCESS_PROPS := $(HOST_OUT_EXECUTABLES)/post_process_props$(HOST_EXECUTABLE_SUFFIX) 27*9e94795aSAndroid Build Coastguard Worker 28*9e94795aSAndroid Build Coastguard Worker# Emits a set of sysprops common to all partitions to a file. 29*9e94795aSAndroid Build Coastguard Worker# $(1): Partition name 30*9e94795aSAndroid Build Coastguard Worker# $(2): Output file name 31*9e94795aSAndroid Build Coastguard Workerdefine generate-common-build-props 32*9e94795aSAndroid Build Coastguard Worker echo "####################################" >> $(2);\ 33*9e94795aSAndroid Build Coastguard Worker echo "# from generate-common-build-props" >> $(2);\ 34*9e94795aSAndroid Build Coastguard Worker echo "# These properties identify this partition image." >> $(2);\ 35*9e94795aSAndroid Build Coastguard Worker echo "####################################" >> $(2);\ 36*9e94795aSAndroid Build Coastguard Worker echo "ro.product.$(1).brand=$(PRODUCT_BRAND)" >> $(2);\ 37*9e94795aSAndroid Build Coastguard Worker echo "ro.product.$(1).device=$(TARGET_DEVICE)" >> $(2);\ 38*9e94795aSAndroid Build Coastguard Worker echo "ro.product.$(1).manufacturer=$(PRODUCT_MANUFACTURER)" >> $(2);\ 39*9e94795aSAndroid Build Coastguard Worker echo "ro.product.$(1).model=$(PRODUCT_MODEL)" >> $(2);\ 40*9e94795aSAndroid Build Coastguard Worker echo "ro.product.$(1).name=$(TARGET_PRODUCT)" >> $(2);\ 41*9e94795aSAndroid Build Coastguard Worker if [ -n "$(strip $(PRODUCT_MODEL_FOR_ATTESTATION))" ]; then \ 42*9e94795aSAndroid Build Coastguard Worker echo "ro.product.model_for_attestation=$(PRODUCT_MODEL_FOR_ATTESTATION)" >> $(2);\ 43*9e94795aSAndroid Build Coastguard Worker fi; \ 44*9e94795aSAndroid Build Coastguard Worker if [ -n "$(strip $(PRODUCT_BRAND_FOR_ATTESTATION))" ]; then \ 45*9e94795aSAndroid Build Coastguard Worker echo "ro.product.brand_for_attestation=$(PRODUCT_BRAND_FOR_ATTESTATION)" >> $(2);\ 46*9e94795aSAndroid Build Coastguard Worker fi; \ 47*9e94795aSAndroid Build Coastguard Worker if [ -n "$(strip $(PRODUCT_NAME_FOR_ATTESTATION))" ]; then \ 48*9e94795aSAndroid Build Coastguard Worker echo "ro.product.name_for_attestation=$(PRODUCT_NAME_FOR_ATTESTATION)" >> $(2);\ 49*9e94795aSAndroid Build Coastguard Worker fi; \ 50*9e94795aSAndroid Build Coastguard Worker if [ -n "$(strip $(PRODUCT_DEVICE_FOR_ATTESTATION))" ]; then \ 51*9e94795aSAndroid Build Coastguard Worker echo "ro.product.device_for_attestation=$(PRODUCT_DEVICE_FOR_ATTESTATION)" >> $(2);\ 52*9e94795aSAndroid Build Coastguard Worker fi; \ 53*9e94795aSAndroid Build Coastguard Worker if [ -n "$(strip $(PRODUCT_MANUFACTURER_FOR_ATTESTATION))" ]; then \ 54*9e94795aSAndroid Build Coastguard Worker echo "ro.product.manufacturer_for_attestation=$(PRODUCT_MANUFACTURER_FOR_ATTESTATION)" >> $(2);\ 55*9e94795aSAndroid Build Coastguard Worker fi; \ 56*9e94795aSAndroid Build Coastguard Worker $(if $(filter true,$(ZYGOTE_FORCE_64)),\ 57*9e94795aSAndroid Build Coastguard Worker $(if $(filter vendor,$(1)),\ 58*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).product.cpu.abilist=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\ 59*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).product.cpu.abilist32=" >> $(2);\ 60*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).product.cpu.abilist64=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\ 61*9e94795aSAndroid Build Coastguard Worker )\ 62*9e94795aSAndroid Build Coastguard Worker ,\ 63*9e94795aSAndroid Build Coastguard Worker $(if $(filter system vendor odm,$(1)),\ 64*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).product.cpu.abilist=$(TARGET_CPU_ABI_LIST)" >> $(2);\ 65*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).product.cpu.abilist32=$(TARGET_CPU_ABI_LIST_32_BIT)" >> $(2);\ 66*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).product.cpu.abilist64=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\ 67*9e94795aSAndroid Build Coastguard Worker )\ 68*9e94795aSAndroid Build Coastguard Worker )\ 69*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.date=`$(DATE_FROM_FILE)`" >> $(2);\ 70*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.date.utc=`$(DATE_FROM_FILE) +%s`" >> $(2);\ 71*9e94795aSAndroid Build Coastguard Worker # Allow optional assignments for ARC forward-declarations (b/249168657) 72*9e94795aSAndroid Build Coastguard Worker # TODO: Remove any tag-related inconsistencies once the goals from 73*9e94795aSAndroid Build Coastguard Worker # go/arc-android-sigprop-changes have been achieved. 74*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.fingerprint?=$(BUILD_FINGERPRINT_FROM_FILE)" >> $(2);\ 75*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.id?=$(BUILD_ID)" >> $(2);\ 76*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.tags?=$(BUILD_VERSION_TAGS)" >> $(2);\ 77*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.type=$(TARGET_BUILD_VARIANT)" >> $(2);\ 78*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.version.incremental=$(BUILD_NUMBER_FROM_FILE)" >> $(2);\ 79*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.version.release=$(PLATFORM_VERSION_LAST_STABLE)" >> $(2);\ 80*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.version.release_or_codename=$(PLATFORM_VERSION)" >> $(2);\ 81*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.version.sdk=$(PLATFORM_SDK_VERSION)" >> $(2);\ 82*9e94795aSAndroid Build Coastguard Worker echo "ro.$(1).build.version.sdk_minor=$(PLATFORM_SDK_MINOR_VERSION)" >> $(2);\ 83*9e94795aSAndroid Build Coastguard Worker 84*9e94795aSAndroid Build Coastguard Workerendef 85*9e94795aSAndroid Build Coastguard Worker 86*9e94795aSAndroid Build Coastguard Worker# Rule for generating <partition>/[etc/]build.prop file 87*9e94795aSAndroid Build Coastguard Worker# 88*9e94795aSAndroid Build Coastguard Worker# $(1): partition name 89*9e94795aSAndroid Build Coastguard Worker# $(2): path to the output 90*9e94795aSAndroid Build Coastguard Worker# $(3): path to the input *.prop files. The contents of the files are directly 91*9e94795aSAndroid Build Coastguard Worker# emitted to the output 92*9e94795aSAndroid Build Coastguard Worker# $(4): list of variable names each of which contains name=value pairs 93*9e94795aSAndroid Build Coastguard Worker# $(5): optional list of prop names to force remove from the output. Properties from both 94*9e94795aSAndroid Build Coastguard Worker# $(3) and (4) are affected 95*9e94795aSAndroid Build Coastguard Worker# $(6): optional list of files to append at the end. The content of each file is emitted 96*9e94795aSAndroid Build Coastguard Worker# to the output 97*9e94795aSAndroid Build Coastguard Worker# $(7): optional flag to skip common properties generation 98*9e94795aSAndroid Build Coastguard Workerdefine build-properties 99*9e94795aSAndroid Build Coastguard WorkerALL_DEFAULT_INSTALLED_MODULES += $(2) 100*9e94795aSAndroid Build Coastguard Worker 101*9e94795aSAndroid Build Coastguard Worker$(eval # Properties can be assigned using `prop ?= value` or `prop = value` syntax.) 102*9e94795aSAndroid Build Coastguard Worker$(eval # Eliminate spaces around the ?= and = separators.) 103*9e94795aSAndroid Build Coastguard Worker$(foreach name,$(strip $(4)),\ 104*9e94795aSAndroid Build Coastguard Worker $(eval _temp := $$(call collapse-pairs,$$($(name)),?=))\ 105*9e94795aSAndroid Build Coastguard Worker $(eval _resolved_$(name) := $$(call collapse-pairs,$$(_temp),=))\ 106*9e94795aSAndroid Build Coastguard Worker) 107*9e94795aSAndroid Build Coastguard Worker 108*9e94795aSAndroid Build Coastguard Worker$(eval # Implement the legacy behavior when BUILD_BROKEN_DUP_SYSPROP is on.) 109*9e94795aSAndroid Build Coastguard Worker$(eval # Optional assignments are all converted to normal assignments and) 110*9e94795aSAndroid Build Coastguard Worker$(eval # when their duplicates the first one wins) 111*9e94795aSAndroid Build Coastguard Worker$(if $(filter true,$(BUILD_BROKEN_DUP_SYSPROP)),\ 112*9e94795aSAndroid Build Coastguard Worker $(foreach name,$(strip $(4)),\ 113*9e94795aSAndroid Build Coastguard Worker $(eval _temp := $$(subst ?=,=,$$(_resolved_$(name))))\ 114*9e94795aSAndroid Build Coastguard Worker $(eval _resolved_$(name) := $$(call uniq-pairs-by-first-component,$$(_resolved_$(name)),=))\ 115*9e94795aSAndroid Build Coastguard Worker )\ 116*9e94795aSAndroid Build Coastguard Worker $(eval _option := --allow-dup)\ 117*9e94795aSAndroid Build Coastguard Worker) 118*9e94795aSAndroid Build Coastguard Worker 119*9e94795aSAndroid Build Coastguard Worker$(2): $(POST_PROCESS_PROPS) $(INTERNAL_BUILD_ID_MAKEFILE) $(3) $(6) $(BUILT_KERNEL_VERSION_FILE_FOR_UFFD_GC) 120*9e94795aSAndroid Build Coastguard Worker $(hide) echo Building $$@ 121*9e94795aSAndroid Build Coastguard Worker $(hide) mkdir -p $$(dir $$@) 122*9e94795aSAndroid Build Coastguard Worker $(hide) rm -f $$@ && touch $$@ 123*9e94795aSAndroid Build Coastguard Workerifneq ($(strip $(7)), true) 124*9e94795aSAndroid Build Coastguard Worker $(hide) $$(call generate-common-build-props,$(call to-lower,$(strip $(1))),$$@) 125*9e94795aSAndroid Build Coastguard Workerendif 126*9e94795aSAndroid Build Coastguard Worker $(hide) $(foreach file,$(strip $(3)),\ 127*9e94795aSAndroid Build Coastguard Worker if [ -f "$(file)" ]; then\ 128*9e94795aSAndroid Build Coastguard Worker echo "" >> $$@;\ 129*9e94795aSAndroid Build Coastguard Worker echo "####################################" >> $$@;\ 130*9e94795aSAndroid Build Coastguard Worker echo "# from $(file)" >> $$@;\ 131*9e94795aSAndroid Build Coastguard Worker echo "####################################" >> $$@;\ 132*9e94795aSAndroid Build Coastguard Worker cat $(file) >> $$@;\ 133*9e94795aSAndroid Build Coastguard Worker fi;) 134*9e94795aSAndroid Build Coastguard Worker $(hide) $(foreach name,$(strip $(4)),\ 135*9e94795aSAndroid Build Coastguard Worker echo "" >> $$@;\ 136*9e94795aSAndroid Build Coastguard Worker echo "####################################" >> $$@;\ 137*9e94795aSAndroid Build Coastguard Worker echo "# from variable $(name)" >> $$@;\ 138*9e94795aSAndroid Build Coastguard Worker echo "####################################" >> $$@;\ 139*9e94795aSAndroid Build Coastguard Worker $$(foreach line,$$(_resolved_$(name)),\ 140*9e94795aSAndroid Build Coastguard Worker echo "$$(line)" >> $$@;\ 141*9e94795aSAndroid Build Coastguard Worker )\ 142*9e94795aSAndroid Build Coastguard Worker ) 143*9e94795aSAndroid Build Coastguard Worker $(hide) $(POST_PROCESS_PROPS) $$(_option) \ 144*9e94795aSAndroid Build Coastguard Worker --sdk-version $(PLATFORM_SDK_VERSION) \ 145*9e94795aSAndroid Build Coastguard Worker --kernel-version-file-for-uffd-gc "$(BUILT_KERNEL_VERSION_FILE_FOR_UFFD_GC)" \ 146*9e94795aSAndroid Build Coastguard Worker $$@ $(5) 147*9e94795aSAndroid Build Coastguard Worker $(hide) $(foreach file,$(strip $(6)),\ 148*9e94795aSAndroid Build Coastguard Worker if [ -f "$(file)" ]; then\ 149*9e94795aSAndroid Build Coastguard Worker cat $(file) >> $$@;\ 150*9e94795aSAndroid Build Coastguard Worker fi;) 151*9e94795aSAndroid Build Coastguard Worker $(hide) echo "# end of file" >> $$@ 152*9e94795aSAndroid Build Coastguard Worker 153*9e94795aSAndroid Build Coastguard Worker$(call declare-1p-target,$(2)) 154*9e94795aSAndroid Build Coastguard Workerendef 155*9e94795aSAndroid Build Coastguard Worker 156*9e94795aSAndroid Build Coastguard Worker# ----------------------------------------------------------------- 157*9e94795aSAndroid Build Coastguard Worker# Define fingerprint, thumbprint, and version tags for the current build 158*9e94795aSAndroid Build Coastguard Worker# 159*9e94795aSAndroid Build Coastguard Worker# BUILD_VERSION_TAGS is a comma-separated list of tags chosen by the device 160*9e94795aSAndroid Build Coastguard Worker# implementer that further distinguishes the build. It's basically defined 161*9e94795aSAndroid Build Coastguard Worker# by the device implementer. Here, we are adding a mandatory tag that 162*9e94795aSAndroid Build Coastguard Worker# identifies the signing config of the build. 163*9e94795aSAndroid Build Coastguard WorkerBUILD_VERSION_TAGS := $(BUILD_VERSION_TAGS) 164*9e94795aSAndroid Build Coastguard Workerifeq ($(TARGET_BUILD_TYPE),debug) 165*9e94795aSAndroid Build Coastguard Worker BUILD_VERSION_TAGS += debug 166*9e94795aSAndroid Build Coastguard Workerendif 167*9e94795aSAndroid Build Coastguard Worker# The "test-keys" tag marks builds signed with the old test keys, 168*9e94795aSAndroid Build Coastguard Worker# which are available in the SDK. "dev-keys" marks builds signed with 169*9e94795aSAndroid Build Coastguard Worker# non-default dev keys (usually private keys from a vendor directory). 170*9e94795aSAndroid Build Coastguard Worker# Both of these tags will be removed and replaced with "release-keys" 171*9e94795aSAndroid Build Coastguard Worker# when the target-files is signed in a post-build step. 172*9e94795aSAndroid Build Coastguard Workerifeq ($(DEFAULT_SYSTEM_DEV_CERTIFICATE),build/make/target/product/security/testkey) 173*9e94795aSAndroid Build Coastguard WorkerBUILD_KEYS := test-keys 174*9e94795aSAndroid Build Coastguard Workerelse 175*9e94795aSAndroid Build Coastguard WorkerBUILD_KEYS := dev-keys 176*9e94795aSAndroid Build Coastguard Workerendif 177*9e94795aSAndroid Build Coastguard WorkerBUILD_VERSION_TAGS += $(BUILD_KEYS) 178*9e94795aSAndroid Build Coastguard WorkerBUILD_VERSION_TAGS := $(subst $(space),$(comma),$(sort $(BUILD_VERSION_TAGS))) 179*9e94795aSAndroid Build Coastguard Worker 180*9e94795aSAndroid Build Coastguard Worker# BUILD_FINGERPRINT is used used to uniquely identify the combined build and 181*9e94795aSAndroid Build Coastguard Worker# product; used by the OTA server. 182*9e94795aSAndroid Build Coastguard Workerifeq (,$(strip $(BUILD_FINGERPRINT))) 183*9e94795aSAndroid Build Coastguard Worker BUILD_FINGERPRINT := $(PRODUCT_BRAND)/$(TARGET_PRODUCT)/$(TARGET_DEVICE):$(PLATFORM_VERSION)/$(BUILD_ID)/$(BUILD_NUMBER_FROM_FILE):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS) 184*9e94795aSAndroid Build Coastguard Workerendif 185*9e94795aSAndroid Build Coastguard Worker 186*9e94795aSAndroid Build Coastguard WorkerBUILD_FINGERPRINT_FILE := $(PRODUCT_OUT)/build_fingerprint.txt 187*9e94795aSAndroid Build Coastguard Workerifneq (,$(shell mkdir -p $(PRODUCT_OUT) && echo $(BUILD_FINGERPRINT) >$(BUILD_FINGERPRINT_FILE).tmp && (if ! cmp -s $(BUILD_FINGERPRINT_FILE).tmp $(BUILD_FINGERPRINT_FILE); then mv $(BUILD_FINGERPRINT_FILE).tmp $(BUILD_FINGERPRINT_FILE); else rm $(BUILD_FINGERPRINT_FILE).tmp; fi) && grep " " $(BUILD_FINGERPRINT_FILE))) 188*9e94795aSAndroid Build Coastguard Worker $(error BUILD_FINGERPRINT cannot contain spaces: "$(file <$(BUILD_FINGERPRINT_FILE))") 189*9e94795aSAndroid Build Coastguard Workerendif 190*9e94795aSAndroid Build Coastguard WorkerBUILD_FINGERPRINT_FROM_FILE := $$(cat $(BUILD_FINGERPRINT_FILE)) 191*9e94795aSAndroid Build Coastguard Worker# unset it for safety. 192*9e94795aSAndroid Build Coastguard WorkerBUILD_FINGERPRINT := 193*9e94795aSAndroid Build Coastguard Worker 194*9e94795aSAndroid Build Coastguard Worker# BUILD_THUMBPRINT is used to uniquely identify the system build; used by the 195*9e94795aSAndroid Build Coastguard Worker# OTA server. This purposefully excludes any product-specific variables. 196*9e94795aSAndroid Build Coastguard Workerifeq (,$(strip $(BUILD_THUMBPRINT))) 197*9e94795aSAndroid Build Coastguard Worker BUILD_THUMBPRINT := $(PLATFORM_VERSION)/$(BUILD_ID)/$(BUILD_NUMBER_FROM_FILE):$(TARGET_BUILD_VARIANT)/$(BUILD_VERSION_TAGS) 198*9e94795aSAndroid Build Coastguard Workerendif 199*9e94795aSAndroid Build Coastguard Worker 200*9e94795aSAndroid Build Coastguard WorkerBUILD_THUMBPRINT_FILE := $(PRODUCT_OUT)/build_thumbprint.txt 201*9e94795aSAndroid Build Coastguard Workerifeq ($(strip $(HAS_BUILD_NUMBER)),true) 202*9e94795aSAndroid Build Coastguard Worker$(BUILD_THUMBPRINT_FILE): $(BUILD_NUMBER_FILE) 203*9e94795aSAndroid Build Coastguard Workerendif 204*9e94795aSAndroid Build Coastguard Workerifneq (,$(shell mkdir -p $(PRODUCT_OUT) && echo $(BUILD_THUMBPRINT) >$(BUILD_THUMBPRINT_FILE) && grep " " $(BUILD_THUMBPRINT_FILE))) 205*9e94795aSAndroid Build Coastguard Worker $(error BUILD_THUMBPRINT cannot contain spaces: "$(file <$(BUILD_THUMBPRINT_FILE))") 206*9e94795aSAndroid Build Coastguard Workerendif 207*9e94795aSAndroid Build Coastguard Worker# unset it for safety. 208*9e94795aSAndroid Build Coastguard WorkerBUILD_THUMBPRINT_FILE := 209*9e94795aSAndroid Build Coastguard WorkerBUILD_THUMBPRINT := 210*9e94795aSAndroid Build Coastguard Worker 211*9e94795aSAndroid Build Coastguard WorkerKNOWN_OEM_THUMBPRINT_PROPERTIES := \ 212*9e94795aSAndroid Build Coastguard Worker ro.product.brand \ 213*9e94795aSAndroid Build Coastguard Worker ro.product.name \ 214*9e94795aSAndroid Build Coastguard Worker ro.product.device 215*9e94795aSAndroid Build Coastguard WorkerOEM_THUMBPRINT_PROPERTIES := $(filter $(KNOWN_OEM_THUMBPRINT_PROPERTIES),\ 216*9e94795aSAndroid Build Coastguard Worker $(PRODUCT_OEM_PROPERTIES)) 217*9e94795aSAndroid Build Coastguard WorkerKNOWN_OEM_THUMBPRINT_PROPERTIES:= 218*9e94795aSAndroid Build Coastguard Worker 219*9e94795aSAndroid Build Coastguard Worker# ----------------------------------------------------------------- 220*9e94795aSAndroid Build Coastguard Worker# system/build.prop 221*9e94795aSAndroid Build Coastguard Worker# 222*9e94795aSAndroid Build Coastguard Worker# system/build.prop is built by Soong. See system-build.prop module in 223*9e94795aSAndroid Build Coastguard Worker# build/soong/Android.bp. 224*9e94795aSAndroid Build Coastguard Worker 225*9e94795aSAndroid Build Coastguard WorkerINSTALLED_BUILD_PROP_TARGET := $(TARGET_OUT)/build.prop 226*9e94795aSAndroid Build Coastguard Worker 227*9e94795aSAndroid Build Coastguard Worker# ----------------------------------------------------------------- 228*9e94795aSAndroid Build Coastguard Worker# vendor/build.prop 229*9e94795aSAndroid Build Coastguard Worker# 230*9e94795aSAndroid Build Coastguard Worker_prop_files_ := $(if $(TARGET_VENDOR_PROP),\ 231*9e94795aSAndroid Build Coastguard Worker $(TARGET_VENDOR_PROP),\ 232*9e94795aSAndroid Build Coastguard Worker $(wildcard $(TARGET_DEVICE_DIR)/vendor.prop)) 233*9e94795aSAndroid Build Coastguard Worker 234*9e94795aSAndroid Build Coastguard Workerandroid_info_prop := $(call intermediates-dir-for,ETC,android_info_prop)/android_info.prop 235*9e94795aSAndroid Build Coastguard Worker$(android_info_prop): $(INSTALLED_ANDROID_INFO_TXT_TARGET) 236*9e94795aSAndroid Build Coastguard Worker cat $< | grep 'require version-' | sed -e 's/require version-/ro.build.expect./g' > $@ 237*9e94795aSAndroid Build Coastguard Worker 238*9e94795aSAndroid Build Coastguard Worker_prop_files_ += $(android_info_prop) 239*9e94795aSAndroid Build Coastguard Worker 240*9e94795aSAndroid Build Coastguard Workerifdef property_overrides_split_enabled 241*9e94795aSAndroid Build Coastguard Worker# Order matters here. When there are duplicates, the last one wins. 242*9e94795aSAndroid Build Coastguard Worker# TODO(b/117892318): don't allow duplicates so that the ordering doesn't matter 243*9e94795aSAndroid Build Coastguard Worker_prop_vars_ := \ 244*9e94795aSAndroid Build Coastguard Worker ADDITIONAL_VENDOR_PROPERTIES \ 245*9e94795aSAndroid Build Coastguard Worker PRODUCT_VENDOR_PROPERTIES 246*9e94795aSAndroid Build Coastguard Worker 247*9e94795aSAndroid Build Coastguard Worker# TODO(b/117892318): deprecate this 248*9e94795aSAndroid Build Coastguard Worker_prop_vars_ += \ 249*9e94795aSAndroid Build Coastguard Worker PRODUCT_DEFAULT_PROPERTY_OVERRIDES \ 250*9e94795aSAndroid Build Coastguard Worker PRODUCT_PROPERTY_OVERRIDES 251*9e94795aSAndroid Build Coastguard Workerelse 252*9e94795aSAndroid Build Coastguard Worker_prop_vars_ := 253*9e94795aSAndroid Build Coastguard Workerendif 254*9e94795aSAndroid Build Coastguard Worker 255*9e94795aSAndroid Build Coastguard WorkerINSTALLED_VENDOR_BUILD_PROP_TARGET := $(TARGET_OUT_VENDOR)/build.prop 256*9e94795aSAndroid Build Coastguard Worker$(eval $(call build-properties,\ 257*9e94795aSAndroid Build Coastguard Worker vendor,\ 258*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_VENDOR_BUILD_PROP_TARGET),\ 259*9e94795aSAndroid Build Coastguard Worker $(_prop_files_),\ 260*9e94795aSAndroid Build Coastguard Worker $(_prop_vars_),\ 261*9e94795aSAndroid Build Coastguard Worker $(PRODUCT_VENDOR_PROPERTY_BLACKLIST),\ 262*9e94795aSAndroid Build Coastguard Worker $(empty),\ 263*9e94795aSAndroid Build Coastguard Worker $(empty))) 264*9e94795aSAndroid Build Coastguard Worker 265*9e94795aSAndroid Build Coastguard Worker$(eval $(call declare-1p-target,$(INSTALLED_VENDOR_BUILD_PROP_TARGET))) 266*9e94795aSAndroid Build Coastguard Worker 267*9e94795aSAndroid Build Coastguard Worker# ----------------------------------------------------------------- 268*9e94795aSAndroid Build Coastguard Worker# product/etc/build.prop 269*9e94795aSAndroid Build Coastguard Worker# 270*9e94795aSAndroid Build Coastguard Worker# product/etc/build.prop is built by Soong. See product-build.prop module in 271*9e94795aSAndroid Build Coastguard Worker# build/soong/Android.bp. 272*9e94795aSAndroid Build Coastguard Worker 273*9e94795aSAndroid Build Coastguard WorkerINSTALLED_PRODUCT_BUILD_PROP_TARGET := $(TARGET_OUT_PRODUCT)/etc/build.prop 274*9e94795aSAndroid Build Coastguard Worker 275*9e94795aSAndroid Build Coastguard Worker# ---------------------------------------------------------------- 276*9e94795aSAndroid Build Coastguard Worker# odm/etc/build.prop 277*9e94795aSAndroid Build Coastguard Worker# 278*9e94795aSAndroid Build Coastguard Worker# odm/etc/build.prop is built by Soong. See odm-build.prop module in 279*9e94795aSAndroid Build Coastguard Worker# build/soong/Android.bp. 280*9e94795aSAndroid Build Coastguard Worker 281*9e94795aSAndroid Build Coastguard WorkerINSTALLED_ODM_BUILD_PROP_TARGET := $(TARGET_OUT_ODM)/etc/build.prop 282*9e94795aSAndroid Build Coastguard Worker 283*9e94795aSAndroid Build Coastguard Worker# ---------------------------------------------------------------- 284*9e94795aSAndroid Build Coastguard Worker# vendor_dlkm/etc/build.prop 285*9e94795aSAndroid Build Coastguard Worker# odm_dlkm/etc/build.prop 286*9e94795aSAndroid Build Coastguard Worker# system_dlkm/build.prop 287*9e94795aSAndroid Build Coastguard Worker# These are built by Soong. See build/soong/Android.bp 288*9e94795aSAndroid Build Coastguard Worker 289*9e94795aSAndroid Build Coastguard WorkerINSTALLED_VENDOR_DLKM_BUILD_PROP_TARGET := $(TARGET_OUT_VENDOR_DLKM)/etc/build.prop 290*9e94795aSAndroid Build Coastguard WorkerINSTALLED_ODM_DLKM_BUILD_PROP_TARGET := $(TARGET_OUT_ODM_DLKM)/etc/build.prop 291*9e94795aSAndroid Build Coastguard WorkerINSTALLED_SYSTEM_DLKM_BUILD_PROP_TARGET := $(TARGET_OUT_SYSTEM_DLKM)/etc/build.prop 292*9e94795aSAndroid Build Coastguard WorkerALL_DEFAULT_INSTALLED_MODULES += \ 293*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_VENDOR_DLKM_BUILD_PROP_TARGET) \ 294*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_ODM_DLKM_BUILD_PROP_TARGET) \ 295*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_SYSTEM_DLKM_BUILD_PROP_TARGET) \ 296*9e94795aSAndroid Build Coastguard Worker 297*9e94795aSAndroid Build Coastguard Worker# ----------------------------------------------------------------- 298*9e94795aSAndroid Build Coastguard Worker# system_ext/etc/build.prop 299*9e94795aSAndroid Build Coastguard Worker# 300*9e94795aSAndroid Build Coastguard Worker# system_ext/etc/build.prop is built by Soong. See system-build.prop module in 301*9e94795aSAndroid Build Coastguard Worker# build/soong/Android.bp. 302*9e94795aSAndroid Build Coastguard Worker 303*9e94795aSAndroid Build Coastguard WorkerINSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET := $(TARGET_OUT_SYSTEM_EXT)/etc/build.prop 304*9e94795aSAndroid Build Coastguard Worker 305*9e94795aSAndroid Build Coastguard WorkerRAMDISK_BUILD_PROP_REL_PATH := system/etc/ramdisk/build.prop 306*9e94795aSAndroid Build Coastguard Workerifeq (true,$(BOARD_USES_RECOVERY_AS_BOOT)) 307*9e94795aSAndroid Build Coastguard WorkerINSTALLED_RAMDISK_BUILD_PROP_TARGET := $(TARGET_RECOVERY_ROOT_OUT)/first_stage_ramdisk/$(RAMDISK_BUILD_PROP_REL_PATH) 308*9e94795aSAndroid Build Coastguard Workerelse 309*9e94795aSAndroid Build Coastguard WorkerINSTALLED_RAMDISK_BUILD_PROP_TARGET := $(TARGET_RAMDISK_OUT)/$(RAMDISK_BUILD_PROP_REL_PATH) 310*9e94795aSAndroid Build Coastguard Workerendif 311*9e94795aSAndroid Build Coastguard Worker 312*9e94795aSAndroid Build Coastguard WorkerALL_INSTALLED_BUILD_PROP_FILES := \ 313*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_BUILD_PROP_TARGET) \ 314*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_VENDOR_BUILD_PROP_TARGET) \ 315*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) \ 316*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_ODM_BUILD_PROP_TARGET) \ 317*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_VENDOR_DLKM_BUILD_PROP_TARGET) \ 318*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_ODM_DLKM_BUILD_PROP_TARGET) \ 319*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_SYSTEM_DLKM_BUILD_PROP_TARGET) \ 320*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_SYSTEM_EXT_BUILD_PROP_TARGET) \ 321*9e94795aSAndroid Build Coastguard Worker $(INSTALLED_RAMDISK_BUILD_PROP_TARGET) 322*9e94795aSAndroid Build Coastguard Worker 323*9e94795aSAndroid Build Coastguard Worker# $1 installed file path, e.g. out/target/product/vsoc_x86_64/system/build.prop 324*9e94795aSAndroid Build Coastguard Workerdefine is-build-prop 325*9e94795aSAndroid Build Coastguard Worker$(if $(findstring $1,$(ALL_INSTALLED_BUILD_PROP_FILES)),Y) 326*9e94795aSAndroid Build Coastguard Workerendef 327