Merge "Combine aconfig cache files into per-partition dumps." into main
This commit is contained in:
124
core/Makefile
124
core/Makefile
@@ -16,53 +16,93 @@ VENDOR_DLKM_NOTICE_DEPS :=
|
||||
ODM_DLKM_NOTICE_DEPS :=
|
||||
SYSTEM_DLKM_NOTICE_DEPS :=
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Release Config Flags
|
||||
|
||||
# Create a summary file of build flags for each partition
|
||||
# $(1): build flags json file
|
||||
# $(2): flag names
|
||||
define generate-partition-build-flag-file
|
||||
$(eval $(strip $(1)): PRIVATE_OUT := $(strip $(1)))
|
||||
$(eval $(strip $(1)): PRIVATE_FLAG_NAMES := $(strip $(2)))
|
||||
$(strip $(1)):
|
||||
mkdir -p $$(dir $$(PRIVATE_OUT))
|
||||
echo '{' > $$(PRIVATE_OUT)
|
||||
echo '"flags": [' >> $$(PRIVATE_OUT)
|
||||
$$(foreach flag, $$(PRIVATE_FLAG_NAMES), \
|
||||
( \
|
||||
printf ' { "name": "%s", "value": "%s", ' \
|
||||
'$$(flag)' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).VALUE)' \
|
||||
; \
|
||||
printf '"set": "%s", "default": "%s", "declared": "%s" }' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).SET_IN)' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).DEFAULT)' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).DECLARED_IN)' \
|
||||
; \
|
||||
printf '$$(if $$(filter $$(lastword $$(PRIVATE_FLAG_NAMES)),$$(flag)),,$$(comma))\n' ; \
|
||||
) >> $$(PRIVATE_OUT) \
|
||||
)
|
||||
echo "]" >> $$(PRIVATE_OUT)
|
||||
echo "}" >> $$(PRIVATE_OUT)
|
||||
# IMAGES_TO_BUILD is a list of the partition .img files that will be created.
|
||||
IMAGES_TO_BUILD:=
|
||||
ifneq ($(BUILDING_BOOT_IMAGE),)
|
||||
IMAGES_TO_BUILD += boot
|
||||
endif
|
||||
ifneq ($(BUILDING_CACHE_IMAGE),)
|
||||
IMAGES_TO_BUILD += cache
|
||||
endif
|
||||
ifneq ($(BUILDING_DEBUG_BOOT_IMAGE),)
|
||||
IMAGES_TO_BUILD += debug_boot
|
||||
endif
|
||||
ifneq ($(BUILDING_DEBUG_VENDOR_BOOT_IMAGE),)
|
||||
IMAGES_TO_BUILD += debug_vendor_boot
|
||||
endif
|
||||
ifneq ($(BUILDING_INIT_BOOT_IMAGE),)
|
||||
IMAGES_TO_BUILD += init_boot
|
||||
endif
|
||||
ifneq ($(BUILDING_ODM_DLKM_IMAGE),)
|
||||
IMAGES_TO_BUILD += odm_dlkm
|
||||
endif
|
||||
ifneq ($(BUILDING_ODM_IMAGE),)
|
||||
IMAGES_TO_BUILD += odm
|
||||
endif
|
||||
ifneq ($(BUILDING_PRODUCT_IMAGE),)
|
||||
IMAGES_TO_BUILD += product
|
||||
endif
|
||||
ifneq ($(BUILDING_RAMDISK_IMAGE),)
|
||||
IMAGES_TO_BUILD += ramdisk
|
||||
endif
|
||||
ifneq ($(BUILDING_RECOVERY_IMAGE),)
|
||||
IMAGES_TO_BUILD += recovery
|
||||
endif
|
||||
ifneq ($(BUILDING_SUPER_EMPTY_IMAGE),)
|
||||
IMAGES_TO_BUILD += super_empty
|
||||
endif
|
||||
ifneq ($(BUILDING_SYSTEM_DLKM_IMAGE),)
|
||||
IMAGES_TO_BUILD += system_dlkm
|
||||
endif
|
||||
ifneq ($(BUILDING_SYSTEM_EXT_IMAGE),)
|
||||
IMAGES_TO_BUILD += system_ext
|
||||
endif
|
||||
ifneq ($(BUILDING_SYSTEM_IMAGE),)
|
||||
IMAGES_TO_BUILD += system
|
||||
endif
|
||||
ifneq ($(BUILDING_SYSTEM_OTHER_IMAGE),)
|
||||
IMAGES_TO_BUILD += system_other
|
||||
endif
|
||||
ifneq ($(BUILDING_USERDATA_IMAGE),)
|
||||
IMAGES_TO_BUILD += userdata
|
||||
endif
|
||||
ifneq ($(BUILDING_VBMETA_IMAGE),)
|
||||
IMAGES_TO_BUILD += vbmeta
|
||||
endif
|
||||
ifneq ($(BUILDING_VENDOR_BOOT_IMAGE),)
|
||||
IMAGES_TO_BUILD += vendor_boot
|
||||
endif
|
||||
ifneq ($(BUILDING_VENDOR_DLKM_IMAGE),)
|
||||
IMAGES_TO_BUILD += vendor_dlkm
|
||||
endif
|
||||
ifneq ($(BUILDING_VENDOR_IMAGE),)
|
||||
IMAGES_TO_BUILD += vendor
|
||||
endif
|
||||
ifneq ($(BUILDING_VENDOR_KERNEL_BOOT_IMAGE),)
|
||||
IMAGES_TO_BUILD += vendor_kernel_boot
|
||||
endif
|
||||
|
||||
|
||||
###########################################################
|
||||
# Get the module names suitable for ALL_MODULES.* variables that are installed
|
||||
# for a given partition
|
||||
#
|
||||
# $(1): Partition
|
||||
###########################################################
|
||||
define register-names-for-partition
|
||||
$(sort $(foreach m,$(product_MODULES),\
|
||||
$(if $(filter $(PRODUCT_OUT)/$(strip $(1))/%, $(ALL_MODULES.$(m).INSTALLED)), \
|
||||
$(m)
|
||||
) \
|
||||
))
|
||||
endef
|
||||
|
||||
_FLAG_PARTITIONS := product system system_ext vendor
|
||||
|
||||
$(foreach partition, $(_FLAG_PARTITIONS), \
|
||||
$(eval BUILD_FLAG_SUMMARIES.$(partition) \
|
||||
:= $(TARGET_OUT_FLAGS)/$(partition)/etc/build_flags.json) \
|
||||
$(eval $(call generate-partition-build-flag-file, \
|
||||
$(BUILD_FLAG_SUMMARIES.$(partition)), \
|
||||
$(_ALL_RELEASE_FLAGS.PARTITIONS.$(partition)) \
|
||||
) \
|
||||
) \
|
||||
)
|
||||
# Release & Aconfig Flags
|
||||
# -----------------------------------------------------------------
|
||||
include $(BUILD_SYSTEM)/packaging/flags.mk
|
||||
|
||||
# TODO: Remove
|
||||
.PHONY: flag-files
|
||||
flag-files: $(foreach partition, $(_FLAG_PARTITIONS), \
|
||||
$(TARGET_OUT_FLAGS)/$(partition)/etc/build_flags.json)
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Define rules to copy PRODUCT_COPY_FILES defined by the product.
|
||||
|
@@ -1058,6 +1058,10 @@ ALL_MODULES.$(my_register_name).SUPPORTED_VARIANTS := \
|
||||
$(ALL_MODULES.$(my_register_name).SUPPORTED_VARIANTS) \
|
||||
$(filter-out $(ALL_MODULES.$(my_register_name).SUPPORTED_VARIANTS),$(my_supported_variant))
|
||||
|
||||
ALL_MODULES.$(my_register_name).ACONFIG_FILES := \
|
||||
$(ALL_MODULES.$(my_register_name).ACONFIG_FILES) $(LOCAL_ACONFIG_FILES)
|
||||
|
||||
|
||||
##########################################################################
|
||||
## When compiling against API imported module, use API import stub
|
||||
## libraries.
|
||||
|
@@ -9,6 +9,7 @@ LOCAL_AAPT2_ONLY:=
|
||||
LOCAL_AAPT_FLAGS:=
|
||||
LOCAL_AAPT_INCLUDE_ALL_RESOURCES:=
|
||||
LOCAL_AAPT_NAMESPACES:=
|
||||
LOCAL_ACONFIG_FILES:=
|
||||
LOCAL_ADDITIONAL_CERTIFICATES:=
|
||||
LOCAL_ADDITIONAL_CHECKED_MODULE:=
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES:=
|
||||
|
@@ -625,6 +625,7 @@ FILESLIST := $(HOST_OUT_EXECUTABLES)/fileslist
|
||||
FILESLIST_UTIL :=$= build/make/tools/fileslist_util.py
|
||||
HOST_INIT_VERIFIER := $(HOST_OUT_EXECUTABLES)/host_init_verifier
|
||||
XMLLINT := $(HOST_OUT_EXECUTABLES)/xmllint
|
||||
ACONFIG := $(HOST_OUT_EXECUTABLES)/aconfig
|
||||
|
||||
# SOONG_ZIP is exported by Soong, but needs to be defined early for
|
||||
# $OUT/dexpreopt.global. It will be verified against the Soong version.
|
||||
|
@@ -1364,6 +1364,7 @@ else ifdef FULL_BUILD
|
||||
product_host_FILES := $(call host-installed-files,$(INTERNAL_PRODUCT))
|
||||
product_target_FILES := $(call product-installed-files, $(INTERNAL_PRODUCT))
|
||||
# WARNING: The product_MODULES variable is depended on by external files.
|
||||
# It contains the list of register names that will be installed on the device
|
||||
product_MODULES := $(_pif_modules)
|
||||
|
||||
# Verify the artifact path requirements made by included products.
|
||||
|
122
core/packaging/flags.mk
Normal file
122
core/packaging/flags.mk
Normal file
@@ -0,0 +1,122 @@
|
||||
# Copyright (C) 2023 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.
|
||||
|
||||
#
|
||||
# This file is included by build/make/core/Makefile, and contains the logic for
|
||||
# the combined flags files.
|
||||
#
|
||||
|
||||
# TODO: Should we do all of the images in $(IMAGES_TO_BUILD)?
|
||||
_FLAG_PARTITIONS := product system system_ext vendor
|
||||
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Release Config Flags
|
||||
|
||||
# Create a summary file of build flags for each partition
|
||||
# $(1): built build flags json file
|
||||
# $(2): installed build flags json file
|
||||
# $(3): flag names
|
||||
define generate-partition-build-flag-file
|
||||
$(eval $(strip $(1)): PRIVATE_OUT := $(strip $(1)))
|
||||
$(eval $(strip $(1)): PRIVATE_FLAG_NAMES := $(strip $(3)))
|
||||
$(strip $(1)):
|
||||
mkdir -p $$(dir $$(PRIVATE_OUT))
|
||||
echo '{' > $$(PRIVATE_OUT)
|
||||
echo '"flags": [' >> $$(PRIVATE_OUT)
|
||||
$$(foreach flag, $$(PRIVATE_FLAG_NAMES), \
|
||||
( \
|
||||
printf ' { "name": "%s", "value": "%s", ' \
|
||||
'$$(flag)' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).VALUE)' \
|
||||
; \
|
||||
printf '"set": "%s", "default": "%s", "declared": "%s" }' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).SET_IN)' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).DEFAULT)' \
|
||||
'$$(_ALL_RELEASE_FLAGS.$$(flag).DECLARED_IN)' \
|
||||
; \
|
||||
printf '$$(if $$(filter $$(lastword $$(PRIVATE_FLAG_NAMES)),$$(flag)),,$$(comma))\n' ; \
|
||||
) >> $$(PRIVATE_OUT) ; \
|
||||
)
|
||||
echo "]" >> $$(PRIVATE_OUT)
|
||||
echo "}" >> $$(PRIVATE_OUT)
|
||||
$(call copy-one-file, $(1), $(2))
|
||||
endef
|
||||
|
||||
$(foreach partition, $(_FLAG_PARTITIONS), \
|
||||
$(eval build_flag_summaries.$(partition) := $(PRODUCT_OUT)/$(partition)/etc/build_flags.json) \
|
||||
$(eval $(call generate-partition-build-flag-file, \
|
||||
$(TARGET_OUT_FLAGS)/$(partition)/build_flags.json, \
|
||||
$(build_flag_summaries.$(partition)), \
|
||||
$(_ALL_RELEASE_FLAGS.PARTITIONS.$(partition)) \
|
||||
) \
|
||||
) \
|
||||
)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Aconfig Flags
|
||||
|
||||
# Create a summary file of build flags for each partition
|
||||
# $(1): built aconfig flags textprot file (out)
|
||||
# $(2): installed aconfig flags textprot file (out)
|
||||
# $(3): input aconfig files for the partition (in)
|
||||
define generate-partition-aconfig-flag-file
|
||||
$(eval $(strip $(1)): PRIVATE_OUT := $(strip $(1)))
|
||||
$(eval $(strip $(1)): PRIVATE_IN := $(strip $(3)))
|
||||
$(strip $(1)): $(ACONFIG)
|
||||
mkdir -p $$(dir $$(PRIVATE_OUT))
|
||||
$$(if $$(PRIVATE_IN), \
|
||||
$$(ACONFIG) dump --format textproto --out $$(PRIVATE_OUT) \
|
||||
$$(addprefix --cache ,$$(PRIVATE_IN)), \
|
||||
echo "# No aconfig flags" > $$(PRIVATE_OUT) \
|
||||
)
|
||||
$(call copy-one-file, $(1), $(2))
|
||||
endef
|
||||
|
||||
|
||||
$(foreach partition, $(_FLAG_PARTITIONS), \
|
||||
$(eval aconfig_flag_summaries.$(partition) := $(PRODUCT_OUT)/$(partition)/etc/aconfig_flags.textproto) \
|
||||
$(eval $(call generate-partition-aconfig-flag-file, \
|
||||
$(TARGET_OUT_FLAGS)/$(partition)/aconfig_flags.textproto, \
|
||||
$(aconfig_flag_summaries.$(partition)), \
|
||||
$(sort $(foreach m,$(call register-names-for-partition, $(partition)), \
|
||||
$(ALL_MODULES.$(m).ACONFIG_FILES) \
|
||||
)) \
|
||||
)) \
|
||||
)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
# Install the ones we need for the configured product
|
||||
required_flags_files := \
|
||||
$(sort $(foreach partition, $(filter $(IMAGES_TO_BUILD), $(_FLAG_PARTITIONS)), \
|
||||
$(build_flag_summaries.$(partition)) \
|
||||
$(aconfig_flag_summaries.$(partition)) \
|
||||
))
|
||||
|
||||
ALL_DEFAULT_INSTALLED_MODULES += $(required_flags_files)
|
||||
|
||||
# TODO: Remove
|
||||
.PHONY: flag-files
|
||||
flag-files: $(required_flags_files)
|
||||
|
||||
|
||||
# Clean up
|
||||
required_flags_files:=
|
||||
$(foreach partition, $(_FLAG_PARTITIONS), \
|
||||
$(eval build_flag_summaries.$(partition):=) \
|
||||
$(eval aconfig_flag_summaries.$(partition):=) \
|
||||
)
|
||||
|
Reference in New Issue
Block a user