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.
274 lines
11 KiB
274 lines
11 KiB
# 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
|