# Copyright (C) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #******************************************************************************* #The rule of make Linux kernel module #******************************************************************************* $(TARGET)-objs = $(SRCS:%.c=%.o) $(MOD_NAME)-objs = $(SRCS_O:%.c=%.o) ifneq ($(KERNELRELEASE),) obj-m += $(TARGET).o obj-m += $(MOD_NAME).o endif EXTRA_CFLAGS += $(MKP_CFLAGS) KBUILD_EXTRA_SYMBOLS += $(HI_KBUILD_EXTRA_SYMBOLS) #******************************************************************************* #The file need tobe clean, when make clean CLEAN_FILE := $(SRCS:%.c=%.o) CLEAN_FILE += $(SRCS:%.c=%.o.cmd) CLEAN_FILE += $(join $(dir $(SRCS)), $(patsubst %.c, .%.o.cmd, $(notdir $(SRCS)))) CLEAN_FILE += $(TARGET).mod.c \ $(TARGET).ko.cmd \ $(TARGET).ko \ $(TARGET).o \ $(TARGET).mod.o \ .$(TARGET).ko.cmd \ .$(TARGET).o.cmd \ .$(TARGET).mod.o.cmd CLEAN_FILE += $(MOD_NAME).mod.c \ *.ko \ *.o \ *.mod \ .*.cmd \ CLEAN_FILE += ./*/*.o ./*/.*.cmd #******************************************************************************* .PHONY: default clean default: @echo -e "\e[0;32;1m--Compiling '$(TARGET)'... Configs as follow:\e[0;36;1m" @echo "---- USER_CROSS=$(CROSS) KERNEL_CROSS=$(CROSS_COMPILE)" @echo ---- HIARCH=$(HIARCH), ARCH=$(ARCH), HICHIP=$(HICHIP), CVER=$(CVER), DBG=$(HIDBG), HI_FPGA=$(HI_FPGA) @echo ---- CPU_TYPE=$(CPU_TYPE) @echo ---- MPP_CFLAGS=$(MPP_CFLAGS) @echo ---- MKP_CFLAGS=$(MKP_CFLAGS) @echo ---- SDK_PATH=$(SDK_PATH) , PARAM_FILE=$(PARAM_FILE) @echo ---- KERNEL_ROOT=$(KERNEL_ROOT) @echo ---- ARCH_ROOT=$(ARCH_ROOT), ARCH_HAL=$(ARCH_HAL) @echo ---- HIGDB=$(HIGDB) @echo ---- COMPILER_TRIPLE=$(COMPILER_TRIPLE) @@echo -e "\e[0m" #@$(MAKE) -C $(KERNEL_ROOT) M=$(PWD) $(COMPILER_TRIPLE) V=10 modules -j 24 @$(MAKE) -C $(KERNEL_ROOT) M=$(PWD) $(COMPILER_TRIPLE) $(COMPILER_TRIPLE) V=10 modules -j 24 ifeq ($(HIGDB), n) ifeq ($(OHOS_LITE), y) @$(CROSS_COMPILE)strip --strip-unneeded $(TARGET).ko @$(CROSS_COMPILE)strip --strip-unneeded $(MOD_NAME).o else @$(CROSS_PATH)/$(CROSS_COMPILE)strip --strip-unneeded $(TARGET).ko @$(CROSS_PATH)/$(CROSS_COMPILE)strip --strip-unneeded $(MOD_NAME).o endif endif @mkdir -p $(REL_KO) && cp -rf $(TARGET).ko $(REL_KO) && chmod 777 $(REL_KO)/load* # @mkdir -p $(REL_INC) && $(call maco_cp_file,$(INC_FILE),$(REL_INC)) ifeq ($(CONFIG_DRIVER_SPACE_TYPE),kernel_space) @mkdir -p $(REL_OBJ) && cp -rf $(MOD_NAME).o $(REL_OBJ) @mkdir -p $(REL_INI) && cp -rf $(INIT_FILE) $(REL_INI) endif clean: @rm -f $(CLEAN_FILE) @rm -f $(REL_KO)/$(TARGET).ko ifeq ($(CONFIG_DRIVER_SPACE_TYPE),kernel_space) @rm -f $(REL_OBJ)/$(MOD_NAME).o @rm -f $(REL_INI)/$(shell basename $(INIT_FILE)) endif @rm .tmp_versions -rf @rm Module.symvers -f @rm modules.order -f