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 17############################################################################### 18# export variables 19############################################################################### 20ifeq ($(CFG_HI_EXPORT_FLAG),) 21 ifneq ($(KERNELRELEASE),) 22 KERNEL_DIR := $(srctree) 23 24 SDK_DIR := $(KERNEL_DIR)/../../.. 25 else 26 SDK_DIR := $(CURDIR)/../../.. 27 endif 28 29 ifneq ($(SDK_SOURCE_DIR),) 30 SDK_DIR := $(SDK_SOURCE_DIR)/.. 31 endif 32include $(SDK_DIR)/base.mak 33endif 34 35############################################################################### 36# local variables 37############################################################################### 38KERNEL := $(KERNEL_DIR)/$(CFG_HI_KERNEL_VERSION) 39 40## file(s) to be removed 41REMOVED_FILES := "*.o" "*.ko" "*.order" "*.symvers" "*.mod" "*.mod.*" "*.cmd" ".tmp_versions" "*.d" "modules.builtin" 42 43## header search path 44 45EXTRA_CFLAGS += -I$(COMMON_DIR)/include \ 46 -I$(COMMON_DIR)/api/include \ 47 -I$(COMMON_DIR)/drv/include \ 48 -I$(COMMON_DIR)/api/log \ 49 -I$(COMMON_DIR)/api/stat \ 50 -I$(COMMON_DIR)/api/sys \ 51 -I$(COMMON_DIR)/api/mmz \ 52 -I$(COMMON_DIR)/drv/module \ 53 -I$(COMMON_DIR)/drv/mem \ 54 -I$(COMMON_DIR)/drv/log \ 55 -I$(COMMON_DIR)/drv/mmz \ 56 -I$(COMMON_DIR)/api/mem \ 57 -I$(COMMON_DIR)/drv/sys \ 58 -I$(MSP_DIR)/drv/include \ 59 -I$(MSP_DIR)/api/include \ 60 -I$(MSP_DIR)/api/tde/include \ 61 -I$(MSP_DIR)/include \ 62 -I$(KERNEL) \ 63 -I$(srctree)/bounds_checking_function/include \ 64 65EXTRA_CFLAGS +=-Wno-error=date-time 66KBUILD_EXTRA_SYMBOLS += $(MSP_DIR)/drv/securec/Module.symvers 67 68ifeq ($(CFG_HI_TVP_SUPPORT),y) 69EXTRA_CFLAGS += -I$(LINUX_DIR)/drivers/hisilicon/tee/tee_hisi/tzdriver/ 70endif 71 72ifdef CFG_HI_LOG_LEVEL 73EXTRA_CFLAGS += -DCFG_HI_LOG_LEVEL=$(CFG_HI_LOG_LEVEL) 74else 75EXTRA_CFLAGS += -DCFG_HI_LOG_LEVEL=1 76endif 77 78ifeq (y,$(CFG_HI_LOG_NETWORK_SUPPORT)) 79EXTRA_CFLAGS += -DLOG_NETWORK_SUPPORT 80endif 81 82ifeq (y,$(CFG_HI_UNIFIED_IMAGE_SUPPORT)) 83EXTRA_CFLAGS += -DHI_UNIFIED_IMAGE_SUPPORT 84endif 85 86ifeq (y,$(CFG_HI_LOG_UDISK_SUPPORT)) 87EXTRA_CFLAGS += -DLOG_UDISK_SUPPORT 88endif 89 90ifeq (y,$(CFG_HI_MEMMGR_SUPPORT)) 91EXTRA_CFLAGS += -DCMN_MMGR_SUPPORT 92endif 93 94ifeq (y,$(CFG_HI_CLOSE_BOOT_PRINT_AND_UART0)) 95EXTRA_CFLAGS += -DCONFIG_CLOSE_UART0 96endif 97 98ifeq (y,$(CFG_HI_CIPLUS_SUPPORT)) 99EXTRA_CFLAGS += -DCONFIG_CIPLUS_SUPPORT 100endif 101 102ifeq ($(TARGET_BUILD_VARIANT),user) 103EXTRA_CFLAGS += -DANDROID_BUILD_USER 104endif 105 106ifeq (y,$(CFG_HI_ITRUSTEE_SUPPORT)) 107EXTRA_CFLAGS += -DCFG_HI_TEE_ITRUSTEE_SUPPORT 108endif 109 110EXTRA_CFLAGS += $(CFG_HI_KMOD_CFLAGS) 111 112MOD_NAME_CMN := hi_common 113MOD_NAME_MMZ := hi_mmz 114MOD_NAME_MEDIA := hi_media 115 116$(MOD_NAME_CMN)-y := sys/drv_base_ext_k.o \ 117 sys/drv_sys_ext_k.o \ 118 sys/drv_sys_ext_spread.o \ 119 stat/drv_stat_ext_k.o \ 120 log/drv_log_ext_k.o 121 122$(MOD_NAME_CMN)-y += sys/drv_base_ext.o \ 123 sys/drv_sys_ext.o \ 124 sys/drv_reg_common.o \ 125 sys/drv_sys_policy.o \ 126 sys/drv_sys_capability.o \ 127 stat/drv_stat_ext.o \ 128 mem/drv_mutils.o \ 129 module/drv_module_ext.o \ 130 log/drv_log_ext.o \ 131 userproc/drv_userproc.o \ 132 osal/osal_debug.o \ 133 osal/osal_atomic.o \ 134 osal/osal_semaphore.o \ 135 osal/osal_mutex.o \ 136 osal/osal_spinlock.o \ 137 osal/osal_wait.o \ 138 osal/osal_workqueue.o \ 139 osal/osal_fence.o \ 140 osal/osal_interrupt.o \ 141 osal/osal_task.o \ 142 osal/osal_addr.o \ 143 osal/osal_cache.o \ 144 osal/osal_barrier.o \ 145 osal/osal_string.o \ 146 osal/osal_timer.o \ 147 osal/osal_proc.o \ 148 osal/osal_fileops.o \ 149 osal/osal_device.o \ 150 osal/osal_math.o \ 151 osal/osal_gpio.o \ 152 osal/osal_exportfunc.o 153 154$(MOD_NAME_MEDIA)-y := himedia/himedia_base.o \ 155 himedia/himedia.o 156 157ifeq ($(CFG_HI_MEMMGR_SUPPORT),y) 158$(MOD_NAME_CMN)-y += mem/drv_mmgr_ext.o mem/drv_mem_ext.o 159endif 160 161ifeq (y,$(CFG_HI_TEST_SUPPORT)) 162EXTRA_CFLAGS += -DCMN_TEST_SUPPORTED 163$(MOD_NAME_CMN)-y += test/drv_test_ext.o 164endif 165 166 167ifeq ($(KERNEL_VERSION), linux-5.10) 168$(MOD_NAME_MMZ)-y := mmz/drv_mmz_ext_k.o \ 169 mmz/drv_mmz_intf.o \ 170 mmz/drv_mmz_userdev.o \ 171 mmz/drv_media_mem.o 172else 173$(MOD_NAME_MMZ)-y := mmz/drv_mmz_ext_k.o \ 174 mmz/drv_mmz_intf.o \ 175 mmz/drv_tzsmmu.o \ 176 mmz/drv_mmz_userdev.o \ 177 mmz/drv_media_mem.o 178endif 179 180ifdef CONFIG_COMPAT 181$(MOD_NAME_MMZ)-y +=mmz/drv_mmz_compat.o 182endif 183 184DEPENDS := $(patsubst %.o, %.d, $($(MOD_NAME_MEDIA)-y)) 185DEPENDS += $(patsubst %.o, %.d, $($(MOD_NAME_MMZ)-y)) 186DEPENDS += $(patsubst %.o, %.d, $($(MOD_NAME_CMN)-y)) 187 188ifeq ($(CFG_HI_TVP_SUPPORT),y) 189$(MOD_NAME_MMZ)-y += mmz/drv_tee_smmu_agent.o 190endif 191############################################################################### 192obj-$(CFG_MSP_BUILDTYPE) += $(MOD_NAME_MEDIA).o $(MOD_NAME_MMZ).o $(MOD_NAME_CMN).o 193 194ifeq ($(CFG_HI_USER_DRV),y) 195$(MOD_NAME_CMN)-y := osal/osal_debug.o \ 196 osal/osal_atomic.o \ 197 osal/osal_semaphore.o \ 198 osal/osal_mutex.o \ 199 osal/osal_spinlock.o \ 200 osal/osal_wait.o \ 201 osal/osal_workqueue.o \ 202 osal/osal_fence.o \ 203 osal/osal_interrupt.o \ 204 osal/osal_task.o \ 205 osal/osal_addr.o \ 206 osal/osal_cache.o \ 207 osal/osal_barrier.o \ 208 osal/osal_string.o \ 209 osal/osal_timer.o \ 210 osal/osal_proc.o \ 211 osal/osal_fileops.o \ 212 osal/osal_device.o \ 213 osal/osal_math.o \ 214 osal/osal_gpio.o \ 215 osal/osal_exportfunc.o 216 217DEPENDS := $(patsubst %.o, %.d, $($(MOD_NAME_MEDIA)-y)) 218DEPENDS += $(patsubst %.o, %.d, $($(MOD_NAME_CMN)-y)) 219endif 220 221############################################################################### 222 223############################################################################### 224# rules 225############################################################################### 226.PHONY: all clean install uninstall 227 228all: 229 @make ARCH=$(CFG_HI_CPU_ARCH) CROSS_COMPILE=$(CFG_HI_TOOLCHAINS_NAME)- -C $(KERNEL) M=`pwd` modules 230 @$(CFG_HI_TOOLCHAINS_NAME)-strip --strip-unneeded $(MOD_NAME_CMN).ko 231 @echo "make $@ $(obj) over !" 232 233clean: 234 @$(foreach file,$(REMOVED_FILES),\ 235 `find ./ -name $(file) | xargs rm -rf`) 236 @echo "make $@ $(obj) over !" 237 238install: all 239 @cp -f $(MOD_NAME_CMN).ko $(MODULE_DIR)/ 240 @cp -f $(MOD_NAME_MMZ).ko $(MODULE_DIR)/ 241 @cp -f $(MOD_NAME_MEDIA).ko $(MODULE_DIR)/ 242 243uninstall: 244 @rm -f $(MODULE_DIR)/$(MOD_NAME_CMN).ko 245 @rm -f $(MODULE_DIR)/$(MOD_NAME_MMZ).ko 246 @rm -f $(MODULE_DIR)/$(MOD_NAME_MEDIA).ko 247 248$(DEPENDS):%.d:%.c 249 @set -e; rm -f $(COMMON_DIR)/drv/$@; \ 250 $(CFG_HI_TOOLCHAINS_NAME)-gcc $(CFG_HI_SEC_COMPILE_CFLAGS) -MM $(EXTRA_CFLAGS) $< > $(COMMON_DIR)/drv/$@; \ 251 sed -i 's,\($(notdir $*)\)\.o[ :]*,$(dir $@)\1.o $@ : ,g' $(COMMON_DIR)/drv/$@ 252 253-include $(DEPENDS) 254