Files

82 lines
3.4 KiB
Makefile
Executable File

###############################################################################
#
# Copyright (c) Hunan xmedia,Chengdu xmedia,Shandong xmedia. 2021.
# All rights reserved.
# Create By Caizhiyong 2021/3/16
#
###############################################################################
SDK_DIR := $(shell cd $(CURDIR)/../.. && /bin/pwd)
include $(SDK_DIR)/build/base.mk
ARM_ARCH=$(CONFIG_XMEDIA_CPU_ARCH)
KERNEL_SRCDIR := $(SDK_DIR)/source/kernel/$(CONFIG_XMEDIA_KERNEL_VERSION)
KERNEL_BUILDDIR ?= $(shell pwd)/.build
KERNEL_uIMAGE := $(KERNEL_BUILDDIR)/arch/$(ARM_ARCH)/boot/uImage
KERNEL_zIMAGE := $(KERNEL_BUILDDIR)/arch/$(ARM_ARCH)/boot/zImage
KERNEL_HWGZIP_IMAGE-dtb := $(KERNEL_BUILDDIR)/arch/$(ARM_ARCH)/boot/hwzImage-dtb
FAKEROOT_INITRAMDISK := fakeroot -- bash $(TOOLS_DIR)/bin/fakeroot-scripts-initramdisk
#$(1)=$(INSTALL_DIR), $(2)=$(KERNEL_BUILDDIR)
install_modules = ( test -d $(1) || mkdir -p $(1); \
rm -rf $(1)/lib/modules; \
$(MAKE) ARCH=$(ARM_ARCH) -C $(2) modules_install INSTALL_MOD_PATH=$(1); \
rm -f $(1)/lib/modules/*/build; \
rm -f $(1)/lib/modules/*/source; \
rm -rf $(1)/lib/modules/*/kernel/drivers/gmp; \
list=$(find $(1)/lib/modules/ -name *.ko) && if [ -n "${list}" ]; then ($(CONFIG_XMEDIA_KERNEL_ARM_TOOLCHAINS)-strip --strip-unneeded ${list}) fi; )
KERNEL_IMAGE.y =
KERNEL_IMAGE.$(CONFIG_XMEDIA_NAND_FLASH_SUPPORT) += $(XMEDIA_NAND_IMAGE_DIR)/kernel
KERNEL_IMAGE.$(CONFIG_XMEDIA_EMMC_SUPPORT) += $(XMEDIA_EMMC_IMAGE_DIR)/kernel
KERNEL_IMAGE.$(CONFIG_XMEDIA_SPI_SUPPORT) += $(XMEDIA_SPI_IMAGE_DIR)/kernel
MKFLAGS_KERNEL = -C $(KERNEL_SRCDIR) O=$(KERNEL_BUILDDIR) \
ARCH=$(ARM_ARCH) CROSS_COMPILE=$(CONFIG_XMEDIA_KERNEL_ARM_TOOLCHAINS)- CONFIG_GMP=$(XMEDIA_DRV_BUILDTYPE)
MKFLAGS_KERNEL += KBUILD_MODPOST_WARN=1 LOCALVERSION=
MKFLAGS_QUIK_START = CONFIG_INITRAMFS_SOURCE="$(XMEDIA_INITRD_DIR)" CONFIG_HW_GZIP_TOOL=$(HWGZIP)
create_initramfs_kernel = $(if $(CONFIG_XMEDIA_QUICK_START),$(call install_modules,$(XMEDIA_ROOTFS_DIR),$(KERNEL_BUILDDIR)) && \
$(FAKEROOT_INITRAMDISK) "$(XMEDIA_INITRD_DIR)" "$(MAKE) $(MKFLAGS_KERNEL) $(MKFLAGS_QUIK_START) $(1)",)
.PHONY: all clean
all: $(KERNEL_IMAGE.y)
ifeq (_$(CONFIG_XMEDIA_QUICK_START),_y)
$(KERNEL_IMAGE.y): $(KERNEL_HWGZIP_IMAGE-dtb)
@$(call mkdir,$(@D))
@cp -fv $< $@
$(KERNEL_HWGZIP_IMAGE-dtb):$(KERNEL_uIMAGE)
@echo;
@echo $(KERNEL_HWGZIP_IMAGE-dtb) is ready!
else
$(KERNEL_IMAGE.y): $(KERNEL_uIMAGE)
@$(call mkdir,$(@D))
@cp -fv $< $@
endif
# 此处添加 .PHONY, 强制内核每次都编译
.PHONY: $(KERNEL_uIMAGE)
$(KERNEL_uIMAGE): $(KERNEL_SRCDIR) prepare
$(AT)$(MAKE) $(MKFLAGS_KERNEL) $(CONFIG_XMEDIA_KERNEL_DEFCONFIG)
$(AT)$(MAKE) $(MKFLAGS_KERNEL) uImage
$(AT)$(MAKE) $(MKFLAGS_KERNEL) modules
$(call create_initramfs_kernel, uImage)
clean:
rm -rf $(KERNEL_BUILDDIR)
rm -f $(KERNEL_IMAGE.y) $(KERNEL_IMAGE.n)
$(AT)rm -rf $(KERNEL_SRCDIR)/drivers/gmp
$(AT)rm -rf $(GMP_DIR)/drv/obj_$(OBJ_KERNEL_VERSION)/$(KERNEL_TOOLCHAIN)/$(OBJ_BUILD_TYPE)/$(OBJ_LOG_MODE)/xm_*
$(AT)rm -rf $(GMP_DIR)/drv/obj_$(OBJ_KERNEL_VERSION)/$(KERNEL_TOOLCHAIN)/$(OBJ_BUILD_TYPE)/$(OBJ_LOG_MODE)/.*.cmd
prepare:
ifeq (_$(CONFIG_XMEDIA_LINUX_4_9_Y),_y)
$(call mkdir,$(KERNEL_BUILDDIR)/drivers/gmp/drv)
$(AT)(cd $(KERNEL_BUILDDIR)/drivers && rm -rf gmp && ln -s $(GMP_DIR)/drv gmp)
endif
$(AT)(cd $(KERNEL_SRCDIR)/drivers && rm -rf gmp && ln -s $(GMP_DIR)/drv gmp)