• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (C) 2021 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# Makefile.param
18#
19# Only global variable should be defined here.
20# All the variables must be used as "export" and "?=".
21# Otherwise, there will be some errors, when Makefile.param is nested.
22
23# Use this file as the following sample
24# ifeq ($(PARAM_FILE), )
25#     PARAM_FILE:=../Makefile.param
26#     include $(PARAM_FILE)
27# endif
28
29#
30# .config is generated by menuconfig, all the configs can be defined in menuconfig.
31#
32
33export PARAM_FILE
34PARAM_DIR=$(shell pwd)/$(shell dirname $(PARAM_FILE))
35
36include $(PARAM_DIR)/cfg.mak
37
38export HIWORK_PATH?=/hiwork
39
40ifeq ($(CONFIG_KERNEL_BIT), KERNEL_BIT_32)
41    export ARCH=arm
42else
43    export ARCH=arm64
44endif
45
46export PRODUCT?=IPC
47export MPP_BUILD=n
48
49# export global variables
50export HIARCH?=$(CONFIG_HI_ARCH)
51export HI_SUBARCH?=$(CONFIG_HI_SUBARCH)
52export HICHIP?=$(CONFIG_HI_CHIP_TYPE)
53export ARM_ARCH?=$(CONFIG_ARM_ARCH_TYPE)
54
55ifeq ($(CONFIG_HI_ARCH), $(filter $(CONFIG_HI_ARCH), hi3516ev200))
56    export ARCH_LIBNAME?=$(CONFIG_HI_ARCH)
57else
58    export ARCH_LIBNAME?=$(CONFIG_HI_SUBARCH)
59endif
60
61export ARCH_DIR?=$(CONFIG_HI_ARCH)
62export INTER_DRV?=$(CONFIG_HI_ARCH)
63
64# uclibc or glibc
65export LIBC?=$(CONFIG_LIBC_TYPE)
66
67# linux or huawei_liteos
68export OSTYPE?=$(CONFIG_OS_TYPE)
69export KERNEL_NAME?=$(CONFIG_KERNEL_VERSION)
70
71
72# Whether support the debug information. HI_DEBUG or HI_RELEASE or AXIS
73export HI_RLS_MODE?=$(CONFIG_HI_RLS_MODE)
74
75ifeq ($(HI_RLS_MODE),HI_DEBUG)
76        export DBG_FLAG=0
77else
78        export DBG_FLAG=0
79endif
80
81# cpu type single/big-little
82export CPU_TYPE?=$(CONFIG_CPU_TYPE)
83
84# -g
85export HIGDB?=$(CONFIG_HI_GDB)
86
87# FPGA board or not
88export FPGA?=$(CONFIG_HI_FPGA)
89
90# CROSS
91export CROSS_COMPILE?=$(CONFIG_HI_CROSS)
92export CROSS?=$(CONFIG_HI_CROSS_LIB)
93
94ifeq ($(HIARCH), )
95	$(error HIARCH not defined! Please check!)
96endif
97
98ifeq ($(LIBC), )
99	$(error LIBC not defined! Please check!)
100endif
101
102ifeq ($(FPGA),y)
103	export HI_FPGA:=HI_FPGA
104
105	ifeq ($(CONFIG_UMAP6),y)
106		export UMAP:=UMAP6
107	else ifeq ($(CONFIG_UMAP7),y)
108		export UMAP:=UMAP7
109	else ifeq ($(CONFIG_UMAP7P),y)
110		export UMAP:=UMAP7P
111	else
112		export UMAP:=UMAPXXX
113	endif
114else
115	export HI_FPGA:=HI_XXXX
116endif
117
118###############################################################################
119# Get the local SDK_ROOT path or RELEASE_ROOT path by PARAM_FILE.
120# PARAM_FILE is configured at Makefile before include this file
121# export SDK_PATH?=$(shell cd $(shell pwd)/`dirname $(PARAM_FILE)`/..; pwd)
122export SDK_PATH?=$(PARAM_DIR)/..
123export MPP_PATH?=$(PARAM_DIR)
124export DRV_ROOT?=$(SDK_PATH)/drv
125export OSAL_ROOT?=$(SDK_PATH)/osal
126export VENDOR_ROOT?=$(SDK_PATH)/vendor
127export INTERDRV_ROOT?=$(SDK_PATH)/interdrv
128export CBB_ROOT?=$(MPP_PATH)/cbb
129# Define the object output directory
130ifeq ($(MPP_BUILD), y)
131	export EXTDRV:=$(VENDOR_ROOT)
132	export SAMPLE_DIR=$(SDK_PATH)/mpp/sample/$(HIARCH)
133	ifeq ($(HIARCH), hi3559av100)
134		export GPU_DIR:=$(VENDOR_ROOT)/gpu
135		export REL_DIR=$(SDK_PATH)/mpp/out/$(HIARCH)/$(OSTYPE)/$(CPU_TYPE)
136	else
137		export REL_DIR=$(SDK_PATH)/mpp/out/$(HIARCH)/$(ARM_ARCH)/$(CPU_TYPE)_$(OSTYPE)
138	endif
139else
140	#### MPP_BUILD=n ######
141	export EXTDRV:=$(VENDOR_ROOT)
142	export SAMPLE_DIR=$(SDK_PATH)/mpp/sample
143    export OHOS_ROOT_PATH?=$(SDK_PATH)/../../../../../..
144	ifeq ($(HIARCH), hi3559av100)
145		export REL_DIR=$(SDK_PATH)/mpp/$(OSTYPE)/$(CPU_TYPE)
146	else
147		export REL_DIR=$(SDK_PATH)/mpp
148	endif
149endif
150
151#------------------------------------------------------------------------------
152
153###############################################################################
154# Common CFLAGS, build flags for all MPP libs and drivers
155export MPP_CFLAGS:= -Wall -fsigned-char
156
157# Driver CFLAGS, build flags for linux kernel kbuild EXTRA_CFLAGS or liteos drivers
158export DRV_CFLAGS:= -Wall -fsigned-char
159
160# Libs CFLAGS, build flags for linux or liteos libs
161export LIBS_CFLAGS := -Wall -fsigned-char
162
163# Libs executable program CFLAGS, build flags for linux or liteos libs
164export LIBS_EXEC_CFLAGS
165# Libs LDFLAGS, link flags for linux or liteos libs
166export LIBS_LD_CFLAGS := -fno-common
167#------------------------------------------------------------------------------
168
169MPP_CFLAGS += -D$(HI_RLS_MODE)
170
171ifeq ($(HIGDB), y)
172	MPP_CFLAGS += -g
173endif
174
175ifeq ($(MPP_BUILD), y)
176	DRV_CFLAGS += -Wunused-but-set-variable -Wfloat-equal -Wformat=2
177	MPP_CFLAGS += -Wunused-but-set-variable -Wtrampolines -pipe -fno-common
178	LIBS_CFLAGS += -Wunused-but-set-variable -Wformat=2
179	LIBS_LD_CFLAGS   += -Wl,-Bsymbolic -rdynamic
180
181	ifeq ($(HIARCH), hi3559av100)
182		DRV_CFLAGS += --warn-stack-usage=800
183	else
184		DRV_CFLAGS += --warn-stack-usage=512
185	endif
186endif
187
188
189# Define the param of audio
190AUDIO_NEW_ARCH = hi3516ev200 hi3516cv500
191ifeq ($(OSTYPE), liteos)
192    ifeq ($(HIARCH), hi3516cv500)
193        export AUDIO_PATH?=$(MPP_PATH)/cbb/audio/component/lib/$(HIARCH)/$(CONFIG_HI_CROSS)/$(OSTYPE)/$(ARM_ARCH)
194    else
195        export AUDIO_PATH?=$(MPP_PATH)/cbb/audio/component/lib/$(HIARCH)/$(CONFIG_HI_CROSS)/$(OSTYPE)
196    endif
197else
198    export AUDIO_PATH?=$(MPP_PATH)/cbb/audio/component/lib/$(HIARCH)/$(CONFIG_HI_CROSS)/$(OSTYPE)
199endif
200
201ifeq ($(CONFIG_HI_AUDIO_ONLY_DRIVER_SUPPORT), y)
202export AUDIO_LIBA ?=
203export AUDIO_LIBS ?=
204else
205ifeq ($(CONFIG_HI_AUDIO_STATIC_REGISTER_SUPPORT),y)
206ifeq ($(OSTYPE),linux)
207export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\
208                     $(REL_LIB)/libupvqe.a\
209                     $(REL_LIB)/libdnvqe.a\
210                     $(REL_LIB)/libaaccomm.a\
211                     $(REL_LIB)/libaacenc.a\
212                     $(REL_LIB)/libaacdec.a\
213                     $(REL_LIB)/libaacsbrenc.a\
214                     $(REL_LIB)/libaacsbrdec.a
215
216export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so\
217                     $(REL_LIB)/libupvqe.so\
218                     $(REL_LIB)/libdnvqe.so\
219                     $(REL_LIB)/libaaccomm.so\
220                     $(REL_LIB)/libaacenc.so\
221                     $(REL_LIB)/libaacdec.so
222else
223export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\
224                     $(REL_LIB)/libupvqe.a\
225                     $(REL_LIB)/libdnvqe.a\
226                     $(REL_LIB)/libaaccomm.a\
227                     $(REL_LIB)/libaacenc.a\
228                     $(REL_LIB)/libaacdec.a\
229                     $(REL_LIB)/libaacsbrenc.a\
230                     $(REL_LIB)/libaacsbrdec.a
231
232export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so
233endif
234else
235ifeq ($(HIARCH),$(filter $(AUDIO_NEW_ARCH), $(HIARCH)))
236export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\
237                     $(REL_LIB)/libupvqe.a\
238                     $(REL_LIB)/libdnvqe.a
239
240export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so\
241                     $(REL_LIB)/libupvqe.so\
242                     $(REL_LIB)/libdnvqe.so\
243                     $(REL_LIB)/libaaccomm.so\
244                     $(REL_LIB)/libaacenc.so\
245                     $(REL_LIB)/libaacdec.so
246else
247export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\
248                     $(REL_LIB)/libupvqe.a\
249                     $(REL_LIB)/libdnvqe.a\
250                     $(REL_LIB)/libaacenc.a\
251                     $(REL_LIB)/libaacdec.a
252
253export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so\
254                     $(REL_LIB)/libupvqe.so\
255                     $(REL_LIB)/libdnvqe.so\
256                     $(REL_LIB)/libaacenc.so\
257                     $(REL_LIB)/libaacdec.so
258endif
259endif
260endif
261
262# LIB GLOBAL CFLAGS
263ifeq ($(HIARCH),$(filter $(HIARCH), hi3559av100es))
264
265ifeq ($(CPU_TYPE),single)
266	LIBS_CFLAGS    += -mcpu=cortex-a53
267	LIBS_LD_CFLAGS += -mcpu=cortex-a53
268else
269	LIBS_CFLAGS    += -mcpu=cortex-a73.cortex-a53
270	LIBS_LD_CFLAGS += -mcpu=cortex-a73.cortex-a53
271endif
272
273else ifeq ($(HIARCH),$(filter $(HIARCH), hi3519av100))
274	LIBS_CFLAGS    += -mcpu=cortex-a53 -mfloat-abi=softfp -mfpu=neon-vfpv4
275	LIBS_LD_CFLAGS += -mcpu=cortex-a53 -mfloat-abi=softfp -mfpu=neon-vfpv4
276else ifeq ($(HIARCH),$(filter $(HIARCH), hi3516cv500 hi3516ev200))
277ifeq ($(CONFIG_CUSTOMER_VERSION), COMMON)
278	LIBS_CFLAGS    += -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4
279	LIBS_LD_CFLAGS += -mcpu=cortex-a7 -mfloat-abi=softfp
280endif
281endif
282
283
284# common CFLAGS
285LIBS_CFLAGS    += -ldl -ffunction-sections -fdata-sections -O2
286
287# secure CFLAGS
288LIBS_CFLAGS    += -fstack-protector-strong -fPIC
289LIBS_EXEC_CFLAGS += -fPIE -pie -s
290LIBS_LD_CFLAGS += -Wl,-z,relro -Wl,-z,noexecstack -Wl,-z,now,-s
291LIBS_LD_CFLAGS += -fPIC
292
293###############################################################################
294
295#********************* Macro for version management*****************************
296VER_X ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$1}')
297VER_Y ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$2}')
298VER_Z ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$3}')
299VER_P ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$4}')
300VER_B ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$5}')
301
302MPP_CFLAGS += -DVER_X=$(VER_X) -DVER_Y=$(VER_Y) -DVER_Z=$(VER_Z) -DVER_P=$(VER_P) -DVER_B=$(VER_B)
303#*******************************************************************************
304
305MPP_CFLAGS += -D$(CONFIG_USER_BIT) -D$(CONFIG_KERNEL_BIT)
306
307# -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE is for mmap64
308ifeq ($(CONFIG_KERNEL_BIT),KERNEL_BIT_64)
309	LIBS_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
310	LIBS_LD_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
311endif
312
313COMMON_INCLUDE := -I$(OSAL_ROOT)/include
314ifeq ($(MPP_BUILD), y)
315        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/include
316        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/include/adapt
317        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/include
318        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/include/adapt
319        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/arch/$(HIARCH)/include
320        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/arch/$(HIARCH)/include/$(HI_SUBARCH)
321        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/sys/include
322        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vdec/include/h7
323        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vo/include
324        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vo/vo_dev/include
325        COMMON_INCLUDE += -I$(MPP_PATH)/cbb/audio/include/h7/inner
326        ifeq ($(HIARCH), hi3516ev200)
327                COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vgs/vgs_hi3516ev200/include
328                COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vgs/vgs_hi3516ev200/include/adapt
329        endif
330		ifeq ($(CONFIG_DRIVER_SPACE_TYPE),user_space)
331			COMMON_INCLUDE +=-I $(SDK_PATH)/interdrv/common/hi_irq/include
332		endif
333else
334    COMMON_INCLUDE += -I$(REL_DIR)/include
335    COMMON_INCLUDE += -I$(REL_DIR)/include/adapt
336    COMMON_INCLUDE += -I$(OHOS_ROOT_PATH)/third_party/bounds_checking_function/include
337endif
338LIBS_CFLAGS += $(COMMON_INCLUDE)
339DRV_CFLAGS  += $(COMMON_INCLUDE)
340MPP_CFLAGS  += $(COMMON_INCLUDE)
341export JPEGE DCF=$(CONFIG_HI_JPEGE_DCF)
342
343ifeq ($(JPEGE DCF), y)
344         MPP_CFLAGS += -DENABLE_JPEGEDCF
345endif
346
347ifeq ($(MPP_BUILD), n)
348	export ISP_ROOT = $(MPP_PATH)/cbb/isp
349endif
350
351ifeq ($(COMPILER_PATH_DIR), )
352	export COMPILER_PATH_DIR=$(OHOS_ROOT_PATH)/prebuilts/clang/ohos/linux-x86_64/llvm/bin
353endif
354
355# include the config file of platform
356include $(MPP_PATH)/Makefile.$(OSTYPE).param
357
358# End!!
359