# # Copyright (C) 2020 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. #
# sysprop.mk defines rules for generating <partition>/[etc/]build.prop files
# Emits a set of sysprops common to all partitions to a file. # $(1): Partition name # $(2): Output file name define generate-common-build-props echo"####################################" >> $(2);\ echo"# from generate-common-build-props" >> $(2);\ echo"# These properties identify this partition image." >> $(2);\ echo"####################################" >> $(2);\ echo"ro.product.$(1).brand=$(PRODUCT_BRAND)" >> $(2);\ echo"ro.product.$(1).device=$(TARGET_DEVICE)" >> $(2);\ echo"ro.product.$(1).manufacturer=$(PRODUCT_MANUFACTURER)" >> $(2);\ echo"ro.product.$(1).model=$(PRODUCT_MODEL)" >> $(2);\ echo"ro.product.$(1).name=$(TARGET_PRODUCT)" >> $(2);\ if [ -n "$(strip $(PRODUCT_MODEL_FOR_ATTESTATION))" ]; then \ echo"ro.product.model_for_attestation=$(PRODUCT_MODEL_FOR_ATTESTATION)" >> $(2);\ fi; \ if [ -n "$(strip $(PRODUCT_BRAND_FOR_ATTESTATION))" ]; then \ echo"ro.product.brand_for_attestation=$(PRODUCT_BRAND_FOR_ATTESTATION)" >> $(2);\ fi; \ if [ -n "$(strip $(PRODUCT_NAME_FOR_ATTESTATION))" ]; then \ echo"ro.product.name_for_attestation=$(PRODUCT_NAME_FOR_ATTESTATION)" >> $(2);\ fi; \ if [ -n "$(strip $(PRODUCT_DEVICE_FOR_ATTESTATION))" ]; then \ echo"ro.product.device_for_attestation=$(PRODUCT_DEVICE_FOR_ATTESTATION)" >> $(2);\ fi; \ if [ -n "$(strip $(PRODUCT_MANUFACTURER_FOR_ATTESTATION))" ]; then \ echo"ro.product.manufacturer_for_attestation=$(PRODUCT_MANUFACTURER_FOR_ATTESTATION)" >> $(2);\ fi; \
$(if $(filter true,$(ZYGOTE_FORCE_64)),\
$(if $(filter vendor,$(1)),\ echo"ro.$(1).product.cpu.abilist=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\ echo"ro.$(1).product.cpu.abilist32=" >> $(2);\ echo"ro.$(1).product.cpu.abilist64=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\
)\
,\
$(if $(filter system vendor odm,$(1)),\ echo"ro.$(1).product.cpu.abilist=$(TARGET_CPU_ABI_LIST)" >> $(2);\ echo"ro.$(1).product.cpu.abilist32=$(TARGET_CPU_ABI_LIST_32_BIT)" >> $(2);\ echo"ro.$(1).product.cpu.abilist64=$(TARGET_CPU_ABI_LIST_64_BIT)" >> $(2);\
)\
)\ echo"ro.$(1).build.date=`$(DATE_FROM_FILE)`" >> $(2);\ echo"ro.$(1).build.date.utc=`$(DATE_FROM_FILE) +%s`" >> $(2);\ # Allow optional assignments for ARC forward-declarations (b/249168657) # TODO: Remove any tag-related inconsistencies once the goals from # go/arc-android-sigprop-changes have been achieved. echo"ro.$(1).build.fingerprint?=$(BUILD_FINGERPRINT_FROM_FILE)" >> $(2);\ echo"ro.$(1).build.id?=$(BUILD_ID)" >> $(2);\ echo"ro.$(1).build.uuid?=$(BUILD_UUID_FROM_FILE)" >> $(2);\ echo"ro.$(1).build.tags?=$(BUILD_VERSION_TAGS)" >> $(2);\ echo"ro.$(1).build.type=$(TARGET_BUILD_VARIANT)" >> $(2);\ echo"ro.$(1).build.version.incremental=$(BUILD_NUMBER_FROM_FILE)" >> $(2);\ echo"ro.$(1).build.version.release=$(PLATFORM_VERSION_LAST_STABLE)" >> $(2);\ echo"ro.$(1).build.version.release_or_codename=$(PLATFORM_VERSION)" >> $(2);\ echo"ro.$(1).build.version.sdk=$(PLATFORM_SDK_VERSION)" >> $(2);\ echo"ro.$(1).build.version.sdk_full=$(PLATFORM_SDK_VERSION_FULL)" >> $(2);\
endef
# Rule for generating <partition>/[etc/]build.prop file # # $(1): partition name # $(2): path to the output # $(3): path to the input *.prop files. The contents of the files are directly # emitted to the output # $(4): list of variable names each of which contains name=value pairs # $(5): optional list of prop names to force remove from the output. Properties from both # $(3) and (4) are affected # $(6): optional list of files to append at the end. The content of each file is emitted # to the output # $(7): optional flag to skip common properties generation define build-properties
ALL_DEFAULT_INSTALLED_MODULES += $(2)
$(eval# Properties can be assigned using `prop ?= value` or `prop = value` syntax.)
$(eval# Eliminate spaces around the ?= and = separators.)
$(foreach name,$(strip $(4)),\
$(eval _temp := $$(call collapse-pairs,$$($(name)),?=))\
$(eval _resolved_$(name) := $$(call collapse-pairs,$$(_temp),=))\
)
$(eval# Implement the legacy behavior when BUILD_BROKEN_DUP_SYSPROP is on.)
$(eval# Optional assignments are all converted to normal assignments and)
$(eval# when their duplicates the first one wins)
$(if $(filter true,$(BUILD_BROKEN_DUP_SYSPROP)),\
$(foreach name,$(strip $(4)),\
$(eval _temp := $$(subst ?=,=,$$(_resolved_$(name))))\
$(eval _resolved_$(name) := $$(call uniq-pairs-by-first-component,$$(_resolved_$(name)),=))\
)\
$(eval _option := --allow-dup)\
)
$(2): $(POST_PROCESS_PROPS) $(INTERNAL_BUILD_ID_MAKEFILE) $(3) $(6) $(BUILT_KERNEL_VERSION_FILE_FOR_UFFD_GC)
$(hide) echo Building $$@
$(hide) mkdir -p $$(dir $$@)
$(hide) rm -f $$@ && touch $$@ ifneq ($(strip $(7)), true)
$(hide) $$(call generate-common-build-props,$(call to-lower,$(strip $(1))),$$@) endif # Make and Soong use different intermediate files to build vendor/build.prop. # Although the sysprop contents are same, the absolute paths of android-info.prop are different. # Print the filename for the intermediate files (files in OUT_DIR). # This helps with validating mk->soong migration of android partitions.
$(hide) $(foreach file,$(strip $(3)),\ if [ -f "$(file)" ]; then\ echo"" >> $$@;\ echo"####################################" >> $$@;\
$(if $(filter $(OUT_DIR)/%,$(file)), \ echo"# from $(notdir $(file))" >> $$@;\
,\ echo"# from $(file)" >> $$@;\
)\ echo"####################################" >> $$@;\ cat $(file) >> $$@;\ fi;)
$(hide) $(foreach name,$(strip $(4)),\ echo"" >> $$@;\ echo"####################################" >> $$@;\ echo"# from variable $(name)" >> $$@;\ echo"####################################" >> $$@;\
$$(foreach line,$$(_resolved_$(name)),\ echo"$$(line)" >> $$@;\
)\
)
$(hide) $(POST_PROCESS_PROPS) $$(_option) \
--sdk-version $(PLATFORM_SDK_VERSION) \
--kernel-version-file-for-uffd-gc "$(BUILT_KERNEL_VERSION_FILE_FOR_UFFD_GC)" \
$$@ $(5)
$(hide) $(foreach file,$(strip $(6)),\ if [ -f "$(file)" ]; then\ cat $(file) >> $$@;\ fi;)
$(hide) echo"# end of file" >> $$@
# ----------------------------------------------------------------- # system/build.prop # # system/build.prop is built by Soong. See system-build.prop module in # build/soong/Android.bp.
ifdef property_overrides_split_enabled # Order matters here. When there are duplicates, the last one wins. # TODO(b/117892318): don't allow duplicates so that the ordering doesn't matter
_prop_vars_ := \
ADDITIONAL_VENDOR_PROPERTIES \
PRODUCT_VENDOR_PROPERTIES
# ----------------------------------------------------------------- # product/etc/build.prop # # product/etc/build.prop is built by Soong. See product-build.prop module in # build/soong/Android.bp.
# ---------------------------------------------------------------- # odm/etc/build.prop # # odm/etc/build.prop is built by Soong. See odm-build.prop module in # build/soong/Android.bp.
# ---------------------------------------------------------------- # vendor_dlkm/etc/build.prop # odm_dlkm/etc/build.prop # system_dlkm/build.prop # These are built by Soong. See build/soong/Android.bp
# ----------------------------------------------------------------- # system_ext/etc/build.prop # # system_ext/etc/build.prop is built by Soong. See system-build.prop module in # build/soong/Android.bp.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.