You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
8.5 KiB
150 lines
8.5 KiB
# recovery env setup
|
|
CHIP_REVISION_UPPER := $(shell echo $(CHIP_REVISION) | tr a-z A-Z)
|
|
|
|
RECOVERY_OBJ := $(TARGET_OUT_INTERMEDIATES)/RECOVERY_OBJ_$(CHIP_REVISION_UPPER)
|
|
|
|
RECOVERY_KERNEL_CONFIG := $(PRODUCT_TYPE)/$(CHIP_VERSION)/$(PRODUCT_TYPE)_$(CHIP_VERSION)_defconfig
|
|
KERNEL_ARCH_ARM64_CONFIGS := $(TARGET_KERNEL_DIR)/arch/$(TARGET_ARCH)/configs
|
|
RECOVERY_KERNEL_DEBUG_CONFIGS := $(KERNEL_ARCH_ARM64_CONFIGS)/$(PRODUCT_TYPE)_$(CHIP_VERSION)_$(CHIP_REVISION)_recovery_debug_defconfig
|
|
ifneq ($(wildcard $(RECOVERY_KERNEL_DEBUG_CONFIGS)),)
|
|
$(shell rm -f $(RECOVERY_KERNEL_DEBUG_CONFIGS))
|
|
endif
|
|
RECOVERY_KERNEL_TMP_CONFIGS := $(PRODUCT_TYPE)_$(CHIP_VERSION)_$(CHIP_REVISION)_recovery_tmp_defconfig
|
|
# Recovery build, amend recovery defconfig by default
|
|
RECOVERY_KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/plugin/recovery_defconfig
|
|
# Config ammend
|
|
RECOVERY_KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/$(PRODUCT_TYPE)/$(CHIP_VERSION)/chip_revision/$(CHIP_REVISION)_defconfig
|
|
ifeq ($(strip $(HUANGLONG_TEE)), true)
|
|
RECOVERY_KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/plugin/tee_defconfig
|
|
endif
|
|
RECOVERY_KERNEL_AMEND_CONFIGS += $(RECOVERY_DRIVER_DEFCONFIG_FILE) $(CUSTOM_RECOVERY_DEFCONFIG_FILE)
|
|
|
|
# recovery flag configs
|
|
RECOVERY_KERNEL_FLAGS := ARCH=$(TARGET_ARCH) CROSS_COMPILE=$(CROSS_COMPILE_TOOLCHAIN) \
|
|
CC=clang HOSTCC=clang CLANG_TRIPLE=aarch64-linux-gnu- \
|
|
$(MSP_FLAG) $(DIR_CONFIG) $(TP_CONFIG)
|
|
|
|
RECOVERY_KERNEL_CFLAGS := $(RECOVERY_DRIVER_CFLAGS)
|
|
|
|
ifeq ($(strip $(PRODUCT_USE_DYNAMIC_PARTITIONS)), true)
|
|
RECOVERY_KERNEL_FLAGS += CONFIG_DP_PARTITION_SUPPORT=y
|
|
RECOVERY_KERNEL_CFLAGS += -DCONFIG_DP_PARTITION_SUPPORT
|
|
ifeq ($(strip $(BOARD_AVB_ENABLE)), true)
|
|
RECOVERY_KERNEL_FLAGS += CONFIG_AVB_SUPPORT=y
|
|
endif
|
|
endif
|
|
RECOVERY_KERNEL_AFLAGS := $(RECOVERY_KERNEL_CFLAGS)
|
|
|
|
RECOVERY_DEPENDECIES ?= fastbootd
|
|
INSTALLED_DTBOIMAGE_TARGET ?= $(PRODUCT_OUT)/dtbo.img
|
|
INSTALLED_RECOVERYIMAGE_TARGET ?= $(PRODUCT_OUT)/recovery.img
|
|
|
|
# recovery objs
|
|
SECURE_TOOL := vendor/tools/host/huanglong/sign_tools/SecureTool/bin/SecureTool
|
|
VERIFIED_BOOT_CFG_DIR := vendor/tools/host/huanglong/sign_config/verified_boot_cfg
|
|
$(RECOVERY_OBJ)/.config: $(TARGET_KERNEL_DIR)/arch/$(TARGET_ARCH)/configs/$(RECOVERY_KERNEL_CONFIG)
|
|
PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(TARGET_KERNEL_DIR) \
|
|
O=$(PWD)/$(RECOVERY_OBJ) $(RECOVERY_KERNEL_FLAGS) \
|
|
CFLAGS_KERNEL="$(RECOVERY_KERNEL_CFLAGS)" AFLAGS_KERNEL="$(RECOVERY_KERNEL_AFLAGS)" $(RECOVERY_KERNEL_CONFIG)
|
|
ifneq ($(RECOVERY_KERNEL_AMEND_CONFIGS),)
|
|
$(hide) $(foreach cf,$(strip $(RECOVERY_KERNEL_AMEND_CONFIGS)),$(shell cat $(cf) >> $(RECOVERY_KERNEL_DEBUG_CONFIGS)))
|
|
PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(SDK_DIR_KERNEL)/scripts BASED_FILE=$(PWD)/$(RECOVERY_OBJ)/.config \
|
|
$(DIR_CONFIG) INPUT_FILE=$(RECOVERY_KERNEL_DEBUG_CONFIGS) INPUT_CONFIG="$(RECOVERY_DRIVER_CONFIG)" \
|
|
OUTPUT_FILE=$(KERNEL_ARCH_ARM64_CONFIGS)/$(RECOVERY_KERNEL_TMP_CONFIGS) kconfig-dynamic
|
|
PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(TARGET_KERNEL_DIR) \
|
|
O=$(PWD)/$(RECOVERY_OBJ) $(RECOVERY_KERNEL_FLAGS) \
|
|
CFLAGS_KERNEL="$(RECOVERY_KERNEL_CFLAGS)" AFLAGS_KERNEL="$(RECOVERY_KERNEL_AFLAGS)" $(RECOVERY_KERNEL_TMP_CONFIGS)
|
|
$(hide) rm -rf $(KERNEL_ARCH_ARM64_CONFIGS)/$(RECOVERY_KERNEL_TMP_CONFIGS)
|
|
$(hide) rm -rf $(RECOVERY_KERNEL_DEBUG_CONFIGS)
|
|
$(hide) wait
|
|
endif
|
|
|
|
$(RECOVERY_OBJ)/recovery.img: $(RECOVERY_OBJ)/.config $(INSTALLED_RECOVERYIMAGE_TARGET) $(INSTALLED_DTBOIMAGE_TARGET) $(PRODUCT_OUT)/ramdisk.img |$(MKBOOTIMG)
|
|
PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(TARGET_KERNEL_DIR) \
|
|
O=$(PWD)/$(RECOVERY_OBJ) SDK_CFGFILE=$(SDK_CFG_DIR)/$(SDK_RECOVERY_CFG) $(RECOVERY_KERNEL_FLAGS) \
|
|
CFLAGS_KERNEL="$(RECOVERY_KERNEL_CFLAGS)" AFLAGS_KERNEL="$(RECOVERY_KERNEL_AFLAGS)" \
|
|
CONFIG_INITRAMFS_SOURCE=$(PWD)/$(TARGET_RECOVERY_ROOT_OUT) Image modules
|
|
$(ACP) -f $(RECOVERY_OBJ)/arch/$(TARGET_ARCH)/boot/Image $@
|
|
$(MKBOOTIMG) --kernel $(RECOVERY_OBJ)/recovery.img --ramdisk $(PRODUCT_OUT)/ramdisk.img --base $(BOARD_RECOVERY_BASE) \
|
|
--pagesize $(BOARD_RECOVERY_PAGESIZE) --recovery_dtbo $(DTB_OUT_DIR)/$(TARGET_DTB_FILE_NAME) --os_version 10 --header_version 1 -o $(RECOVERY_OBJ)/recovery-header.img
|
|
$(ACP) -f $(RECOVERY_OBJ)/recovery-header.img $@
|
|
ifeq ($(strip $(BOARD_AVB_ENABLE)), true)
|
|
$(hide) mkdir -p $(SECURE_OBJ_DIR)/
|
|
ifneq ($(findstring $(CHIP_VERSION), "hi3751v811"),)
|
|
$(hide) $(SECURE_TOOL) common --cfg $(VERIFIED_BOOT_CFG_DIR)/verified_boot_recovery_sign_hi3751v811.cfg \
|
|
-k $(SECURE_RSA_KEY_DIR)/ -r $(RECOVERY_OBJ)/ -o $(SECURE_OBJ_DIR)/
|
|
else # CHIP_VERSION != hi3751v811
|
|
$(hide) $(SECURE_TOOL) common --cfg $(VERIFIED_BOOT_CFG_DIR)/verified_boot_recovery_sign.cfg \
|
|
-k $(SECURE_RSA_KEY_DIR)/ -r $(RECOVERY_OBJ)/ -o $(SECURE_OBJ_DIR)/
|
|
endif
|
|
$(hide) $(ACP) -f $(SECURE_OBJ_DIR)/recovery_Sign.img $@
|
|
endif
|
|
|
|
ifeq ($(strip $(PRODUCT_TYPE)),tv)
|
|
.PHONY: recoveryimg recovery_dependencies input_bins input_libs
|
|
else
|
|
.PHONY: recoveryimg recovery_dependencies
|
|
endif
|
|
recovery_dependencies: $(RECOVERY_DEPENDECIES) |$(ACP)
|
|
$(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/system/etc
|
|
$(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/modules
|
|
$(ACP) -f $(TARGET_RECOVERY_FSTAB) $(TARGET_RECOVERY_ROOT_OUT)/system/etc/recovery.fstab
|
|
-$(ACP) -f $(NTFS_KO) $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/modules/tntfs.ko
|
|
-$(ACP) -f $(BASEPARAM_BIN) $(TARGET_RECOVERY_ROOT_OUT)/system/etc/baseparam.img
|
|
@echo "Target extra recovery_dependencies done"
|
|
|
|
ifeq ($(strip $(PRODUCT_TYPE)),tv)
|
|
input_bins: android_ir_user virtualkeypad
|
|
$(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/vendor/bin
|
|
$(ACP) $(TARGET_OUT_VENDOR_EXECUTABLES)/android_ir_user $(TARGET_RECOVERY_ROOT_OUT)/vendor/bin
|
|
$(ACP) $(TARGET_OUT_VENDOR_EXECUTABLES)/virtualkeypad $(TARGET_RECOVERY_ROOT_OUT)/vendor/bin
|
|
$(hide) chmod 755 $(TARGET_RECOVERY_ROOT_OUT)/vendor/bin/android_ir_user
|
|
$(hide) chmod 755 $(TARGET_RECOVERY_ROOT_OUT)/vendor/bin/virtualkeypad
|
|
$(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/vendor/etc
|
|
$(ACP) $(SOC_PLATFORM_PATH)/modules/ir_user/source/etc/input/key.xml $(TARGET_RECOVERY_ROOT_OUT)/vendor/etc/key.xml
|
|
$(ACP) $(VIRTUALKEYPAD_FILE) $(TARGET_RECOVERY_ROOT_OUT)/vendor/etc/key_pad.xml
|
|
|
|
input_libs: libcust libuapi_securec libuapi_common libuapi_pdm libuapi_gpio libuapi_lsadc libuapi_pmoc libuapi_ir libuapi_panel \
|
|
libuapi_vo libuapi_memory libuapi_flash libuapi_rm libdftevent
|
|
$(hide) mkdir -p $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libcust.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_securec.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_common.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_pdm.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_gpio.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_lsadc.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_pmoc.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_ir.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_panel.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_vo.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_memory.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_flash.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libuapi_rm.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
$(ACP) $(TARGET_OUT_VENDOR)/lib64/libdftevent.so $(TARGET_RECOVERY_ROOT_OUT)/vendor/lib64/
|
|
@echo "Target extra input dependencies done"
|
|
endif
|
|
|
|
$(IMAGES_OUT)/recovery_$(CHIP_REVISION).img: $(RECOVERY_OBJ)/recovery.img |$(ACP)
|
|
$(hide) mkdir -p $(IMAGES_OUT)
|
|
$(ACP) -f $< $@
|
|
$(hide) $(call assert-max-image-size,$(IMAGES_OUT)/recovery_$(CHIP_REVISION).img,$(BOARD_RECOVERYIMAGE_PARTITION_SIZE))
|
|
|
|
ROOTFS_CHARGER := $(TARGET_ROOT_OUT)/charger
|
|
$(ROOTFS_CHARGER):
|
|
$(hide) mkdir -p $(TARGET_ROOT_OUT)
|
|
$(hide) ln -sf /system/bin/charger $(TARGET_ROOT_OUT)/charger
|
|
@echo "Install: ln -sf /system/bin/charger root/charger"
|
|
$(INSTALLED_RECOVERYIMAGE_TARGET): $(ROOTFS_CHARGER)
|
|
|
|
ifeq ($(strip $(PRODUCT_TYPE)),tv)
|
|
recoveryimage: recovery_dependencies input_bins input_libs
|
|
else
|
|
recoveryimage: recovery_dependencies
|
|
endif
|
|
# final images
|
|
recoveryimg: recoveryimage $(IMAGES_OUT)/recovery_$(CHIP_REVISION).img
|
|
ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY)))
|
|
# add to droidcore dependency
|
|
droidcore: recoveryimg
|
|
endif
|