diff --git a/core/Makefile b/core/Makefile index fbdc65a98..c5803f91c 100644 --- a/core/Makefile +++ b/core/Makefile @@ -2363,6 +2363,81 @@ bootimage_debug-nodeps: $(MKBOOTIMG) endif # TARGET_NO_KERNEL +ifeq ($(BUILDING_VENDOR_BOOT_IMAGE),true) +ifeq ($(BUILDING_RAMDISK_IMAGE),true) +# ----------------------------------------------------------------- +# vendor debug ramdisk +# Combines vendor ramdisk files and debug ramdisk files to build the vendor debug ramdisk. +INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET := $(PRODUCT_OUT)/vendor-ramdisk-debug.cpio.gz +$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): DEBUG_RAMDISK_FILES := $(INTERNAL_DEBUG_RAMDISK_FILES) +$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): VENDOR_RAMDISK_DIR := $(TARGET_VENDOR_RAMDISK_OUT) + +INTERNAL_VENDOR_DEBUG_RAMDISK_FILES := $(filter $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)/%, \ + $(ALL_GENERATED_SOURCES) \ + $(ALL_DEFAULT_INSTALLED_MODULES)) + +# Note: TARGET_VENDOR_DEBUG_RAMDISK_OUT will be $(PRODUCT_OUT)/vendor_debug_ramdisk/first_stage_ramdisk, +# if BOARD_USES_RECOVERY_AS_BOOT is true. Otherwise, it will be $(PRODUCT_OUT)/vendor_debug_ramdisk. +# But the path of $(VENDOR_DEBUG_RAMDISK_DIR) to build the vendor debug ramdisk, is always +# $(PRODUCT_OUT)/vendor_debug_ramdisk. +$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): VENDOR_DEBUG_RAMDISK_DIR := $(PRODUCT_OUT)/vendor_debug_ramdisk +$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): $(INTERNAL_VENDOR_RAMDISK_TARGET) $(INSTALLED_DEBUG_RAMDISK_TARGET) +$(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_VENDOR_DEBUG_RAMDISK_FILES) | $(MINIGZIP) + $(call pretty,"Target vendor debug ram disk: $@") + mkdir -p $(TARGET_VENDOR_DEBUG_RAMDISK_OUT) + touch $(TARGET_VENDOR_DEBUG_RAMDISK_OUT)/force_debuggable + $(foreach debug_file,$(DEBUG_RAMDISK_FILES), \ + cp -f $(debug_file) $(subst $(PRODUCT_OUT)/debug_ramdisk,$(PRODUCT_OUT)/vendor_debug_ramdisk,$(debug_file)) &&) true + rsync -a $(VENDOR_RAMDISK_DIR)/ $(VENDOR_DEBUG_RAMDISK_DIR) + $(MKBOOTFS) -d $(TARGET_OUT) $(VENDOR_DEBUG_RAMDISK_DIR) | $(MINIGZIP) > $@ + +INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK := $(PRODUCT_OUT)/installed-files-vendor-ramdisk-debug.txt +INSTALLED_FILES_JSON_VENDOR_DEBUG_RAMDISK := $(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK:.txt=.json) +$(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK): .KATI_IMPLICIT_OUTPUTS := $(INSTALLED_FILES_JSON_VENDOR_DEBUG_RAMDISK) +$(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK): VENDOR_DEBUG_RAMDISK_DIR := $(PRODUCT_OUT)/vendor_debug_ramdisk + +# The vendor debug ramdisk will rsync from $(TARGET_VENDOR_RAMDISK_OUT) and $(INTERNAL_DEBUG_RAMDISK_FILES), +# so we have to wait for the vendor debug ramdisk to be built before generating the installed file list. +$(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK): $(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET) +$(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK): $(INTERNAL_VENDOR_DEBUG_RAMDISK_FILES) $(FILESLIST) $(FILESLIST_UTIL) + echo Installed file list: $@ + mkdir -p $(dir $@) + rm -f $@ + $(FILESLIST) $(VENDOR_DEBUG_RAMDISK_DIR) > $(@:.txt=.json) + $(FILESLIST_UTIL) -c $(@:.txt=.json) > $@ + +# ----------------------------------------------------------------- +# vendor_boot-debug.img. +INSTALLED_VENDOR_DEBUG_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/vendor_boot-debug.img + +# The util to sign vendor_boot-debug.img with a test key. +BOARD_AVB_VENDOR_BOOT_TEST_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem +INTERNAL_AVB_VENDOR_BOOT_TEST_SIGNING_ARGS := --algorithm SHA256_RSA2048 --key $(BOARD_AVB_VENDOR_BOOT_TEST_KEY_PATH) +# $(1): the vendor bootimage to sign +define test-key-sign-vendor-bootimage +$(call assert-max-image-size,$(1),$(call get-hash-image-max-size,$(BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE))) +$(AVBTOOL) add_hash_footer \ + --image $(1) \ + --partition_size $(BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE) \ + --partition_name vendor_boot $(INTERNAL_AVB_VENDOR_BOOT_TEST_SIGNING_ARGS) \ + $(BOARD_AVB_VENDOR_BOOT_ADD_HASH_FOOTER_ARGS) +$(call assert-max-image-size,$(1),$(BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE)) +endef + +ifneq ($(BOARD_AVB_VENDOR_BOOT_KEY_PATH),) +$(INSTALLED_VENDOR_DEBUG_BOOTIMAGE_TARGET): $(AVBTOOL) $(BOARD_AVB_VENDOR_BOOT_TEST_KEY_PATH) +endif + +# Depends on vendor_boot.img and vendor-ramdisk-debug.cpio.gz to build the new vendor_boot-debug.img +$(INSTALLED_VENDOR_DEBUG_BOOTIMAGE_TARGET): $(MKBOOTIMG) $(INSTALLED_VENDOR_BOOTIMAGE_TARGET) $(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET) + $(call pretty,"Target vendor_boot debug image: $@") + $(MKBOOTIMG) $(INTERNAL_VENDOR_BOOTIMAGE_ARGS) $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_MKBOOTIMG_ARGS) --vendor_ramdisk $(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET) --vendor_boot $@ + $(call assert-max-image-size,$@,$(BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE)) + $(if $(BOARD_AVB_VENDOR_BOOT_KEY_PATH),$(call test-key-sign-vendor-bootimage,$@)) + +endif # BUILDING_RAMDISK_IMAGE +endif # BUILDING_VENDOR_BOOT_IMAGE + # ----------------------------------------------------------------- # The test harness ramdisk, which is based off debug_ramdisk, plus a # few additional test-harness-specific properties in adb_debug.prop. diff --git a/core/board_config.mk b/core/board_config.mk index 91d4fd6e5..61abc36e1 100644 --- a/core/board_config.mk +++ b/core/board_config.mk @@ -282,6 +282,7 @@ endif # Now we can substitute with the real value of TARGET_COPY_OUT_DEBUG_RAMDISK ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk/first_stage_ramdisk +TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk/first_stage_ramdisk TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk/first_stage_ramdisk endif diff --git a/core/envsetup.mk b/core/envsetup.mk index d35cb7e9b..04a970ffd 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -228,6 +228,7 @@ TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan TARGET_COPY_OUT_OEM := oem TARGET_COPY_OUT_RAMDISK := ramdisk TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk +TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk TARGET_COPY_OUT_ROOT := root TARGET_COPY_OUT_RECOVERY := recovery @@ -818,6 +819,7 @@ TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK) TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK) +TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK) TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK) TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK) diff --git a/core/main.mk b/core/main.mk index ec1effd1b..34d185a9e 100644 --- a/core/main.mk +++ b/core/main.mk @@ -1378,6 +1378,9 @@ ramdisk_debug: $(INSTALLED_DEBUG_RAMDISK_TARGET) .PHONY: ramdisk_test_harness ramdisk_test_harness: $(INSTALLED_TEST_HARNESS_RAMDISK_TARGET) +.PHONY: vendor_ramdisk_debug +vendor_ramdisk_debug: $(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET) + .PHONY: userdataimage userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET) @@ -1397,6 +1400,9 @@ vendorimage: $(INSTALLED_VENDORIMAGE_TARGET) .PHONY: vendorbootimage vendorbootimage: $(INSTALLED_VENDOR_BOOTIMAGE_TARGET) +.PHONY: vendorbootimage_debug +vendorbootimage_debug: $(INSTALLED_VENDOR_DEBUG_BOOTIMAGE_TARGET) + .PHONY: productimage productimage: $(INSTALLED_PRODUCTIMAGE_TARGET) @@ -1443,6 +1449,8 @@ droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \ $(INSTALLED_BPTIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDOR_BOOTIMAGE_TARGET) \ + $(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET) \ + $(INSTALLED_VENDOR_DEBUG_BOOTIMAGE_TARGET) \ $(INSTALLED_ODMIMAGE_TARGET) \ $(INSTALLED_SUPERIMAGE_EMPTY_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ @@ -1463,6 +1471,8 @@ droidcore: $(filter $(HOST_OUT_ROOT)/%,$(modules_to_install)) \ $(INSTALLED_FILES_JSON_RAMDISK) \ $(INSTALLED_FILES_FILE_DEBUG_RAMDISK) \ $(INSTALLED_FILES_JSON_DEBUG_RAMDISK) \ + $(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK) \ + $(INSTALLED_FILES_JSON_VENDOR_DEBUG_RAMDISK) \ $(INSTALLED_FILES_FILE_ROOT) \ $(INSTALLED_FILES_JSON_ROOT) \ $(INSTALLED_FILES_FILE_RECOVERY) \ @@ -1586,8 +1596,12 @@ else # TARGET_BUILD_APPS $(INSTALLED_FILES_JSON_RAMDISK) \ $(INSTALLED_FILES_FILE_DEBUG_RAMDISK) \ $(INSTALLED_FILES_JSON_DEBUG_RAMDISK) \ + $(INSTALLED_FILES_FILE_VENDOR_DEBUG_RAMDISK) \ + $(INSTALLED_FILES_JSON_VENDOR_DEBUG_RAMDISK) \ $(INSTALLED_DEBUG_RAMDISK_TARGET) \ $(INSTALLED_DEBUG_BOOTIMAGE_TARGET) \ + $(INSTALLED_VENDOR_DEBUG_RAMDISK_TARGET) \ + $(INSTALLED_VENDOR_DEBUG_BOOTIMAGE_TARGET) \ ) $(call dist-for-goals, bootimage_test_harness, \ $(INSTALLED_TEST_HARNESS_RAMDISK_TARGET) \