1# Copyright (C) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 2# 3# This program is free software; you can redistribute it and/or 4# modify it under the terms of the GNU General Public License 5# as published by the Free Software Foundation; either version 2 6# of the License, or (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program; if not, write to the Free Software 15# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 16 17ifeq ($(CFG_PRODUCT_TYPE),liteos) 18#=============================================================================== 19#=============================================================================== 20#=============================================================================== 21# export variables 22#=============================================================================== 23ifndef LITEOSTOPDIR 24.EXPORT_ALL_VARIABLES: 25CUR_DIR=${PWD} 26SUB_DIR=/source/msp/drv/gpio 27TOP_DIR=$(subst $(SUB_DIR),,$(CUR_DIR)) 28SOURCE_DIR=$(TOP_DIR)/source 29include $(TOP_DIR)/base.mak 30endif 31 32LIBOUT = $(MSPOUT_DRV_DIR)/gpio 33 34ARFLAGS = cr 35RM = -rm -rf 36 37MODULE_NAME := gpio_drv 38LIBM = $(MSP_LIB_DIR)/libhi_$(MODULE_NAME).a 39 40TARGET := gpio 41 42DRV_FILES = $(wildcard *.c) 43 44DRV_OBJS = $(patsubst %.c,$(LIBOUT)/%.o, $(DRV_FILES)) 45 46EXTRA_CFLAGS += $(CFG_HI_KMOD_CFLAGS) 47 48EXTRA_CFLAGS += -I$(COMMON_UNF_INCLUDE) \ 49 -I$(COMMON_API_INCLUDE) \ 50 -I$(COMMON_DRV_INCLUDE) \ 51 -I$(MSP_UNF_INCLUDE) \ 52 -I$(MSP_API_INCLUDE) \ 53 -I$(MSP_DRV_INCLUDE) \ 54 -I$(MSP_DIR)/api/gpio \ 55 -I$(MSP_DIR)/drv/gpio \ 56 57EXTRA_CFLAGS += -DLOG_D_MODULE_ID=HI_ID_GPIO 58 59SDK_CFLAGS = $(CFG_HI_CFLAGS) 60SDK_CFLAGS += $(EXTRA_CFLAGS) 61 62-include $(TOP_DIR)/rule.mak 63#=============================================================================== 64# rules 65#=============================================================================== 66.PHONY: all clean 67all: $(LIBM) 68clean: 69 $(RM) $(LIBM) $(LIBOUT)/* *.bak *~ 70 71$(LIBM): $(DRV_OBJS) 72 $(call make-ar,$@,$^) 73 74$(LIBOUT)/%.o: %.c 75 $(call make-depend-compile,$<,$@,$(subst .o,.d,$@),$(SDK_CFLAGS)) 76 77-include $(DRV_OBJS:.o=.d) 78 79else 80#=============================================================================== 81# export variables 82#=============================================================================== 83ifeq ($(CFG_HI_EXPORT_FLAG),) 84 ifneq ($(KERNELRELEASE),) 85 KERNEL_DIR := $(srctree) 86 87 SDK_DIR := $(KERNEL_DIR)/../../.. 88 else 89 SDK_DIR := $(CURDIR)/../../../.. 90 endif 91 92 ifneq ($(SDK_SOURCE_DIR),) 93 SDK_DIR := $(SDK_SOURCE_DIR)/.. 94 endif 95 96include $(SDK_DIR)/base.mak 97endif 98 99KBUILD_EXTRA_SYMBOLS += $(COMMON_DIR)/drv/Module.symvers 100KBUILD_EXTRA_SYMBOLS += $(MSP_DIR)/drv/pq/Module.symvers 101export KBUILD_EXTRA_SYMBOLS 102 103#=============================================================================== 104# local variables 105#=============================================================================== 106EXTRA_CFLAGS += -I$(COMMON_UNF_INCLUDE) \ 107 -I$(COMMON_API_INCLUDE) \ 108 -I$(COMMON_DRV_INCLUDE) \ 109 -I$(MSP_UNF_INCLUDE) \ 110 -I$(MSP_API_INCLUDE) \ 111 -I$(MSP_DRV_INCLUDE) \ 112 -I$(MSP_DIR)/api/gpio \ 113 -I$(MSP_DIR)/drv/gpio \ 114 115EXTRA_CFLAGS += $(CFG_HI_KMOD_CFLAGS) 116 117EXTRA_CFLAGS += -DLOG_D_MODULE_ID=HI_ID_GPIO 118 119KBUILD_EXTRA_SYMBOLS += $(COMMON_DIR)/drv/Module.symvers 120 121MOD_NAME := hi_gpio 122 123$(MOD_NAME)-y := drv_gpio_intf.o \ 124 drv_gpio.o 125 126obj-$(CFG_MSP_BUILDTYPE) += $(MOD_NAME).o 127 128 129#=============================================================================== 130# rules 131#=============================================================================== 132.PHONY: all clean install uninstall 133 134all: 135 $(AT)make -C $(LINUX_DIR) ARCH=$(CFG_HI_CPU_ARCH) CROSS_COMPILE=$(CFG_HI_TOOLCHAINS_NAME)- M=$(CURDIR) modules 136 137clean: 138 $(AT)make -C $(LINUX_DIR) M=$(CURDIR) clean 139 $(AT)rm -rf *.o 140 $(AT)rm -rf .*.o.cmd 141 $(AT)rm -rf .tmp_versions 142 $(AT)rm -rf Module.symvers 143 $(AT)rm -rf modules.order 144 145install: all 146ifneq ($(CFG_MSP_BUILDTYPE),y) 147 $(AT)cp -f $(CURDIR)/$(MOD_NAME).ko $(MODULE_DIR)/ 148endif 149 150uninstall: 151 $(AT)rm -rf $(MODULE_DIR)/$(MOD_NAME).ko 152endif 153 154