• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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