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