Loading core/Makefile +162 −2 Original line number Diff line number Diff line Loading @@ -423,6 +423,32 @@ ifdef property_overrides_split_enabled $(hide) build/make/tools/post_process_props.py $@ endif # property_overrides_split_enabled # ----------------------------------------------------------------- # product build.prop INSTALLED_PRODUCT_BUILD_PROP_TARGET := $(TARGET_OUT_PRODUCT)/build.prop ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) FINAL_PRODUCT_PROPERTIES += \ $(call collapse-pairs, $(PRODUCT_PRODUCT_PROPERTIES)) FINAL_PRODUCT_PROPERTIES := $(call uniq-pairs-by-first-component, \ $(FINAL_PRODUCT_PROPERTIES),=) $(INSTALLED_PRODUCT_BUILD_PROP_TARGET): @echo Target product buildinfo: $@ @mkdir -p $(dir $@) $(hide) echo > $@ ifdef BOARD_USES_PRODUCTIMAGE $(hide) echo ro.product.build.date=`$(DATE_FROM_FILE)`>>$@ $(hide) echo ro.product.build.date.utc=`$(DATE_FROM_FILE) +%s`>>$@ $(hide) echo ro.product.build.fingerprint="$(BUILD_FINGERPRINT_FROM_FILE)">>$@ endif # BOARD_USES_PRODUCTIMAGE $(hide) echo "#" >> $@; \ echo "# ADDITIONAL PRODUCT PROPERTIES" >> $@; \ echo "#" >> $@; $(hide) $(foreach line,$(FINAL_PRODUCT_PROPERTIES), \ echo "$(line)" >> $@;) $(hide) build/make/tools/post_process_props.py $@ # ---------------------------------------------------------------- # ----------------------------------------------------------------- Loading Loading @@ -1013,7 +1039,7 @@ endif ifneq (true,$(TARGET_USERIMAGES_SPARSE_SQUASHFS_DISABLED)) INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG := -s endif ifneq ($(filter $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),) ifneq ($(filter $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE) $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),) INTERNAL_USERIMAGES_DEPS += $(MAKE_SQUASHFS) $(MKSQUASHFSUSERIMG) $(IMG2SIMG) endif Loading Loading @@ -1066,6 +1092,15 @@ $(if $(BOARD_VENDORIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "vendor_squashfs_ $(if $(BOARD_VENDORIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "vendor_squashfs_block_size=$(BOARD_VENDORIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1)) $(if $(BOARD_VENDORIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "vendor_squashfs_disable_4k_align=$(BOARD_VENDORIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH),$(hide) echo "vendor_base_fs_file=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "product_fs_type=$(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_EXTFS_INODE_COUNT),$(hide) echo "product_extfs_inode_count=$(BOARD_PRODUCTIMAGE_EXTFS_INODE_COUNT)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_PARTITION_SIZE),$(hide) echo "product_size=$(BOARD_PRODUCTIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_JOURNAL_SIZE),$(hide) echo "product_journal_size=$(BOARD_PRODUCTIMAGE_JOURNAL_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR),$(hide) echo "product_squashfs_compressor=$(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "product_squashfs_compressor_opt=$(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR_OPT)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "product_squashfs_block_size=$(BOARD_PRODUCTIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "product_squashfs_disable_4k_align=$(BOARD_PRODUCTIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH),$(hide) echo "product_base_fs_file=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH)" >> $(1)) $(if $(BOARD_OEMIMAGE_PARTITION_SIZE),$(hide) echo "oem_size=$(BOARD_OEMIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_OEMIMAGE_JOURNAL_SIZE),$(hide) echo "oem_journal_size=$(BOARD_OEMIMAGE_JOURNAL_SIZE)" >> $(1)) $(if $(BOARD_OEMIMAGE_EXTFS_INODE_COUNT),$(hide) echo "oem_extfs_inode_count=$(BOARD_OEMIMAGE_EXTFS_INODE_COUNT)" >> $(1)) Loading @@ -1080,6 +1115,7 @@ $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VERITY_FEC),$(hide) echo "v $(if $(filter eng, $(TARGET_BUILD_VARIANT)),$(hide) echo "verity_disable=true" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_VERITY_PARTITION),$(hide) echo "system_verity_block_device=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_VERITY_PARTITION),$(hide) echo "vendor_verity_block_device=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_VERITY_PARTITION),$(hide) echo "product_verity_block_device=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_key=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_KEY)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_subkey=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_SUBKEY)" >> $(1)) Loading @@ -1100,6 +1136,13 @@ $(if $(BOARD_AVB_ENABLE),\ $(hide) echo "avb_vendor_key_path=$(BOARD_AVB_VENDOR_KEY_PATH)" >> $(1) $(hide) echo "avb_vendor_algorithm=$(BOARD_AVB_VENDOR_ALGORITHM)" >> $(1) $(hide) echo "avb_vendor_rollback_index_location=$(BOARD_AVB_VENDOR_ROLLBACK_INDEX_LOCATION)" >> $(1))) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_product_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1)) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_product_add_hashtree_footer_args=$(BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS)" >> $(1)) $(if $(BOARD_AVB_ENABLE),\ $(if $(BOARD_AVB_PRODUCT_KEY_PATH),\ $(hide) echo "avb_product_key_path=$(BOARD_AVB_PRODUCT_KEY_PATH)" >> $(1) $(hide) echo "avb_product_algorithm=$(BOARD_AVB_PRODUCT_ALGORITHM)" >> $(1) $(hide) echo "avb_product_rollback_index_location=$(BOARD_AVB_PRODUCT_ROLLBACK_INDEX_LOCATION)" >> $(1))) $(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),\ $(hide) echo "recovery_as_boot=true" >> $(1)) $(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\ Loading Loading @@ -1151,6 +1194,9 @@ recovery_build_props := $(intermediate_system_build_prop) ifdef property_overrides_split_enabled recovery_build_props += $(INSTALLED_VENDOR_BUILD_PROP_TARGET) endif ifdef BOARD_USES_PRODUCTIMAGE recovery_build_props += $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) endif recovery_resources_common := $(call include-path-for, recovery)/res # Set recovery_density to the density bucket of the device. Loading Loading @@ -1443,10 +1489,26 @@ define create-system-vendor-symlink endef endif # Create symlink /system/product to /product if necessary. ifdef BOARD_USES_PRODUCTIMAGE define create-system-product-symlink $(hide) if [ -d $(TARGET_OUT)/product ] && [ ! -h $(TARGET_OUT)/product ]; then \ echo 'Non-symlink $(TARGET_OUT)/product detected!' 1>&2; \ echo 'You cannot install files to $(TARGET_OUT)/product while building a separate product.img!' 1>&2; \ exit 1; \ fi $(hide) ln -sf /product $(TARGET_OUT)/product endef else define create-system-product-symlink endef endif # $(1): output file define build-systemimage-target @echo "Target system fs image: $(1)" $(call create-system-vendor-symlink) $(call create-system-product-symlink) @mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt $(call generate-userimage-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt, \ skip_fsck=true) Loading Loading @@ -1521,6 +1583,7 @@ sync: $(INTERNAL_SYSTEMIMAGE_FILES) define build-systemtarball-target $(call pretty,"Target system fs tarball: $(INSTALLED_SYSTEMTARBALL_TARGET)") $(call create-system-vendor-symlink) $(call create-system-product-symlink) $(MKTARBALL) $(FS_GET_STATS) \ $(PRODUCT_OUT) system $(PRIVATE_SYSTEM_TAR) \ $(INSTALLED_SYSTEMTARBALL_TARGET) $(TARGET_OUT) Loading Loading @@ -1601,6 +1664,10 @@ ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ $(TARGET_COPY_OUT_VENDOR) endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ $(TARGET_COPY_OUT_PRODUCT) endif ifneq ($(PDK_PLATFORM_JAVA_ZIP_CONTENTS),) $(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS) endif Loading Loading @@ -1908,6 +1975,55 @@ INSTALLED_VENDORIMAGE_TARGET := $(PRODUCT_OUT)/vendor.img $(eval $(call copy-one-file,$(BOARD_PREBUILT_VENDORIMAGE),$(INSTALLED_VENDORIMAGE_TARGET))) endif # ----------------------------------------------------------------- # product partition image ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE INTERNAL_PRODUCTIMAGE_FILES := \ $(filter $(TARGET_OUT_PRODUCT)/%,\ $(ALL_DEFAULT_INSTALLED_MODULES)\ $(ALL_PDK_FUSION_FILES)) # platform.zip depends on $(INTERNAL_PRODUCTIMAGE_FILES). $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_PRODUCTIMAGE_FILES) INSTALLED_FILES_FILE_PRODUCT := $(PRODUCT_OUT)/installed-files-product.txt $(INSTALLED_FILES_FILE_PRODUCT) : $(INTERNAL_PRODUCTIMAGE_FILES) $(FILESLIST) @echo Installed file list: $@ @mkdir -p $(dir $@) @rm -f $@ $(hide) $(FILESLIST) $(TARGET_OUT_PRODUCT) > $(@:.txt=.json) $(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@ productimage_intermediates := \ $(call intermediates-dir-for,PACKAGING,product) BUILT_PRODUCTIMAGE_TARGET := $(PRODUCT_OUT)/product.img define build-productimage-target $(call pretty,"Target product fs image: $(INSTALLED_PRODUCTIMAGE_TARGET)") @mkdir -p $(TARGET_OUT_PRODUCT) @mkdir -p $(productimage_intermediates) && rm -rf $(productimage_intermediates)/product_image_info.txt $(call generate-userimage-prop-dictionary, $(productimage_intermediates)/product_image_info.txt, skip_fsck=true) $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \ ./build/tools/releasetools/build_image.py \ $(TARGET_OUT_PRODUCT) $(productimage_intermediates)/product_image_info.txt $(INSTALLED_PRODUCTIMAGE_TARGET) $(TARGET_OUT) $(hide) $(call assert-max-image-size,$(INSTALLED_PRODUCTIMAGE_TARGET),$(BOARD_PRODUCTIMAGE_PARTITION_SIZE)) endef # We just build this directly to the install location. INSTALLED_PRODUCTIMAGE_TARGET := $(BUILT_PRODUCTIMAGE_TARGET) $(INSTALLED_PRODUCTIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_PRODUCTIMAGE_FILES) $(INSTALLED_FILES_FILE_PRODUCT) $(BUILD_IMAGE_SRCS) $(build-productimage-target) .PHONY: productimage-nodeps pnod productimage-nodeps pnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-productimage-target) sync: $(INTERNAL_PRODUCTIMAGE_FILES) else ifdef BOARD_PREBUILT_PRODUCTIMAGE INSTALLED_PRODUCTIMAGE_TARGET := $(PRODUCT_OUT)/product.img $(eval $(call copy-one-file,$(BOARD_PREBUILT_PRODUCTIMAGE),$(INSTALLED_PRODUCTIMAGE_TARGET))) endif # ----------------------------------------------------------------- # dtbo image ifdef BOARD_PREBUILT_DTBOIMAGE Loading Loading @@ -1962,6 +2078,7 @@ DTBO_FOOTER_ARGS := BOARD_AVB_DTBO_ADD_HASH_FOOTER_ARGS SYSTEM_FOOTER_ARGS := BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS VENDOR_FOOTER_ARGS := BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS RECOVERY_FOOTER_ARGS := BOARD_AVB_RECOVERY_ADD_HASH_FOOTER_ARGS PRODUCT_FOOTER_ARGS := BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS # Check and set required build variables for a chain partition. # $(1): the partition to enable AVB chain, e.g., BOOT or SYSTEM. Loading Loading @@ -2014,6 +2131,15 @@ INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ endif endif ifdef INSTALLED_PRODUCTIMAGE_TARGET ifdef BOARD_AVB_PRODUCT_KEY_PATH $(eval $(call check-and-set-avb-chain-args,PRODUCT)) else INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ --include_descriptors_from_image $(INSTALLED_PRODUCTIMAGE_TARGET) endif endif ifdef INSTALLED_DTBOIMAGE_TARGET ifdef BOARD_AVB_DTBO_KEY_PATH $(eval $(call check-and-set-avb-chain-args,DTBO)) Loading Loading @@ -2067,6 +2193,9 @@ define extract-avb-chain-public-keys $(if $(BOARD_AVB_VENDOR_KEY_PATH),\ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_VENDOR_KEY_PATH) \ --output $(1)/vendor.avbpubkey) $(if $(BOARD_AVB_PRODUCT_KEY_PATH),\ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_KEY_PATH) \ --output $(1)/product.avbpubkey) $(if $(BOARD_AVB_DTBO_KEY_PATH),\ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_DTBO_KEY_PATH) \ --output $(1)/dtbo.avbpubkey) Loading @@ -2093,6 +2222,7 @@ $(INSTALLED_VBMETAIMAGE_TARGET): \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \ $(BOARD_AVB_KEY_PATH) Loading Loading @@ -2356,6 +2486,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_VBMETAIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \ $(INTERNAL_SYSTEMOTHERIMAGE_FILES) \ Loading @@ -2364,6 +2495,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_2NDBOOTLOADER_TARGET) \ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_BASE_FS_PATH) \ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH) \ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH) \ $(SELINUX_FC) \ $(APKCERTS_FILE) \ $(SOONG_ZIP) \ Loading @@ -2376,6 +2508,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ | $(ACP) @echo "Package target files: $@" $(call create-system-vendor-symlink) $(call create-system-product-symlink) $(hide) rm -rf $@ $@.list $(zip_root) $(hide) mkdir -p $(dir $@) $(zip_root) ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT))) Loading Loading @@ -2441,6 +2574,11 @@ ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE $(hide) $(call package_files-copy-root, \ $(TARGET_OUT_VENDOR),$(zip_root)/VENDOR) endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE @# Contents of the product image $(hide) $(call package_files-copy-root, \ $(TARGET_OUT_PRODUCT),$(zip_root)/PRODUCT) endif ifdef INSTALLED_SYSTEMOTHERIMAGE_TARGET @# Contents of the system_other image $(hide) $(call package_files-copy-root, \ Loading Loading @@ -2505,6 +2643,10 @@ ifneq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH),) $(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH)) endif ifneq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH),) $(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH)) endif ifneq ($(strip $(SANITIZE_TARGET)),) # We need to create userdata.img with real data because the instrumented libraries are in userdata.img. $(hide) echo "userdata_img_with_data=true" >> $(zip_root)/META/misc_info.txt Loading Loading @@ -2588,6 +2730,10 @@ ifdef BOARD_PREBUILT_VENDORIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_VENDORIMAGE_TARGET) $(zip_root)/IMAGES/ endif ifdef BOARD_PREBUILT_PRODUCTIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_PRODUCTIMAGE_TARGET) $(zip_root)/IMAGES/ endif ifdef BOARD_PREBUILT_BOOTIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_BOOTIMAGE_TARGET) $(zip_root)/IMAGES/ Loading Loading @@ -2618,6 +2764,9 @@ endif # BOARD_PREBUILT_DTBOIMAGE ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE $(hide) $(call fs_config,$(zip_root)/VENDOR,vendor/) > $(zip_root)/META/vendor_filesystem_config.txt endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE $(hide) $(call fs_config,$(zip_root)/PRODUCT,product/) > $(zip_root)/META/product_filesystem_config.txt endif ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) $(hide) $(call fs_config,$(zip_root)/ROOT,) > $(zip_root)/META/root_filesystem_config.txt endif Loading Loading @@ -2735,6 +2884,7 @@ $(SYMBOLS_ZIP): $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(updater_dep) endif $(SYMBOLS_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,symbols)/filelist Loading @@ -2757,7 +2907,8 @@ ifndef TARGET_BUILD_APPS $(COVERAGE_ZIP): $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) endif $(COVERAGE_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,coverage)/filelist $(COVERAGE_ZIP): $(SOONG_ZIP) Loading Loading @@ -2857,6 +3008,15 @@ $(INSTALLED_QEMU_VENDORIMAGE): $(INSTALLED_VENDORIMAGE_TARGET) $(MK_QEMU_IMAGE_S vendorimage: $(INSTALLED_QEMU_VENDORIMAGE) droidcore: $(INSTALLED_QEMU_VENDORIMAGE) endif ifeq ($(BOARD_USES_PRODUCTIMAGE),true) INSTALLED_QEMU_PRODUCTIMAGE := $(PRODUCT_OUT)/product-qemu.img $(INSTALLED_QEMU_PRODUCTIMAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) @echo Create product-qemu.img (export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/product.img) productimage: $(INSTALLED_QEMU_PRODUCTIMAGE) droidcore: $(INSTALLED_QEMU_PRODUCTIMAGE) endif endif # ----------------------------------------------------------------- # The emulator package Loading core/base_rules.mk +4 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,8 @@ else ifneq ($(filter $(TARGET_OUT_OEM)/%,$(_path)),) LOCAL_OEM_MODULE := true else ifneq ($(filter $(TARGET_OUT_ODM)/%,$(_path)),) LOCAL_ODM_MODULE := true else ifneq ($(filter $(TARGET_OUT_PRODUCT)/%,$(_path)),) LOCAL_PRODUCT_MODULE := true endif _path := Loading Loading @@ -200,6 +202,8 @@ else ifeq (true,$(LOCAL_OEM_MODULE)) partition_tag := _OEM else ifeq (true,$(LOCAL_ODM_MODULE)) partition_tag := _ODM else ifeq (true,$(LOCAL_PRODUCT_MODULE)) partition_tag := _PRODUCT else ifeq (NATIVE_TESTS,$(LOCAL_MODULE_CLASS)) partition_tag := _DATA else Loading core/clear_vars.mk +1 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,7 @@ LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:= LOCAL_PREBUILT_STRIP_COMMENTS:= LOCAL_PRIVILEGED_MODULE:= # '',full,custom,disabled,obfuscation,optimization LOCAL_PRODUCT_MODULE:= LOCAL_PROGUARD_ENABLED:= LOCAL_PROGUARD_FLAG_FILES:= LOCAL_PROGUARD_FLAGS:= Loading core/config.mk +1 −0 Original line number Diff line number Diff line Loading @@ -987,6 +987,7 @@ dont_bother_goals := out \ cacheimage-nodeps \ bptimage-nodeps \ vnod vendorimage-nodeps \ pnod productimage-nodeps \ systemotherimage-nodeps \ ramdisk-nodeps \ bootimage-nodeps \ Loading core/envsetup.mk +68 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,7 @@ TARGET_COPY_OUT_DATA := data TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan TARGET_COPY_OUT_OEM := oem TARGET_COPY_OUT_ODM := odm TARGET_COPY_OUT_PRODUCT := product TARGET_COPY_OUT_ROOT := root TARGET_COPY_OUT_RECOVERY := recovery Loading @@ -198,6 +199,17 @@ _vendor_path_placeholder := ||VENDOR-PATH-PH|| TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder) ########################################### ########################################### # Define TARGET_COPY_OUT_PRODUCT to a placeholder, for at this point # we don't know if the device wants to build a separate product.img # or just build product stuff into system.img. # A device can set up TARGET_COPY_OUT_PRODUCT to "product" in its # BoardConfig.mk. # We'll substitute with the real value after loading BoardConfig.mk. _product_path_placeholder := ||PRODUCT-PATH-PH|| TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder) ########################################### ################################################################# # Set up minimal BOOTCLASSPATH list of jars to build/execute # java code with dalvikvm/art. Loading Loading @@ -273,6 +285,29 @@ BOARD_USES_VENDORIMAGE := true else ifdef BOARD_USES_VENDORIMAGE $(error TARGET_COPY_OUT_VENDOR must be set to 'vendor' to use a vendor image) endif ########################################### # Now we can substitute with the real value of TARGET_COPY_OUT_PRODUCT ifeq ($(TARGET_COPY_OUT_PRODUCT),$(_product_path_placeholder)) TARGET_COPY_OUT_PRODUCT := system/product else ifeq ($(filter product system/product,$(TARGET_COPY_OUT_PRODUCT)),) $(error TARGET_COPY_OUT_PRODUCT must be either 'product' or 'system/product', seeing '$(TARGET_COPY_OUT_PRODUCT)'.) endif PRODUCT_COPY_FILES := $(subst $(_product_path_placeholder),$(TARGET_COPY_OUT_PRODUCT),$(PRODUCT_COPY_FILES)) BOARD_USES_PRODUCTIMAGE := ifdef BOARD_PREBUILT_PRODUCTIMAGE BOARD_USES_PRODUCTIMAGE := true endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE BOARD_USES_PRODUCTIMAGE := true endif ifeq ($(TARGET_COPY_OUT_PRODUCT),product) BOARD_USES_PRODUCTIMAGE := true else ifdef BOARD_USES_PRODUCTIMAGE $(error TARGET_COPY_OUT_PRODUCT must be set to 'product' to use a product image) endif ########################################### # Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set. TARGET_RECOVERY_UPDATER_LIBS ?= Loading Loading @@ -625,6 +660,39 @@ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT) ifneq ($(filter address,$(SANITIZE_TARGET)),) target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system ifeq ($(SANITIZE_LITE),true) # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/product else target_out_product_app_base := $(TARGET_OUT_PRODUCT) endif else target_out_product_shared_libraries_base := $(TARGET_OUT) target_out_product_app_base := $(TARGET_OUT_PRODUCT) endif ifeq ($(TARGET_IS_64_BIT),true) TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64 else TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib endif TARGET_OUT_PRODUCT_JAVA_LIBRARIES:= $(TARGET_OUT_PRODUCT)/framework TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED) TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols Loading Loading
core/Makefile +162 −2 Original line number Diff line number Diff line Loading @@ -423,6 +423,32 @@ ifdef property_overrides_split_enabled $(hide) build/make/tools/post_process_props.py $@ endif # property_overrides_split_enabled # ----------------------------------------------------------------- # product build.prop INSTALLED_PRODUCT_BUILD_PROP_TARGET := $(TARGET_OUT_PRODUCT)/build.prop ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) FINAL_PRODUCT_PROPERTIES += \ $(call collapse-pairs, $(PRODUCT_PRODUCT_PROPERTIES)) FINAL_PRODUCT_PROPERTIES := $(call uniq-pairs-by-first-component, \ $(FINAL_PRODUCT_PROPERTIES),=) $(INSTALLED_PRODUCT_BUILD_PROP_TARGET): @echo Target product buildinfo: $@ @mkdir -p $(dir $@) $(hide) echo > $@ ifdef BOARD_USES_PRODUCTIMAGE $(hide) echo ro.product.build.date=`$(DATE_FROM_FILE)`>>$@ $(hide) echo ro.product.build.date.utc=`$(DATE_FROM_FILE) +%s`>>$@ $(hide) echo ro.product.build.fingerprint="$(BUILD_FINGERPRINT_FROM_FILE)">>$@ endif # BOARD_USES_PRODUCTIMAGE $(hide) echo "#" >> $@; \ echo "# ADDITIONAL PRODUCT PROPERTIES" >> $@; \ echo "#" >> $@; $(hide) $(foreach line,$(FINAL_PRODUCT_PROPERTIES), \ echo "$(line)" >> $@;) $(hide) build/make/tools/post_process_props.py $@ # ---------------------------------------------------------------- # ----------------------------------------------------------------- Loading Loading @@ -1013,7 +1039,7 @@ endif ifneq (true,$(TARGET_USERIMAGES_SPARSE_SQUASHFS_DISABLED)) INTERNAL_USERIMAGES_SPARSE_SQUASHFS_FLAG := -s endif ifneq ($(filter $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),) ifneq ($(filter $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE) $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE) $(BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE),squashfs),) INTERNAL_USERIMAGES_DEPS += $(MAKE_SQUASHFS) $(MKSQUASHFSUSERIMG) $(IMG2SIMG) endif Loading Loading @@ -1066,6 +1092,15 @@ $(if $(BOARD_VENDORIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "vendor_squashfs_ $(if $(BOARD_VENDORIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "vendor_squashfs_block_size=$(BOARD_VENDORIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1)) $(if $(BOARD_VENDORIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "vendor_squashfs_disable_4k_align=$(BOARD_VENDORIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH),$(hide) echo "vendor_base_fs_file=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "product_fs_type=$(BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_EXTFS_INODE_COUNT),$(hide) echo "product_extfs_inode_count=$(BOARD_PRODUCTIMAGE_EXTFS_INODE_COUNT)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_PARTITION_SIZE),$(hide) echo "product_size=$(BOARD_PRODUCTIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_JOURNAL_SIZE),$(hide) echo "product_journal_size=$(BOARD_PRODUCTIMAGE_JOURNAL_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR),$(hide) echo "product_squashfs_compressor=$(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR_OPT),$(hide) echo "product_squashfs_compressor_opt=$(BOARD_PRODUCTIMAGE_SQUASHFS_COMPRESSOR_OPT)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_BLOCK_SIZE),$(hide) echo "product_squashfs_block_size=$(BOARD_PRODUCTIMAGE_SQUASHFS_BLOCK_SIZE)" >> $(1)) $(if $(BOARD_PRODUCTIMAGE_SQUASHFS_DISABLE_4K_ALIGN),$(hide) echo "product_squashfs_disable_4k_align=$(BOARD_PRODUCTIMAGE_SQUASHFS_DISABLE_4K_ALIGN)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH),$(hide) echo "product_base_fs_file=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH)" >> $(1)) $(if $(BOARD_OEMIMAGE_PARTITION_SIZE),$(hide) echo "oem_size=$(BOARD_OEMIMAGE_PARTITION_SIZE)" >> $(1)) $(if $(BOARD_OEMIMAGE_JOURNAL_SIZE),$(hide) echo "oem_journal_size=$(BOARD_OEMIMAGE_JOURNAL_SIZE)" >> $(1)) $(if $(BOARD_OEMIMAGE_EXTFS_INODE_COUNT),$(hide) echo "oem_extfs_inode_count=$(BOARD_OEMIMAGE_EXTFS_INODE_COUNT)" >> $(1)) Loading @@ -1080,6 +1115,7 @@ $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VERITY_FEC),$(hide) echo "v $(if $(filter eng, $(TARGET_BUILD_VARIANT)),$(hide) echo "verity_disable=true" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_VERITY_PARTITION),$(hide) echo "system_verity_block_device=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_VERITY_PARTITION),$(hide) echo "vendor_verity_block_device=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_VERITY_PARTITION),$(hide) echo "product_verity_block_device=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_VERITY_PARTITION)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_key=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_KEY)" >> $(1)) $(if $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SUPPORTS_VBOOT),$(hide) echo "vboot_subkey=$(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VBOOT_SIGNING_SUBKEY)" >> $(1)) Loading @@ -1100,6 +1136,13 @@ $(if $(BOARD_AVB_ENABLE),\ $(hide) echo "avb_vendor_key_path=$(BOARD_AVB_VENDOR_KEY_PATH)" >> $(1) $(hide) echo "avb_vendor_algorithm=$(BOARD_AVB_VENDOR_ALGORITHM)" >> $(1) $(hide) echo "avb_vendor_rollback_index_location=$(BOARD_AVB_VENDOR_ROLLBACK_INDEX_LOCATION)" >> $(1))) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_product_hashtree_enable=$(BOARD_AVB_ENABLE)" >> $(1)) $(if $(BOARD_AVB_ENABLE),$(hide) echo "avb_product_add_hashtree_footer_args=$(BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS)" >> $(1)) $(if $(BOARD_AVB_ENABLE),\ $(if $(BOARD_AVB_PRODUCT_KEY_PATH),\ $(hide) echo "avb_product_key_path=$(BOARD_AVB_PRODUCT_KEY_PATH)" >> $(1) $(hide) echo "avb_product_algorithm=$(BOARD_AVB_PRODUCT_ALGORITHM)" >> $(1) $(hide) echo "avb_product_rollback_index_location=$(BOARD_AVB_PRODUCT_ROLLBACK_INDEX_LOCATION)" >> $(1))) $(if $(filter true,$(BOARD_USES_RECOVERY_AS_BOOT)),\ $(hide) echo "recovery_as_boot=true" >> $(1)) $(if $(filter true,$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)),\ Loading Loading @@ -1151,6 +1194,9 @@ recovery_build_props := $(intermediate_system_build_prop) ifdef property_overrides_split_enabled recovery_build_props += $(INSTALLED_VENDOR_BUILD_PROP_TARGET) endif ifdef BOARD_USES_PRODUCTIMAGE recovery_build_props += $(INSTALLED_PRODUCT_BUILD_PROP_TARGET) endif recovery_resources_common := $(call include-path-for, recovery)/res # Set recovery_density to the density bucket of the device. Loading Loading @@ -1443,10 +1489,26 @@ define create-system-vendor-symlink endef endif # Create symlink /system/product to /product if necessary. ifdef BOARD_USES_PRODUCTIMAGE define create-system-product-symlink $(hide) if [ -d $(TARGET_OUT)/product ] && [ ! -h $(TARGET_OUT)/product ]; then \ echo 'Non-symlink $(TARGET_OUT)/product detected!' 1>&2; \ echo 'You cannot install files to $(TARGET_OUT)/product while building a separate product.img!' 1>&2; \ exit 1; \ fi $(hide) ln -sf /product $(TARGET_OUT)/product endef else define create-system-product-symlink endef endif # $(1): output file define build-systemimage-target @echo "Target system fs image: $(1)" $(call create-system-vendor-symlink) $(call create-system-product-symlink) @mkdir -p $(dir $(1)) $(systemimage_intermediates) && rm -rf $(systemimage_intermediates)/system_image_info.txt $(call generate-userimage-prop-dictionary, $(systemimage_intermediates)/system_image_info.txt, \ skip_fsck=true) Loading Loading @@ -1521,6 +1583,7 @@ sync: $(INTERNAL_SYSTEMIMAGE_FILES) define build-systemtarball-target $(call pretty,"Target system fs tarball: $(INSTALLED_SYSTEMTARBALL_TARGET)") $(call create-system-vendor-symlink) $(call create-system-product-symlink) $(MKTARBALL) $(FS_GET_STATS) \ $(PRODUCT_OUT) system $(PRIVATE_SYSTEM_TAR) \ $(INSTALLED_SYSTEMTARBALL_TARGET) $(TARGET_OUT) Loading Loading @@ -1601,6 +1664,10 @@ ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ $(TARGET_COPY_OUT_VENDOR) endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ $(TARGET_COPY_OUT_PRODUCT) endif ifneq ($(PDK_PLATFORM_JAVA_ZIP_CONTENTS),) $(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS) endif Loading Loading @@ -1908,6 +1975,55 @@ INSTALLED_VENDORIMAGE_TARGET := $(PRODUCT_OUT)/vendor.img $(eval $(call copy-one-file,$(BOARD_PREBUILT_VENDORIMAGE),$(INSTALLED_VENDORIMAGE_TARGET))) endif # ----------------------------------------------------------------- # product partition image ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE INTERNAL_PRODUCTIMAGE_FILES := \ $(filter $(TARGET_OUT_PRODUCT)/%,\ $(ALL_DEFAULT_INSTALLED_MODULES)\ $(ALL_PDK_FUSION_FILES)) # platform.zip depends on $(INTERNAL_PRODUCTIMAGE_FILES). $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_PRODUCTIMAGE_FILES) INSTALLED_FILES_FILE_PRODUCT := $(PRODUCT_OUT)/installed-files-product.txt $(INSTALLED_FILES_FILE_PRODUCT) : $(INTERNAL_PRODUCTIMAGE_FILES) $(FILESLIST) @echo Installed file list: $@ @mkdir -p $(dir $@) @rm -f $@ $(hide) $(FILESLIST) $(TARGET_OUT_PRODUCT) > $(@:.txt=.json) $(hide) build/tools/fileslist_util.py -c $(@:.txt=.json) > $@ productimage_intermediates := \ $(call intermediates-dir-for,PACKAGING,product) BUILT_PRODUCTIMAGE_TARGET := $(PRODUCT_OUT)/product.img define build-productimage-target $(call pretty,"Target product fs image: $(INSTALLED_PRODUCTIMAGE_TARGET)") @mkdir -p $(TARGET_OUT_PRODUCT) @mkdir -p $(productimage_intermediates) && rm -rf $(productimage_intermediates)/product_image_info.txt $(call generate-userimage-prop-dictionary, $(productimage_intermediates)/product_image_info.txt, skip_fsck=true) $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \ ./build/tools/releasetools/build_image.py \ $(TARGET_OUT_PRODUCT) $(productimage_intermediates)/product_image_info.txt $(INSTALLED_PRODUCTIMAGE_TARGET) $(TARGET_OUT) $(hide) $(call assert-max-image-size,$(INSTALLED_PRODUCTIMAGE_TARGET),$(BOARD_PRODUCTIMAGE_PARTITION_SIZE)) endef # We just build this directly to the install location. INSTALLED_PRODUCTIMAGE_TARGET := $(BUILT_PRODUCTIMAGE_TARGET) $(INSTALLED_PRODUCTIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_PRODUCTIMAGE_FILES) $(INSTALLED_FILES_FILE_PRODUCT) $(BUILD_IMAGE_SRCS) $(build-productimage-target) .PHONY: productimage-nodeps pnod productimage-nodeps pnod: | $(INTERNAL_USERIMAGES_DEPS) $(build-productimage-target) sync: $(INTERNAL_PRODUCTIMAGE_FILES) else ifdef BOARD_PREBUILT_PRODUCTIMAGE INSTALLED_PRODUCTIMAGE_TARGET := $(PRODUCT_OUT)/product.img $(eval $(call copy-one-file,$(BOARD_PREBUILT_PRODUCTIMAGE),$(INSTALLED_PRODUCTIMAGE_TARGET))) endif # ----------------------------------------------------------------- # dtbo image ifdef BOARD_PREBUILT_DTBOIMAGE Loading Loading @@ -1962,6 +2078,7 @@ DTBO_FOOTER_ARGS := BOARD_AVB_DTBO_ADD_HASH_FOOTER_ARGS SYSTEM_FOOTER_ARGS := BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS VENDOR_FOOTER_ARGS := BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS RECOVERY_FOOTER_ARGS := BOARD_AVB_RECOVERY_ADD_HASH_FOOTER_ARGS PRODUCT_FOOTER_ARGS := BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS # Check and set required build variables for a chain partition. # $(1): the partition to enable AVB chain, e.g., BOOT or SYSTEM. Loading Loading @@ -2014,6 +2131,15 @@ INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ endif endif ifdef INSTALLED_PRODUCTIMAGE_TARGET ifdef BOARD_AVB_PRODUCT_KEY_PATH $(eval $(call check-and-set-avb-chain-args,PRODUCT)) else INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ --include_descriptors_from_image $(INSTALLED_PRODUCTIMAGE_TARGET) endif endif ifdef INSTALLED_DTBOIMAGE_TARGET ifdef BOARD_AVB_DTBO_KEY_PATH $(eval $(call check-and-set-avb-chain-args,DTBO)) Loading Loading @@ -2067,6 +2193,9 @@ define extract-avb-chain-public-keys $(if $(BOARD_AVB_VENDOR_KEY_PATH),\ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_VENDOR_KEY_PATH) \ --output $(1)/vendor.avbpubkey) $(if $(BOARD_AVB_PRODUCT_KEY_PATH),\ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_PRODUCT_KEY_PATH) \ --output $(1)/product.avbpubkey) $(if $(BOARD_AVB_DTBO_KEY_PATH),\ $(hide) $(AVBTOOL) extract_public_key --key $(BOARD_AVB_DTBO_KEY_PATH) \ --output $(1)/dtbo.avbpubkey) Loading @@ -2093,6 +2222,7 @@ $(INSTALLED_VBMETAIMAGE_TARGET): \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \ $(BOARD_AVB_KEY_PATH) Loading Loading @@ -2356,6 +2486,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_VBMETAIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \ $(INTERNAL_SYSTEMOTHERIMAGE_FILES) \ Loading @@ -2364,6 +2495,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_2NDBOOTLOADER_TARGET) \ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_SYSTEM_BASE_FS_PATH) \ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH) \ $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH) \ $(SELINUX_FC) \ $(APKCERTS_FILE) \ $(SOONG_ZIP) \ Loading @@ -2376,6 +2508,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ | $(ACP) @echo "Package target files: $@" $(call create-system-vendor-symlink) $(call create-system-product-symlink) $(hide) rm -rf $@ $@.list $(zip_root) $(hide) mkdir -p $(dir $@) $(zip_root) ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT))) Loading Loading @@ -2441,6 +2574,11 @@ ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE $(hide) $(call package_files-copy-root, \ $(TARGET_OUT_VENDOR),$(zip_root)/VENDOR) endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE @# Contents of the product image $(hide) $(call package_files-copy-root, \ $(TARGET_OUT_PRODUCT),$(zip_root)/PRODUCT) endif ifdef INSTALLED_SYSTEMOTHERIMAGE_TARGET @# Contents of the system_other image $(hide) $(call package_files-copy-root, \ Loading Loading @@ -2505,6 +2643,10 @@ ifneq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH),) $(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_VENDOR_BASE_FS_PATH)) endif ifneq ($(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH),) $(hide) cp $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PRODUCT_BASE_FS_PATH)) endif ifneq ($(strip $(SANITIZE_TARGET)),) # We need to create userdata.img with real data because the instrumented libraries are in userdata.img. $(hide) echo "userdata_img_with_data=true" >> $(zip_root)/META/misc_info.txt Loading Loading @@ -2588,6 +2730,10 @@ ifdef BOARD_PREBUILT_VENDORIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_VENDORIMAGE_TARGET) $(zip_root)/IMAGES/ endif ifdef BOARD_PREBUILT_PRODUCTIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_PRODUCTIMAGE_TARGET) $(zip_root)/IMAGES/ endif ifdef BOARD_PREBUILT_BOOTIMAGE $(hide) mkdir -p $(zip_root)/IMAGES $(hide) cp $(INSTALLED_BOOTIMAGE_TARGET) $(zip_root)/IMAGES/ Loading Loading @@ -2618,6 +2764,9 @@ endif # BOARD_PREBUILT_DTBOIMAGE ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE $(hide) $(call fs_config,$(zip_root)/VENDOR,vendor/) > $(zip_root)/META/vendor_filesystem_config.txt endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE $(hide) $(call fs_config,$(zip_root)/PRODUCT,product/) > $(zip_root)/META/product_filesystem_config.txt endif ifeq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) $(hide) $(call fs_config,$(zip_root)/ROOT,) > $(zip_root)/META/root_filesystem_config.txt endif Loading Loading @@ -2735,6 +2884,7 @@ $(SYMBOLS_ZIP): $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(updater_dep) endif $(SYMBOLS_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,symbols)/filelist Loading @@ -2757,7 +2907,8 @@ ifndef TARGET_BUILD_APPS $(COVERAGE_ZIP): $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) endif $(COVERAGE_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,coverage)/filelist $(COVERAGE_ZIP): $(SOONG_ZIP) Loading Loading @@ -2857,6 +3008,15 @@ $(INSTALLED_QEMU_VENDORIMAGE): $(INSTALLED_VENDORIMAGE_TARGET) $(MK_QEMU_IMAGE_S vendorimage: $(INSTALLED_QEMU_VENDORIMAGE) droidcore: $(INSTALLED_QEMU_VENDORIMAGE) endif ifeq ($(BOARD_USES_PRODUCTIMAGE),true) INSTALLED_QEMU_PRODUCTIMAGE := $(PRODUCT_OUT)/product-qemu.img $(INSTALLED_QEMU_PRODUCTIMAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) $(MK_QEMU_IMAGE_SH) $(SGDISK_HOST) @echo Create product-qemu.img (export SGDISK=$(SGDISK_HOST); $(MK_QEMU_IMAGE_SH) ${PRODUCT_OUT}/product.img) productimage: $(INSTALLED_QEMU_PRODUCTIMAGE) droidcore: $(INSTALLED_QEMU_PRODUCTIMAGE) endif endif # ----------------------------------------------------------------- # The emulator package Loading
core/base_rules.mk +4 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,8 @@ else ifneq ($(filter $(TARGET_OUT_OEM)/%,$(_path)),) LOCAL_OEM_MODULE := true else ifneq ($(filter $(TARGET_OUT_ODM)/%,$(_path)),) LOCAL_ODM_MODULE := true else ifneq ($(filter $(TARGET_OUT_PRODUCT)/%,$(_path)),) LOCAL_PRODUCT_MODULE := true endif _path := Loading Loading @@ -200,6 +202,8 @@ else ifeq (true,$(LOCAL_OEM_MODULE)) partition_tag := _OEM else ifeq (true,$(LOCAL_ODM_MODULE)) partition_tag := _ODM else ifeq (true,$(LOCAL_PRODUCT_MODULE)) partition_tag := _PRODUCT else ifeq (NATIVE_TESTS,$(LOCAL_MODULE_CLASS)) partition_tag := _DATA else Loading
core/clear_vars.mk +1 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,7 @@ LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES:= LOCAL_PREBUILT_STRIP_COMMENTS:= LOCAL_PRIVILEGED_MODULE:= # '',full,custom,disabled,obfuscation,optimization LOCAL_PRODUCT_MODULE:= LOCAL_PROGUARD_ENABLED:= LOCAL_PROGUARD_FLAG_FILES:= LOCAL_PROGUARD_FLAGS:= Loading
core/config.mk +1 −0 Original line number Diff line number Diff line Loading @@ -987,6 +987,7 @@ dont_bother_goals := out \ cacheimage-nodeps \ bptimage-nodeps \ vnod vendorimage-nodeps \ pnod productimage-nodeps \ systemotherimage-nodeps \ ramdisk-nodeps \ bootimage-nodeps \ Loading
core/envsetup.mk +68 −0 Original line number Diff line number Diff line Loading @@ -179,6 +179,7 @@ TARGET_COPY_OUT_DATA := data TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan TARGET_COPY_OUT_OEM := oem TARGET_COPY_OUT_ODM := odm TARGET_COPY_OUT_PRODUCT := product TARGET_COPY_OUT_ROOT := root TARGET_COPY_OUT_RECOVERY := recovery Loading @@ -198,6 +199,17 @@ _vendor_path_placeholder := ||VENDOR-PATH-PH|| TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder) ########################################### ########################################### # Define TARGET_COPY_OUT_PRODUCT to a placeholder, for at this point # we don't know if the device wants to build a separate product.img # or just build product stuff into system.img. # A device can set up TARGET_COPY_OUT_PRODUCT to "product" in its # BoardConfig.mk. # We'll substitute with the real value after loading BoardConfig.mk. _product_path_placeholder := ||PRODUCT-PATH-PH|| TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder) ########################################### ################################################################# # Set up minimal BOOTCLASSPATH list of jars to build/execute # java code with dalvikvm/art. Loading Loading @@ -273,6 +285,29 @@ BOARD_USES_VENDORIMAGE := true else ifdef BOARD_USES_VENDORIMAGE $(error TARGET_COPY_OUT_VENDOR must be set to 'vendor' to use a vendor image) endif ########################################### # Now we can substitute with the real value of TARGET_COPY_OUT_PRODUCT ifeq ($(TARGET_COPY_OUT_PRODUCT),$(_product_path_placeholder)) TARGET_COPY_OUT_PRODUCT := system/product else ifeq ($(filter product system/product,$(TARGET_COPY_OUT_PRODUCT)),) $(error TARGET_COPY_OUT_PRODUCT must be either 'product' or 'system/product', seeing '$(TARGET_COPY_OUT_PRODUCT)'.) endif PRODUCT_COPY_FILES := $(subst $(_product_path_placeholder),$(TARGET_COPY_OUT_PRODUCT),$(PRODUCT_COPY_FILES)) BOARD_USES_PRODUCTIMAGE := ifdef BOARD_PREBUILT_PRODUCTIMAGE BOARD_USES_PRODUCTIMAGE := true endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE BOARD_USES_PRODUCTIMAGE := true endif ifeq ($(TARGET_COPY_OUT_PRODUCT),product) BOARD_USES_PRODUCTIMAGE := true else ifdef BOARD_USES_PRODUCTIMAGE $(error TARGET_COPY_OUT_PRODUCT must be set to 'product' to use a product image) endif ########################################### # Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set. TARGET_RECOVERY_UPDATER_LIBS ?= Loading Loading @@ -625,6 +660,39 @@ $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT) ifneq ($(filter address,$(SANITIZE_TARGET)),) target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system ifeq ($(SANITIZE_LITE),true) # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/product else target_out_product_app_base := $(TARGET_OUT_PRODUCT) endif else target_out_product_shared_libraries_base := $(TARGET_OUT) target_out_product_app_base := $(TARGET_OUT_PRODUCT) endif ifeq ($(TARGET_IS_64_BIT),true) TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64 else TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib endif TARGET_OUT_PRODUCT_JAVA_LIBRARIES:= $(TARGET_OUT_PRODUCT)/framework TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED) TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols Loading