# Copyright (C) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Makefile.param # # Only global variable should be defined here. # All the variables must be used as "export" and "?=". # Otherwise, there will be some errors, when Makefile.param is nested. # Use this file as the following sample # ifeq ($(PARAM_FILE), ) # PARAM_FILE:=../Makefile.param # include $(PARAM_FILE) # endif # # .config is generated by menuconfig, all the configs can be defined in menuconfig. # export PARAM_FILE PARAM_DIR=$(shell pwd)/$(shell dirname $(PARAM_FILE)) include $(PARAM_DIR)/cfg.mak export HIWORK_PATH?=/hiwork ifeq ($(CONFIG_KERNEL_BIT), KERNEL_BIT_32) export ARCH=arm else export ARCH=arm64 endif export PRODUCT?=IPC export MPP_BUILD=n # export global variables export HIARCH?=$(CONFIG_HI_ARCH) export HI_SUBARCH?=$(CONFIG_HI_SUBARCH) export HICHIP?=$(CONFIG_HI_CHIP_TYPE) export ARM_ARCH?=$(CONFIG_ARM_ARCH_TYPE) ifeq ($(CONFIG_HI_ARCH), $(filter $(CONFIG_HI_ARCH), hi3516ev200)) export ARCH_LIBNAME?=$(CONFIG_HI_ARCH) else export ARCH_LIBNAME?=$(CONFIG_HI_SUBARCH) endif export ARCH_DIR?=$(CONFIG_HI_ARCH) export INTER_DRV?=$(CONFIG_HI_ARCH) # uclibc or glibc export LIBC?=$(CONFIG_LIBC_TYPE) # linux or huawei_liteos export OSTYPE?=$(CONFIG_OS_TYPE) export KERNEL_NAME?=$(CONFIG_KERNEL_VERSION) # Whether support the debug information. HI_DEBUG or HI_RELEASE or AXIS export HI_RLS_MODE?=$(CONFIG_HI_RLS_MODE) ifeq ($(HI_RLS_MODE),HI_DEBUG) export DBG_FLAG=0 else export DBG_FLAG=0 endif # cpu type single/big-little export CPU_TYPE?=$(CONFIG_CPU_TYPE) # -g export HIGDB?=$(CONFIG_HI_GDB) # FPGA board or not export FPGA?=$(CONFIG_HI_FPGA) # CROSS export CROSS_COMPILE?=$(CONFIG_HI_CROSS) export CROSS?=$(CONFIG_HI_CROSS_LIB) ifeq ($(HIARCH), ) $(error HIARCH not defined! Please check!) endif ifeq ($(LIBC), ) $(error LIBC not defined! Please check!) endif ifeq ($(FPGA),y) export HI_FPGA:=HI_FPGA ifeq ($(CONFIG_UMAP6),y) export UMAP:=UMAP6 else ifeq ($(CONFIG_UMAP7),y) export UMAP:=UMAP7 else ifeq ($(CONFIG_UMAP7P),y) export UMAP:=UMAP7P else export UMAP:=UMAPXXX endif else export HI_FPGA:=HI_XXXX endif ############################################################################### # Get the local SDK_ROOT path or RELEASE_ROOT path by PARAM_FILE. # PARAM_FILE is configured at Makefile before include this file # export SDK_PATH?=$(shell cd $(shell pwd)/`dirname $(PARAM_FILE)`/..; pwd) export SDK_PATH?=$(PARAM_DIR)/.. export MPP_PATH?=$(PARAM_DIR) export DRV_ROOT?=$(SDK_PATH)/drv export OSAL_ROOT?=$(SDK_PATH)/osal export VENDOR_ROOT?=$(SDK_PATH)/vendor export INTERDRV_ROOT?=$(SDK_PATH)/interdrv export CBB_ROOT?=$(MPP_PATH)/cbb # Define the object output directory ifeq ($(MPP_BUILD), y) export EXTDRV:=$(VENDOR_ROOT) export SAMPLE_DIR=$(SDK_PATH)/mpp/sample/$(HIARCH) ifeq ($(HIARCH), hi3559av100) export GPU_DIR:=$(VENDOR_ROOT)/gpu export REL_DIR=$(SDK_PATH)/mpp/out/$(HIARCH)/$(OSTYPE)/$(CPU_TYPE) else export REL_DIR=$(SDK_PATH)/mpp/out/$(HIARCH)/$(ARM_ARCH)/$(CPU_TYPE)_$(OSTYPE) endif else #### MPP_BUILD=n ###### export EXTDRV:=$(VENDOR_ROOT) export SAMPLE_DIR=$(SDK_PATH)/mpp/sample export OHOS_ROOT_PATH?=$(SDK_PATH)/../../../../../.. ifeq ($(HIARCH), hi3559av100) export REL_DIR=$(SDK_PATH)/mpp/$(OSTYPE)/$(CPU_TYPE) else export REL_DIR=$(SDK_PATH)/mpp endif endif #------------------------------------------------------------------------------ ############################################################################### # Common CFLAGS, build flags for all MPP libs and drivers export MPP_CFLAGS:= -Wall -fsigned-char # Driver CFLAGS, build flags for linux kernel kbuild EXTRA_CFLAGS or liteos drivers export DRV_CFLAGS:= -Wall -fsigned-char # Libs CFLAGS, build flags for linux or liteos libs export LIBS_CFLAGS := -Wall -fsigned-char # Libs executable program CFLAGS, build flags for linux or liteos libs export LIBS_EXEC_CFLAGS # Libs LDFLAGS, link flags for linux or liteos libs export LIBS_LD_CFLAGS := -fno-common #------------------------------------------------------------------------------ MPP_CFLAGS += -D$(HI_RLS_MODE) ifeq ($(HIGDB), y) MPP_CFLAGS += -g endif ifeq ($(MPP_BUILD), y) DRV_CFLAGS += -Wunused-but-set-variable -Wfloat-equal -Wformat=2 MPP_CFLAGS += -Wunused-but-set-variable -Wtrampolines -pipe -fno-common LIBS_CFLAGS += -Wunused-but-set-variable -Wformat=2 LIBS_LD_CFLAGS += -Wl,-Bsymbolic -rdynamic ifeq ($(HIARCH), hi3559av100) DRV_CFLAGS += --warn-stack-usage=800 else DRV_CFLAGS += --warn-stack-usage=512 endif endif # Define the param of audio AUDIO_NEW_ARCH = hi3516ev200 hi3516cv500 ifeq ($(OSTYPE), liteos) ifeq ($(HIARCH), hi3516cv500) export AUDIO_PATH?=$(MPP_PATH)/cbb/audio/component/lib/$(HIARCH)/$(CONFIG_HI_CROSS)/$(OSTYPE)/$(ARM_ARCH) else export AUDIO_PATH?=$(MPP_PATH)/cbb/audio/component/lib/$(HIARCH)/$(CONFIG_HI_CROSS)/$(OSTYPE) endif else export AUDIO_PATH?=$(MPP_PATH)/cbb/audio/component/lib/$(HIARCH)/$(CONFIG_HI_CROSS)/$(OSTYPE) endif ifeq ($(CONFIG_HI_AUDIO_ONLY_DRIVER_SUPPORT), y) export AUDIO_LIBA ?= export AUDIO_LIBS ?= else ifeq ($(CONFIG_HI_AUDIO_STATIC_REGISTER_SUPPORT),y) ifeq ($(OSTYPE),linux) export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\ $(REL_LIB)/libupvqe.a\ $(REL_LIB)/libdnvqe.a\ $(REL_LIB)/libaaccomm.a\ $(REL_LIB)/libaacenc.a\ $(REL_LIB)/libaacdec.a\ $(REL_LIB)/libaacsbrenc.a\ $(REL_LIB)/libaacsbrdec.a export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so\ $(REL_LIB)/libupvqe.so\ $(REL_LIB)/libdnvqe.so\ $(REL_LIB)/libaaccomm.so\ $(REL_LIB)/libaacenc.so\ $(REL_LIB)/libaacdec.so else export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\ $(REL_LIB)/libupvqe.a\ $(REL_LIB)/libdnvqe.a\ $(REL_LIB)/libaaccomm.a\ $(REL_LIB)/libaacenc.a\ $(REL_LIB)/libaacdec.a\ $(REL_LIB)/libaacsbrenc.a\ $(REL_LIB)/libaacsbrdec.a export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so endif else ifeq ($(HIARCH),$(filter $(AUDIO_NEW_ARCH), $(HIARCH))) export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\ $(REL_LIB)/libupvqe.a\ $(REL_LIB)/libdnvqe.a export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so\ $(REL_LIB)/libupvqe.so\ $(REL_LIB)/libdnvqe.so\ $(REL_LIB)/libaaccomm.so\ $(REL_LIB)/libaacenc.so\ $(REL_LIB)/libaacdec.so else export AUDIO_LIBA ?= $(REL_LIB)/libVoiceEngine.a\ $(REL_LIB)/libupvqe.a\ $(REL_LIB)/libdnvqe.a\ $(REL_LIB)/libaacenc.a\ $(REL_LIB)/libaacdec.a export AUDIO_LIBS ?= $(REL_LIB)/libVoiceEngine.so\ $(REL_LIB)/libupvqe.so\ $(REL_LIB)/libdnvqe.so\ $(REL_LIB)/libaacenc.so\ $(REL_LIB)/libaacdec.so endif endif endif # LIB GLOBAL CFLAGS ifeq ($(HIARCH),$(filter $(HIARCH), hi3559av100es)) ifeq ($(CPU_TYPE),single) LIBS_CFLAGS += -mcpu=cortex-a53 LIBS_LD_CFLAGS += -mcpu=cortex-a53 else LIBS_CFLAGS += -mcpu=cortex-a73.cortex-a53 LIBS_LD_CFLAGS += -mcpu=cortex-a73.cortex-a53 endif else ifeq ($(HIARCH),$(filter $(HIARCH), hi3519av100)) LIBS_CFLAGS += -mcpu=cortex-a53 -mfloat-abi=softfp -mfpu=neon-vfpv4 LIBS_LD_CFLAGS += -mcpu=cortex-a53 -mfloat-abi=softfp -mfpu=neon-vfpv4 else ifeq ($(HIARCH),$(filter $(HIARCH), hi3516cv500 hi3516ev200)) ifeq ($(CONFIG_CUSTOMER_VERSION), COMMON) LIBS_CFLAGS += -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 LIBS_LD_CFLAGS += -mcpu=cortex-a7 -mfloat-abi=softfp endif endif # common CFLAGS LIBS_CFLAGS += -ldl -ffunction-sections -fdata-sections -O2 # secure CFLAGS LIBS_CFLAGS += -fstack-protector-strong -fPIC LIBS_EXEC_CFLAGS += -fPIE -pie -s LIBS_LD_CFLAGS += -Wl,-z,relro -Wl,-z,noexecstack -Wl,-z,now,-s LIBS_LD_CFLAGS += -fPIC ############################################################################### #********************* Macro for version management***************************** VER_X ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$1}') VER_Y ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$2}') VER_Z ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$3}') VER_P ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$4}') VER_B ?= $(shell echo $(CONFIG_VERSION_NUMBER) | awk -F . '{print $$5}') MPP_CFLAGS += -DVER_X=$(VER_X) -DVER_Y=$(VER_Y) -DVER_Z=$(VER_Z) -DVER_P=$(VER_P) -DVER_B=$(VER_B) #******************************************************************************* MPP_CFLAGS += -D$(CONFIG_USER_BIT) -D$(CONFIG_KERNEL_BIT) # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE is for mmap64 ifeq ($(CONFIG_KERNEL_BIT),KERNEL_BIT_64) LIBS_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE LIBS_LD_CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE endif COMMON_INCLUDE := -I$(OSAL_ROOT)/include ifeq ($(MPP_BUILD), y) COMMON_INCLUDE += -I$(MPP_PATH)/cbb/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/include/adapt COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/include/adapt COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/arch/$(HIARCH)/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/base/arch/$(HIARCH)/include/$(HI_SUBARCH) COMMON_INCLUDE += -I$(MPP_PATH)/cbb/sys/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vdec/include/h7 COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vo/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vo/vo_dev/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/audio/include/h7/inner ifeq ($(HIARCH), hi3516ev200) COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vgs/vgs_hi3516ev200/include COMMON_INCLUDE += -I$(MPP_PATH)/cbb/vgs/vgs_hi3516ev200/include/adapt endif ifeq ($(CONFIG_DRIVER_SPACE_TYPE),user_space) COMMON_INCLUDE +=-I $(SDK_PATH)/interdrv/common/hi_irq/include endif else COMMON_INCLUDE += -I$(REL_DIR)/include COMMON_INCLUDE += -I$(REL_DIR)/include/adapt COMMON_INCLUDE += -I$(OHOS_ROOT_PATH)/third_party/bounds_checking_function/include endif LIBS_CFLAGS += $(COMMON_INCLUDE) DRV_CFLAGS += $(COMMON_INCLUDE) MPP_CFLAGS += $(COMMON_INCLUDE) export JPEGE DCF=$(CONFIG_HI_JPEGE_DCF) ifeq ($(JPEGE DCF), y) MPP_CFLAGS += -DENABLE_JPEGEDCF endif ifeq ($(MPP_BUILD), n) export ISP_ROOT = $(MPP_PATH)/cbb/isp endif ifeq ($(COMPILER_PATH_DIR), ) export COMPILER_PATH_DIR=$(OHOS_ROOT_PATH)/prebuilts/clang/ohos/linux-x86_64/llvm/bin endif # include the config file of platform include $(MPP_PATH)/Makefile.$(OSTYPE).param # End!!