# Build env CHIP_REVISION_UPPER := $(shell echo $(CHIP_REVISION) | tr a-z A-Z) CLANG_PATH := $(PWD)/prebuilts/clang/host/linux-x86/clang-r416183b1/bin ifeq ($(strip $(PLATFORM_VERSION)), 10) CLANG_PATH := $(PWD)/prebuilts/clang/host/linux-x86/clang-r346389c/bin endif ifeq ($(strip $(PLATFORM_VERSION)), 12) ifeq ($(strip $(LINUX_VERSION)),linux-4.14.y) CLANG_PATH := $(PWD)/prebuilts/clang/host/linux-x86/clang-r383902/bin endif endif ANDROID_CROSS_64_PATH := $(PWD)/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin LINUX_CROSS_64_PATH := $(PWD)/vendor/tools/host/huanglong/toolchains/aarch64-v100-linux/bin LINUX_CROSS_32_PATH := $(PWD)/vendor/tools/host/huanglong/toolchains/arm-v100-linux/bin SYS_KERNEL_TOOLS_PATH := /usr/local/bin:/usr/bin:/bin KERNEL_TOOLS_PATH := $(CLANG_PATH):$(ANDROID_CROSS_64_PATH):$(LINUX_CROSS_32_PATH):$(LINUX_CROSS_64_PATH):$(SYS_KERNEL_TOOLS_PATH) # image output path IMAGES_OUT := $(PRODUCT_OUT)/images # device/default adapter KERNEL_OBJ ?= $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ_$(CHIP_REVISION_UPPER) #pc dtb tool dir PCDTB_TOOL_DIR := $(PWD)/vendor/tools/host/huanglong/dtb_tool # Config ANDROID_KERNEL_CONFIG := $(PRODUCT_TYPE)/$(CHIP_VERSION)/$(OS_PLATFORM_VERSION)/$(PRODUCT_TYPE)_$(CHIP_VERSION)$(PRODUCT_OPTIONAL)_defconfig KERNEL_ARCH_ARM64_CONFIGS := $(PWD)/$(TARGET_KERNEL_DIR)/arch/$(TARGET_ARCH)/configs KERNEL_DEBUG_CONFIGS := $(KERNEL_ARCH_ARM64_CONFIGS)/$(PRODUCT_TYPE)_$(CHIP_VERSION)_$(CHIP_REVISION)_vendor_debug_defconfig ifneq ($(wildcard $(KERNEL_DEBUG_CONFIGS)),) $(shell rm -f $(KERNEL_DEBUG_CONFIGS)) endif KERNEL_TMP_CONFIGS := $(PRODUCT_TYPE)_$(CHIP_VERSION)_$(CHIP_REVISION)_vendor_tmp_defconfig # Config ammend KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/$(PRODUCT_TYPE)/$(CHIP_VERSION)/chip_revision/$(CHIP_REVISION)_defconfig ifeq ($(TARGET_BUILD_VARIANT), eng) KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/plugin/debug_defconfig ifeq ($(strip $(PRODUCT_SUPPORT_KASAN)), true) KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/plugin/kasan_defconfig endif ifeq ($(strip $(PRODUCT_SUPPORT_UBSAN)), true) KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/plugin/ubsan_defconfig endif endif # ifeq ($(TARGET_BUILD_VARIANT), eng) ifeq ($(strip $(HUANGLONG_TEE)), true) KERNEL_AMEND_CONFIGS += $(KERNEL_ARCH_ARM64_CONFIGS)/plugin/tee_defconfig endif KERNEL_AMEND_CONFIGS += $(DRIVER_DEFCONFIG_FILE) $(CUSTOM_DEFCONFIG_FILE) # DTBO Env ifneq ($(findstring $(CHIP_VERSION), reserved19 hi3751v811),) DTB_CHIP_DIR ?= arch/$(TARGET_ARCH)/boot/dts/huanglong/wulin/$(CHIP_VERSION)_$(CHIP_REVISION) else DTB_CHIP_DIR ?= arch/$(TARGET_ARCH)/boot/dts/huanglong/wulin/$(CHIP_VERSION) endif DTB_BASE_DIR ?= $(DTB_CHIP_DIR)/base/$(CHIP_VERSION) DTB_OUT_DIR := $(KERNEL_OBJ)/$(DTB_CHIP_DIR)/out # DTBO config OVERLAY_DTB_MK_FILE ?= $(TARGET_KERNEL_DIR)/$(DTB_CHIP_DIR)/dtb_config.mk -include $(OVERLAY_DTB_MK_FILE) # dtbo base dtb DTB_FILE_NAME := $(CHIP_VERSION) ifeq ($(strip $(BOARD_AVB_ENABLE)), true) DTB_FILE_NAME := $(DTB_FILE_NAME)_avb endif ifeq ($(strip $(AB_PARTITION_SUPPORT)), true) DTB_FILE_NAME := $(DTB_FILE_NAME)_ab endif ifeq ($(strip $(PRODUCT_USE_DYNAMIC_PARTITIONS)), true) DTB_FILE_NAME := $(DTB_FILE_NAME)_dp endif ifeq ($(findstring $(CHIP_VERSION), reserved19 hi3751v811),) ifneq ($(findstring $(CHIP_REVISION), c d m),) DTB_FILE_NAME := $(DTB_FILE_NAME)_cs endif endif DTB_FILE_NAME := $(DTB_FILE_NAME).dtb TARGET_DTB_FILE_NAME ?= $(DTB_FILE_NAME) # kernel env setup ifeq ($(strip $(LINUX_VERSION)),linux-4.14.y) CROSS_COMPILE_TOOLCHAIN ?= aarch64-linux-android- else CROSS_COMPILE_TOOLCHAIN ?= aarch64-v100-linux- endif ifneq ($(strip $(OS_PLATFORM_VERSION)), linux) MSP_FLAG := CONFIG_STB_DRIVER=y SOCT_DRV_BUILDTYPE=y ifneq ($(strip $(LINUX_VERSION)),common-kernel-4.9) CLANG_PARAM := LLVM=1 LLVM_IAS=1 endif else MSP_FLAG := CONFIG_STB_DRIVER=y SOCT_DRV_BUILDTYPE=m endif THIRDPARTY_DIR := $(PWD)/vendor/thirdparty DEVELOPMENT_DIR := $(PWD)/$(SOC_PLATFORM_PATH)/development SOC_TOPDIR := $(PWD) TARGET_KERNEL_DIR := $(PWD)/vendor/open_source/$(LINUX_VERSION) -include $(PWD)/$(TARGET_PRODUCT_DIR)/build/kernel.mk # dtbo env setup DTB_TOOL_PATH := $(PWD)/prebuilts/misc/linux-x86/libufdt DTB_TOOL_PATH := $(DTB_TOOL_PATH):$(IMGTOOL_PATH) ifeq ($(LLT_SUPPORT), y) DRIVER_CONFIG += CONFIG_DEBUG_FS=y DRIVER_CONFIG += CONFIG_GCOV_KERNEL=y DRIVER_CONFIG += CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y DRIVER_CONFIG += CONFIG_GCOV_FORMAT_AUTODETECT=y DRIVER_CONFIG += CONFIG_GCOV_PROFILE_ALL=y endif # overlay dtb OVERLAY_DTB_ARGS := $(addsuffix $(empty) $(empty)--id=/:board_id, $(addprefix $(KERNEL_OBJ)/, $(OVERLAY_DTB_FILES))) # kernel configs DIR_CONFIG := DRV_DIR=$(PWD)/$(SOC_PLATFORM_PATH)/linux/drv KERNEL_SRC_DIR=$(TARGET_KERNEL_DIR)\ VENDOR_DIR=$(PWD)/vendor THIRDPARTY_DIR=$(THIRDPARTY_DIR) \ DEVELOPMENT_DIR=$(DEVELOPMENT_DIR) \ SOC_TOPDIR=$(SOC_TOPDIR) DTB_CHIP_DIR=$(DTB_CHIP_DIR) TARGET_PRODUCT_DIR=$(TARGET_PRODUCT_DIR) KERNEL_FLAGS := ARCH=$(TARGET_ARCH) CROSS_COMPILE=$(CROSS_COMPILE_TOOLCHAIN) $(CLANG_PARAM)\ $(MSP_FLAG) $(DIR_CONFIG) $(DRIVER_CONFIG) KERNEL_CFLAGS := $(DRIVER_CFLAGS) -DSDK_VERSION=$(HUANGLONG_PLATFORM_VERSION) ifeq ($(strip $(LINUX_VERSION)),ohos-linux-5.10) KERNEL_FLAGS += CROSS_COMPILE_COMPAT=arm-v100-linux- endif ifeq ($(strip $(PRODUCT_USE_DYNAMIC_PARTITIONS)), true) KERNEL_FLAGS += CONFIG_DP_PARTITION_SUPPORT=y KERNEL_CFLAGS += -DCONFIG_DP_PARTITION_SUPPORT endif ifeq ($(strip $(AB_PARTITION_SUPPORT)), true) KERNEL_FLAGS += CONFIG_AB_PARTITION_SUPPORT=y KERNEL_CFLAGS += -DCONFIG_AB_PARTITION_SUPPORT endif ifeq ($(strip $(BOARD_AVB_ENABLE)), true) KERNEL_FLAGS += CONFIG_AVB_SUPPORT=y KERNEL_CFLAGS += -DCONFIG_AVB_SUPPORT endif KERNEL_AFLAGS := $(KERNEL_CFLAGS) SDK_DIR_KERNEL := $(PWD)/$(SOC_PLATFORM_PATH)/linux # prebuilt ramdisk image ifeq ($(strip $(PRODUCT_BUILD_RAMDISK_IMAGE)), false) INSTALLED_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img ifeq ($(TARGET_BUILD_VARIANT), user) $(INSTALLED_RAMDISK_TARGET): @cp $(CURDIR)/$(SOC_PLATFORM_PATH)/binary/ramdisk/user/* $(CURDIR)/$(PRODUCT_OUT) -rf else $(INSTALLED_RAMDISK_TARGET): @echo copy ramdisk to target @cp $(CURDIR)/$(SOC_PLATFORM_PATH)/binary/ramdisk/eng/* $(CURDIR)/$(PRODUCT_OUT) -rf endif endif # kernel objs $(KERNEL_OBJ)/.config: PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(TARGET_KERNEL_DIR) \ O=$(PWD)/$(KERNEL_OBJ) $(KERNEL_FLAGS) \ CFLAGS_KERNEL="$(KERNEL_CFLAGS)" AFLAGS_KERNEL="$(KERNEL_AFLAGS)" $(ANDROID_KERNEL_CONFIG) ifneq ($(KERNEL_AMEND_CONFIGS),) $(hide) $(foreach cf,$(strip $(KERNEL_AMEND_CONFIGS)),$(shell cat $(cf) >> $(KERNEL_DEBUG_CONFIGS))) # Only defined driver config in Kconfig can be overrided by kconfig-dynamic PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(SDK_DIR_KERNEL)/scripts BASED_FILE=$(PWD)/$(KERNEL_OBJ)/.config \ $(DIR_CONFIG) INPUT_FILE=$(KERNEL_DEBUG_CONFIGS) INPUT_CONFIG="$(DRIVER_CONFIG)" \ OUTPUT_FILE=$(KERNEL_ARCH_ARM64_CONFIGS)/$(KERNEL_TMP_CONFIGS) kconfig-dynamic PATH=$(KERNEL_TOOLS_PATH) $(MAKE) -C $(TARGET_KERNEL_DIR) \ O=$(PWD)/$(KERNEL_OBJ) $(KERNEL_FLAGS) \ CFLAGS_KERNEL="$(KERNEL_CFLAGS)" AFLAGS_KERNEL="$(KERNEL_AFLAGS)" $(KERNEL_TMP_CONFIGS) $(hide) rm -rf $(KERNEL_ARCH_ARM64_CONFIGS)/$(KERNEL_TMP_CONFIGS) $(hide) rm -rf $(KERNEL_DEBUG_CONFIGS) $(hide) wait endif $(KERNEL_OBJ)/arch/$(TARGET_ARCH)/boot/Image: $(KERNEL_OBJ)/.config $(hide) mkdir -p $(TARGET_OUT_VENDOR) $(hide) ln -sf /odm/firmware $(TARGET_OUT_VENDOR)/firmware PATH=$(KERNEL_TOOLS_PATH) $(COVERITY_COMMAND) $(MAKE) -C $(TARGET_KERNEL_DIR) \ O=$(PWD)/$(KERNEL_OBJ) $(KERNEL_FLAGS) \ CFLAGS_KERNEL="$(KERNEL_CFLAGS)" AFLAGS_KERNEL="$(KERNEL_AFLAGS)" \ Image modules dtbs $(PRODUCT_OUT)/kernel: $(KERNEL_OBJ)/arch/$(TARGET_ARCH)/boot/Image $(ACP) $< $@ # dtbo 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 $(PRODUCT_OUT)/dtbo: $(PRODUCT_OUT)/kernel $(hide) mkdir -p $(DTB_OUT_DIR) $(hide) dd if=$(KERNEL_OBJ)/$(DTB_BASE_DIR)/$(TARGET_DTB_FILE_NAME) of=$(DTB_OUT_DIR)/tmp.dtb bs=1K count=300 $(hide) dd if=/dev/zero of=$(DTB_OUT_DIR)/tmp.dtb bs=1K seek=300 count=1 $(hide) mv $(DTB_OUT_DIR)/tmp.dtb $(DTB_OUT_DIR)/$(TARGET_DTB_FILE_NAME) # build dtb PATH=$(DTB_TOOL_PATH) mkdtimg create $(DTB_OUT_DIR)/dtbo.img $(OVERLAY_DTB_ARGS) $(hide) dd if=$(DTB_OUT_DIR)/$(TARGET_DTB_FILE_NAME) of=$(DTB_OUT_DIR)/tmp.dtb bs=1K count=300 $(hide) dd if=$(DTB_OUT_DIR)/dtbo.img of=$(DTB_OUT_DIR)/tmp.dtb bs=1K seek=300 $(hide) mv $(DTB_OUT_DIR)/tmp.dtb $(DTB_OUT_DIR)/$(TARGET_DTB_FILE_NAME) $(hide) $(ACP) $(DTB_OUT_DIR)/$(TARGET_DTB_FILE_NAME) $@ ifeq ($(strip $(BOARD_AVB_ENABLE)), true) $(hide) mkdir -p $(SECURE_OBJ_DIR) $(hide) $(ACP) $(DTB_OUT_DIR)/$(TARGET_DTB_FILE_NAME) $(SECURE_OBJ_DIR)/dtbo.img ifneq ($(findstring $(CHIP_VERSION), "hi3751v811"),) $(hide) $(SECURE_TOOL) common --cfg $(VERIFIED_BOOT_CFG_DIR)/verified_boot_dtbo_sign_hi3751v811.cfg \ -k $(SECURE_RSA_KEY_DIR)/ -r $(SECURE_OBJ_DIR)/ -o $(SECURE_OBJ_DIR)/ else # CHIP_VERSION != hi3751v811 $(hide) $(SECURE_TOOL) common --cfg $(VERIFIED_BOOT_CFG_DIR)/verified_boot_dtbo_sign.cfg \ -k $(SECURE_RSA_KEY_DIR)/ -r $(SECURE_OBJ_DIR)/ -o $(SECURE_OBJ_DIR)/ endif $(hide) $(ACP) $(SECURE_OBJ_DIR)/dtbo_Sign.img $@ endif ifeq ($(PRODUCT_TYPE), pc) ifeq ($(PCDTB_TOOL_DIR), $(wildcard $(PCDTB_TOOL_DIR))) $(AT)$(MAKE) -C $(PCDTB_TOOL_DIR) all KERNEL_OUT_DIR=$(PWD)/$(KERNEL_OBJ) SOCT_OUT_DIR=$(PWD)/$(PRODUCT_OUT) endif endif # final images .PHONY: odmimg bootimg dtboimage ko_tools dtboimage: $(PRODUCT_OUT)/dtbo.img $(hide) mkdir -p $(IMAGES_OUT) $(ACP) -f $< $(IMAGES_OUT)/dtbo_$(CHIP_REVISION).img bootimg: $(PRODUCT_OUT)/boot.img $(hide) mkdir -p $(IMAGES_OUT) $(ACP) -f $< $(IMAGES_OUT)/boot_$(CHIP_REVISION).img odmimg: $(PRODUCT_OUT)/odm.img $(hide) mkdir -p $(IMAGES_OUT) $(ACP) -f $< $(IMAGES_OUT)/odm_$(CHIP_REVISION).img ko_tools: $(PRODUCT_OUT)/boot.img PATH=$(KERNEL_TOOLS_PATH) $(COVERITY_COMMAND) FAKEROOTDONTTRYCHOWN=true $(MAKE) -C $(TARGET_KERNEL_DIR) \ O=$(PWD)/$(KERNEL_OBJ) $(KERNEL_FLAGS) \ CFLAGS_KERNEL="$(KERNEL_CFLAGS)" AFLAGS_KERNEL="$(KERNEL_AFLAGS)" \ bindeb-pkg KDEB_PKGVERSION=1 ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY))) # add to droidcore dependency droidcore: odmimg bootimg dtboimage endif # vbmeta target to sign with soc test key .PHONY: make_vbmeta make_vbmeta: vbmetaimage |$(AVBTOOL) # append vbmeta_append.img to boot.img $(hide) $(AVBTOOL) append_vbmeta_image --image $(PRODUCT_OUT)/boot.img --partition_size $(BOARD_BOOTIMAGE_PARTITION_SIZE) --vbmeta_image $(PRODUCT_OUT)/vbmeta.img ifeq ($(strip $(BOARD_AVB_ENABLE)), true) bootimg: make_vbmeta droidcore: make_vbmeta endif ifeq ($(strip $(OS_PLATFORM_VERSION)), linux) # only support for linux version $(PRODUCT_OUT)/dtbo.img: $(PRODUCT_OUT)/dtbo $(hide) mkdir -p $(PRODUCT_OUT) $(hide) cp $< $@ $(PRODUCT_OUT)/boot.img: $(PRODUCT_OUT)/kernel $(hide) mkdir -p $(PRODUCT_OUT) $(hide) cp $< $@ build: bootimg dtboimage endif