11bd4fe43Sopenharmony_ci# Copyright (C) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED. 21bd4fe43Sopenharmony_ci# 31bd4fe43Sopenharmony_ci# This program is free software; you can redistribute it and/or 41bd4fe43Sopenharmony_ci# modify it under the terms of the GNU General Public License 51bd4fe43Sopenharmony_ci# as published by the Free Software Foundation; either version 2 61bd4fe43Sopenharmony_ci# of the License, or (at your option) any later version. 71bd4fe43Sopenharmony_ci# 81bd4fe43Sopenharmony_ci# This program is distributed in the hope that it will be useful, 91bd4fe43Sopenharmony_ci# but WITHOUT ANY WARRANTY; without even the implied warranty of 101bd4fe43Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 111bd4fe43Sopenharmony_ci# GNU General Public License for more details. 121bd4fe43Sopenharmony_ci# 131bd4fe43Sopenharmony_ci# You should have received a copy of the GNU General Public License 141bd4fe43Sopenharmony_ci# along with this program; if not, write to the Free Software 151bd4fe43Sopenharmony_ci# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 161bd4fe43Sopenharmony_ci 171bd4fe43Sopenharmony_ci#******************************************************************************* 181bd4fe43Sopenharmony_ci#The rule of make Linux kernel module 191bd4fe43Sopenharmony_ci#******************************************************************************* 201bd4fe43Sopenharmony_ci 211bd4fe43Sopenharmony_ci$(TARGET)-objs = $(SRCS:%.c=%.o) 221bd4fe43Sopenharmony_ci$(MOD_NAME)-objs = $(SRCS_O:%.c=%.o) 231bd4fe43Sopenharmony_ci 241bd4fe43Sopenharmony_ciifneq ($(KERNELRELEASE),) 251bd4fe43Sopenharmony_ci obj-m += $(TARGET).o 261bd4fe43Sopenharmony_ci obj-m += $(MOD_NAME).o 271bd4fe43Sopenharmony_ciendif 281bd4fe43Sopenharmony_ci 291bd4fe43Sopenharmony_ciEXTRA_CFLAGS += $(MKP_CFLAGS) 301bd4fe43Sopenharmony_ciKBUILD_EXTRA_SYMBOLS += $(HI_KBUILD_EXTRA_SYMBOLS) 311bd4fe43Sopenharmony_ci 321bd4fe43Sopenharmony_ci#******************************************************************************* 331bd4fe43Sopenharmony_ci#The file need tobe clean, when make clean 341bd4fe43Sopenharmony_ciCLEAN_FILE := $(SRCS:%.c=%.o) 351bd4fe43Sopenharmony_ciCLEAN_FILE += $(SRCS:%.c=%.o.cmd) 361bd4fe43Sopenharmony_ciCLEAN_FILE += $(join $(dir $(SRCS)), $(patsubst %.c, .%.o.cmd, $(notdir $(SRCS)))) 371bd4fe43Sopenharmony_ciCLEAN_FILE += $(TARGET).mod.c \ 381bd4fe43Sopenharmony_ci $(TARGET).ko.cmd \ 391bd4fe43Sopenharmony_ci $(TARGET).ko \ 401bd4fe43Sopenharmony_ci $(TARGET).o \ 411bd4fe43Sopenharmony_ci $(TARGET).mod.o \ 421bd4fe43Sopenharmony_ci .$(TARGET).ko.cmd \ 431bd4fe43Sopenharmony_ci .$(TARGET).o.cmd \ 441bd4fe43Sopenharmony_ci .$(TARGET).mod.o.cmd 451bd4fe43Sopenharmony_ciCLEAN_FILE += $(MOD_NAME).mod.c \ 461bd4fe43Sopenharmony_ci *.ko \ 471bd4fe43Sopenharmony_ci *.o \ 481bd4fe43Sopenharmony_ci *.mod \ 491bd4fe43Sopenharmony_ci .*.cmd \ 501bd4fe43Sopenharmony_ciCLEAN_FILE += ./*/*.o ./*/.*.cmd 511bd4fe43Sopenharmony_ci 521bd4fe43Sopenharmony_ci#******************************************************************************* 531bd4fe43Sopenharmony_ci.PHONY: default clean 541bd4fe43Sopenharmony_cidefault: 551bd4fe43Sopenharmony_ci @echo -e "\e[0;32;1m--Compiling '$(TARGET)'... Configs as follow:\e[0;36;1m" 561bd4fe43Sopenharmony_ci @echo "---- USER_CROSS=$(CROSS) KERNEL_CROSS=$(CROSS_COMPILE)" 571bd4fe43Sopenharmony_ci @echo ---- HIARCH=$(HIARCH), ARCH=$(ARCH), HICHIP=$(HICHIP), CVER=$(CVER), DBG=$(HIDBG), HI_FPGA=$(HI_FPGA) 581bd4fe43Sopenharmony_ci @echo ---- CPU_TYPE=$(CPU_TYPE) 591bd4fe43Sopenharmony_ci @echo ---- MPP_CFLAGS=$(MPP_CFLAGS) 601bd4fe43Sopenharmony_ci @echo ---- MKP_CFLAGS=$(MKP_CFLAGS) 611bd4fe43Sopenharmony_ci @echo ---- SDK_PATH=$(SDK_PATH) , PARAM_FILE=$(PARAM_FILE) 621bd4fe43Sopenharmony_ci @echo ---- KERNEL_ROOT=$(KERNEL_ROOT) 631bd4fe43Sopenharmony_ci @echo ---- ARCH_ROOT=$(ARCH_ROOT), ARCH_HAL=$(ARCH_HAL) 641bd4fe43Sopenharmony_ci @echo ---- HIGDB=$(HIGDB) 651bd4fe43Sopenharmony_ci @echo ---- COMPILER_TRIPLE=$(COMPILER_TRIPLE) 661bd4fe43Sopenharmony_ci @@echo -e "\e[0m" 671bd4fe43Sopenharmony_ci #@$(MAKE) -C $(KERNEL_ROOT) M=$(PWD) $(COMPILER_TRIPLE) V=10 modules -j 24 681bd4fe43Sopenharmony_ci @$(MAKE) -C $(KERNEL_ROOT) M=$(PWD) $(COMPILER_TRIPLE) $(COMPILER_TRIPLE) V=10 modules -j 24 691bd4fe43Sopenharmony_ciifeq ($(HIGDB), n) 701bd4fe43Sopenharmony_ciifeq ($(OHOS_LITE), y) 711bd4fe43Sopenharmony_ci @$(CROSS_COMPILE)strip --strip-unneeded $(TARGET).ko 721bd4fe43Sopenharmony_ci @$(CROSS_COMPILE)strip --strip-unneeded $(MOD_NAME).o 731bd4fe43Sopenharmony_cielse 741bd4fe43Sopenharmony_ci @$(CROSS_PATH)/$(CROSS_COMPILE)strip --strip-unneeded $(TARGET).ko 751bd4fe43Sopenharmony_ci @$(CROSS_PATH)/$(CROSS_COMPILE)strip --strip-unneeded $(MOD_NAME).o 761bd4fe43Sopenharmony_ciendif 771bd4fe43Sopenharmony_ciendif 781bd4fe43Sopenharmony_ci @mkdir -p $(REL_KO) && cp -rf $(TARGET).ko $(REL_KO) && chmod 777 $(REL_KO)/load* 791bd4fe43Sopenharmony_ci# @mkdir -p $(REL_INC) && $(call maco_cp_file,$(INC_FILE),$(REL_INC)) 801bd4fe43Sopenharmony_ciifeq ($(CONFIG_DRIVER_SPACE_TYPE),kernel_space) 811bd4fe43Sopenharmony_ci @mkdir -p $(REL_OBJ) && cp -rf $(MOD_NAME).o $(REL_OBJ) 821bd4fe43Sopenharmony_ci @mkdir -p $(REL_INI) && cp -rf $(INIT_FILE) $(REL_INI) 831bd4fe43Sopenharmony_ciendif 841bd4fe43Sopenharmony_ci 851bd4fe43Sopenharmony_ciclean: 861bd4fe43Sopenharmony_ci @rm -f $(CLEAN_FILE) 871bd4fe43Sopenharmony_ci @rm -f $(REL_KO)/$(TARGET).ko 881bd4fe43Sopenharmony_ciifeq ($(CONFIG_DRIVER_SPACE_TYPE),kernel_space) 891bd4fe43Sopenharmony_ci @rm -f $(REL_OBJ)/$(MOD_NAME).o 901bd4fe43Sopenharmony_ci @rm -f $(REL_INI)/$(shell basename $(INIT_FILE)) 911bd4fe43Sopenharmony_ciendif 921bd4fe43Sopenharmony_ci @rm .tmp_versions -rf 931bd4fe43Sopenharmony_ci @rm Module.symvers -f 941bd4fe43Sopenharmony_ci @rm modules.order -f 95