82 lines
3.4 KiB
Makefile
Executable File
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)
|