You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

372 lines
14 KiB

#############################################################
#
# Makefile for NextChip APACHE6 Linux Driver Test Application
#
#############################################################
#############################################################
# pre-set
#############################################################
# adjust-set
#############################################################
# set cnn network - PELEESEG / PELEEDET / YOLOV5 / YOLOV8 / UFLD / TRICHIMERAX / CUUVA
CNN_NETWORK_SETTING = CUUVA
ifeq ($(CNN_NETWORK_SETTING), CUUVA)
USE_CNN_CUUVA_NETWORK = yes
SHOW_CUUVA_DETECT = yes
endif
ifeq ($(CNN_NETWORK_SETTING), PELEEDET)
USE_CNN_PELEEDET_NETWORK = yes
SHOW_PELEE_DETECT = yes
endif
ifeq ($(CNN_NETWORK_SETTING), PELEESEG)
USE_CNN_PELEESEG_NETWORK = yes
SHOW_PELEE_SEG = yes
endif
ifeq ($(CNN_NETWORK_SETTING), YOLOV5)
USE_CNN_YOLOV5_NETWORK = yes
SHOW_YOLOV5_DETECT = yes
endif
ifeq ($(CNN_NETWORK_SETTING), YOLOV8)
USE_CNN_YOLOV8_NETWORK = yes
SHOW_YOLOV8_DETECT = yes
endif
ifeq ($(CNN_NETWORK_SETTING), UFLD)
USE_CNN_UFLD_NETWORK = no
SHOW_UFLD_LANE = no
USE_UFLD_TRACKING = no
# USE_UFLD_NETWORK_DEBUGGING = row
endif
ifeq ($(CNN_NETWORK_SETTING), TRICHIMERA)
USE_CNN_TRICHIMERA_NETWORK = yes
SHOW_TRI_CHIMERA = yes
USE_CNN_YOLOV8_NETWORK = yes
USE_CNN_PELEESEG_NETWORK = yes
USE_CNN_UFLD_NETWORK = yes
USE_UFLD_TRACKING = yes
endif
USE_8MP_VI = yes
# USE_BYTETRACK = yes
# USE_ADAS_LD = yes
ARCH ?= arm64
# ARCH ?= arm
ifeq ($(ARCH), arm64)
CROSS_COMPILE ?= aarch64-none-linux-gnu-
else ifeq ($(ARCH), arm)
CROSS_COMPILE ?= arm-linux-gnueabi-
endif
#############################################################
CC = ${CROSS_COMPILE}gcc
CXX = ${CROSS_COMPILE}g++
#############################################################
THIS_DIR = .
COMMON_DIR = $(PWD)/../common
NC_APP_MODULES = $(COMMON_DIR)/nc_app_modules
3RD_PARTY_DIR = $(COMMON_DIR)/third_party
LIBDRM_DIR = $(3RD_PARTY_DIR)/libdrm
OPENGL_DIR = $(3RD_PARTY_DIR)/opengl
SOIL_DIR = $(3RD_PARTY_DIR)/soil
INILIB_DIR = $(3RD_PARTY_DIR)/iniLib
AIWARE_LIB_DIR = $(COMMON_DIR)/aiware
NC_NEON_DIR = $(NC_APP_MODULES)/neon
NC_CNN_DIR = $(NC_APP_MODULES)/cnn
NC_CNN_CORE_DIR = $(NC_APP_MODULES)/cnn/core
NC_CNN_NETWORKS_DIR = $(NC_APP_MODULES)/cnn/networks
NC_OPENGL_DIR = $(NC_APP_MODULES)/opengl
WAYLANDEGL_DIR = $(NC_APP_MODULES)/wayland_egl
NC_CNN_NETWORKS_PELEE_DIR = $(NC_APP_MODULES)/cnn/networks/pelee
NC_CNN_NETWORKS_YOLOV5_DIR = $(NC_APP_MODULES)/cnn/networks/yolov5
NC_CNN_NETWORKS_YOLOV8_DIR = $(NC_APP_MODULES)/cnn/networks/yolov8
NC_CNN_NETWORKS_UFLD_DIR = $(NC_APP_MODULES)/cnn/networks/ufld
NC_CNN_NETWORKS_TRICHIMERA_DIR = $(NC_APP_MODULES)/cnn/networks/trichimera
ifeq ($(USE_BYTETRACK), yes)
EIGEN_DIR = $(3RD_PARTY_DIR)/eigen
BYTETRACK_CPP_DIR = $(3RD_PARTY_DIR)/ByteTrack-cpp
endif
FREETYPE_DIR = $(3RD_PARTY_DIR)/freetype
LIBPNG_DIR = $(3RD_PARTY_DIR)/libpng
OPENCV_DIR = $(3RD_PARTY_DIR)/opencv2
#############################################################
INC_DIR += -I./
INC_DIR += -I$(COMMON_DIR)
INC_DIR += -I$(3RD_PARTY_DIR)
INC_DIR += -I$(INILIB_DIR)
INC_DIR += -I$(LIBDRM_DIR)/include
INC_DIR += -I$(OPENGL_DIR)/
INC_DIR += -I$(OPENGL_DIR)/include
INC_DIR += -I$(OPENGL_DIR)/include/khronos/original
INC_DIR += -I$(OPENGL_DIR)/include/wayland
INC_DIR += -I$(NC_APP_MODULES)/
INC_DIR += -I$(NC_APP_MODULES)/v4l2
INC_DIR += -I$(NC_APP_MODULES)/utils
INC_DIR += -I$(NC_APP_MODULES)/wrapper
INC_DIR += -I$(NC_APP_MODULES)/vdma_cnn_drv
INC_DIR += -I$(NC_APP_MODULES)/buffer_ctrl
INC_DIR += -I$(NC_APP_MODULES)/gui
INC_DIR += -I$(NC_APP_MODULES)/config
INC_DIR += -I$(NC_CNN_DIR)
INC_DIR += -I$(NC_CNN_CORE_DIR)
INC_DIR += -I$(NC_CNN_NETWORKS_DIR)
INC_DIR += -I$(NC_CNN_NETWORKS_PELEE_DIR)
INC_DIR += -I$(NC_CNN_NETWORKS_YOLOV5_DIR)
INC_DIR += -I$(NC_CNN_NETWORKS_YOLOV8_DIR)
INC_DIR += -I$(NC_CNN_NETWORKS_UFLD_DIR)
INC_DIR += -I$(NC_CNN_NETWORKS_TRICHIMERA_DIR)
INC_DIR += -I$(SOIL_DIR)/include
INC_DIR += -I$(WAYLANDEGL_DIR)/
INC_DIR += -I$(NC_NEON_DIR)/
INC_DIR += -I$(NC_OPENGL_DIR)/
ifeq ($(USE_BYTETRACK), yes)
INC_DIR += -I$(EIGEN_DIR)/include/eigen3
INC_DIR += -I$(BYTETRACK_CPP_DIR)/include
endif
INC_DIR += -I$(FREETYPE_DIR)/include
ifeq ($(USE_8MP_VI), yes)
INC_DIR += -I$(NC_APP_MODULES)/dmabuf_ctrl
INC_DIR += -I$(NC_APP_MODULES)/dsr
endif
ifeq ($(USE_ADAS_LD), yes)
INC_DIR += -I$(NC_APP_MODULES)/adas/ADAS_LD_Lib
endif
#############################################################
ifeq ($(ARCH), arm64)
CFLAGS_TEST := -D_REENTRANT -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
CFLAGS_TEST += -mcpu=cortex-a53+crypto
CFLAGS_TEST += -DUSE_NEON
else ifeq ($(ARCH), arm)
CFLAGS_TEST := --static
CFLAGS_TEST += -mcpu=cortex-a53
CFLAGS_TEST += -mfpu=neon-fp-armv8
CFLAGS_TEST += -mfloat-abi=softfp
CFLAGS_TEST += -DUSE_NEON
endif
CFLAGS_TEST += -DBOL_ -rdynamic
CFLAGS_TEST += -O2
CFLAGS_TEST += -g -std=c++11
CFLAGS_TEST += -fno-inline -fno-omit-frame-pointer
CFLAGS_TEST += $(INC_DIR)
CFLAGS_TEST += -fopenmp
ifeq ($(USE_BYTETRACK), yes)
CFLAGS_TEST += -Wall -Wextra -Wformat=2 -Wpedantic -Wconversion -fstack-protector-all
# CFLAGS_TEST += -Werror
else
CFLAGS_TEST += -Wall -Wextra -Wformat=2 -Wpedantic -Wconversion -fstack-protector-all
# CFLAGS_TEST += -Werror
endif
CFLAGS_TEST += -DAIWARE_DEVICE_SUPPORTED
ifeq ($(USE_8MP_VI), yes)
CFLAGS_TEST += -DUSE_8MP_VI
endif
ifeq ($(USE_CNN_PELEEDET_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_PELEEDET_NETWORK
CFLAGS_TEST += -DDETECT_NETWORK=0
ifeq ($(SHOW_PELEE_DETECT), yes)
CFLAGS_TEST += -DSHOW_PELEE_DETECT
endif
endif
ifeq ($(USE_CNN_PELEESEG_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_PELEESEG_NETWORK
CFLAGS_TEST += -DSEGMENT_NETWORK=4
ifeq ($(SHOW_PELEE_SEG), yes)
CFLAGS_TEST += -DSHOW_PELEE_SEG
endif
endif
ifeq ($(USE_CNN_YOLOV5_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_YOLOV5_NETWORK
CFLAGS_TEST += -DDETECT_NETWORK=0
ifeq ($(SHOW_YOLOV5_DETECT), yes)
CFLAGS_TEST += -DSHOW_YOLOV5_DETECT
endif
endif
ifeq ($(USE_CNN_YOLOV8_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_YOLOV8_NETWORK
CFLAGS_TEST += -DDETECT_NETWORK=0
ifeq ($(SHOW_YOLOV8_DETECT), yes)
CFLAGS_TEST += -DSHOW_YOLOV8_DETECT
endif
endif
ifeq ($(USE_CNN_CUUVA_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_CUUVA_NETWORK
CFLAGS_TEST += -DDETECT_NETWORK=0
ifeq ($(SHOW_CUUVA_DETECT), yes)
CFLAGS_TEST += -DSHOW_CUUVA_DETECT
endif
endif
ifeq ($(USE_CNN_UFLD_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_UFLD_NETWORK
CFLAGS_TEST += -DLANE_NETWORK=8
ifeq ($(SHOW_UFLD_LANE), yes)
CFLAGS_TEST += -DSHOW_UFLD_LANE
endif
ifeq ($(USE_UFLD_TRACKING), yes)
CFLAGS_TEST += -DUSE_UFLD_TRACKING
endif
ifeq ($(USE_UFLD_NETWORK_DEBUGGING), row)
CFLAGS_TEST += -DUSE_UFLD_NETWORK_DEBUGGING
CFLAGS_TEST += -DDBG_ROW_ANCHOR
else ifeq ($(USE_UFLD_NETWORK_DEBUGGING), col)
CFLAGS_TEST += -DUSE_UFLD_NETWORK_DEBUGGING
CFLAGS_TEST += -DDBG_COL_ANCHOR
endif
endif
ifeq ($(USE_CNN_TRICHIMERA_NETWORK), yes)
CFLAGS_TEST += -DUSE_CNN_TRICHIMERA_NETWORK
ifeq ($(SHOW_TRI_CHIMERA), yes)
CFLAGS_TEST += -DSHOW_TRI_CHIMERA
endif
ifeq ($(USE_UFLD_TRACKING), yes)
CFLAGS_TEST += -DUSE_UFLD_TRACKING
endif
endif
CFLAGS_TEST += -DUID_TSB_GUI=0
ifeq ($(USE_BYTETRACK), yes)
CFLAGS_TEST += -DUSE_BYTETRACK
CFLAGS_TEST += -DUSE_REMOVED_TRACK_LIMITED
# CFLAGS_TEST += -DIGN_SPECIFIC_CLASS_TRACKING
endif
ifeq ($(USE_ADAS_LD), yes)
CFLAGS_TEST += -DUSE_ADAS_LD
endif
# add link library
LIBRARY += $(AIWARE_LIB_DIR)/lib_$(ARCH)/libaiware-runtime-selftestdata.a
LIBRARY += $(AIWARE_LIB_DIR)/lib_$(ARCH)/libaiware-runtime-device-lib-c.a
LIBRARY += $(AIWARE_LIB_DIR)/lib_$(ARCH)/libaiware-common-lib-c.so
LIBRARY += $(AIWARE_LIB_DIR)/lib_$(ARCH)/libaiware-runtime-common-lib-c.so
LIBRARY += $(AIWARE_LIB_DIR)/lib_$(ARCH)/libaiware-quant-reorder-lib-c.so
LIBRARY += $(LIBDRM_DIR)/lib/libdrm.so $(LIBDRM_DIR)/lib/libc.so.6 $(LIBDRM_DIR)/lib/ld-linux-aarch64.so.1
LIBRARY += $(LIBDRM_DIR)/lib/libdl.so.2 $(LIBDRM_DIR)/lib/libpthread.so.0 $(LIBDRM_DIR)/lib/librt.so.1
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libEGL.so $(OPENGL_DIR)/lib_$(ARCH)/libEGL.so.1 $(OPENGL_DIR)/lib_$(ARCH)/libEGL.so.1.4.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libffi.so $(OPENGL_DIR)/lib_$(ARCH)/libffi.so.8 $(OPENGL_DIR)/lib_$(ARCH)/libffi.so.8.1.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libgbm.so $(OPENGL_DIR)/lib_$(ARCH)/libgbm.so.1 $(OPENGL_DIR)/lib_$(ARCH)/libgbm.so.1.0.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libGLESv1_CM.so $(OPENGL_DIR)/lib_$(ARCH)/libGLESv1_CM.so.1 $(OPENGL_DIR)/lib_$(ARCH)/libGLESv1_CM.so.1.1.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libGLESv2.so $(OPENGL_DIR)/lib_$(ARCH)/libGLESv2.so.2 $(OPENGL_DIR)/lib_$(ARCH)/libGLESv2.so.2.1.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libmali.so $(OPENGL_DIR)/lib_$(ARCH)/libmali.so.0 $(OPENGL_DIR)/lib_$(ARCH)/libmali.so.0.44.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libOpenCL.so $(OPENGL_DIR)/lib_$(ARCH)/libOpenCL.so.2 $(OPENGL_DIR)/lib_$(ARCH)/libOpenCL.so.2.1.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libwayland-client.so $(OPENGL_DIR)/lib_$(ARCH)/libwayland-client.so.0 $(OPENGL_DIR)/lib_$(ARCH)/libwayland-client.so.0.20.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libwayland-egl.so $(OPENGL_DIR)/lib_$(ARCH)/libwayland-egl.so.1 $(OPENGL_DIR)/lib_$(ARCH)/libwayland-egl.so.1.0.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libwayland-server.so $(OPENGL_DIR)/lib_$(ARCH)/libwayland-server.so.0 $(OPENGL_DIR)/lib_$(ARCH)/libwayland-server.so.0.20.0
LIBRARY += $(OPENGL_DIR)/lib_$(ARCH)/libwayland-cursor.so $(OPENGL_DIR)/lib_$(ARCH)/libwayland-cursor.so.0 $(OPENGL_DIR)/lib_$(ARCH)/libwayland-cursor.so.0.0.0
LIBRARY += $(SOIL_DIR)/lib/libsoil.a
LIBRARY += $(FREETYPE_DIR)/lib/libfreetype.so $(LIBPNG_DIR)/libpng16.so $(OPENCV_DIR)/lib/libz.so
ifeq ($(USE_ADAS_LD), yes)
LIBRARY += $(NC_APP_MODULES)/adas/ADAS_LD_Lib/ADAS_LD_Lib.a
endif
LIBRARY += -lm -lpthread -lrt
#############################################################
# Test App
CSRCS := wayland_npu_app.c
CSRCS += $(NC_APP_MODULES)/v4l2/v4l2_interface.c
CSRCS += $(NC_APP_MODULES)/config/nc_cnn_config_parser.c
CSRCS += $(NC_APP_MODULES)/utils/nc_utils.c
CSRCS += $(INILIB_DIR)/ini.c
CSRCS += $(NC_APP_MODULES)/config/nc_app_config_parser.c
CSRCS += $(NC_CNN_CORE_DIR)/nc_cnn_aiware_runtime.c
CSRCS += $(NC_CNN_CORE_DIR)/nc_cnn_communicator.c
CSRCS += $(NC_CNN_CORE_DIR)/nc_cnn_worker_for_postprocess.c
CSRCS += $(NC_CNN_CORE_DIR)/nc_cnn_anchor.c
ifeq ($(USE_CNN_PELEESEG_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_DIR)/nc_cnn_segmentation_postprocess.c
endif
ifeq ($(USE_CNN_PELEEDET_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_PELEE_DIR)/nc_cnn_pelee_postprocess.c
endif
ifeq ($(USE_CNN_YOLOV5_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_YOLOV5_DIR)/nc_cnn_yolov5_postprocess.c
endif
ifeq ($(USE_CNN_YOLOV8_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_YOLOV8_DIR)/nc_cnn_yolov8_postprocess.c
endif
ifeq ($(USE_CNN_CUUVA_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_YOLOV8_DIR)/nc_cnn_yolov8_postprocess.c
endif
ifeq ($(USE_CNN_UFLD_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_UFLD_DIR)/nc_cnn_ufld_postprocess.c
endif
ifeq ($(USE_CNN_TRICHIMERA_NETWORK), yes)
CSRCS += $(NC_CNN_NETWORKS_TRICHIMERA_DIR)/nc_cnn_trichimera_postprocess.c
endif
CSRCS += $(NC_APP_MODULES)/buffer_ctrl/nc_ts_fsync_flipflop_buffers.c
CSRCS += $(NC_APP_MODULES)/buffer_ctrl/nc_ts_fsync_circular_buffers.c
CSRCS += $(WAYLANDEGL_DIR)/wayland_egl.c
CSRCS += $(NC_OPENGL_DIR)/nc_opengl_interface.c
CSRCS += $(NC_OPENGL_DIR)/nc_opengl_ttf_font.c
CSRCS += $(NC_OPENGL_DIR)/nc_opengl_init.c
CSRCS += $(NC_OPENGL_DIR)/nc_opengl_shader.c
CSRCS += $(NC_NEON_DIR)/nc_neon.c
ifeq ($(USE_BYTETRACK), yes)
CSRCS += $(NC_CNN_CORE_DIR)/nc_cnn_tracker.c
CPPSRCS += $(NC_APP_MODULES)/wrapper/nc_bytetrack_wrapper.cpp
CPPSRCS += $(BYTETRACK_CPP_DIR)/src/BYTETracker.cpp
CPPSRCS += $(BYTETRACK_CPP_DIR)/src/KalmanFilter.cpp
CPPSRCS += $(BYTETRACK_CPP_DIR)/src/Object.cpp
CPPSRCS += $(BYTETRACK_CPP_DIR)/src/Rect.cpp
CPPSRCS += $(BYTETRACK_CPP_DIR)/src/STrack.cpp
CPPSRCS += $(BYTETRACK_CPP_DIR)/src/lapjv.cpp
endif
ifeq ($(USE_8MP_VI), yes)
CSRCS += $(NC_APP_MODULES)/dmabuf_ctrl/nc_dmabuf_ctrl_helper.c
CSRCS += $(NC_APP_MODULES)/dsr/nc_dsr_api.c
CSRCS += $(NC_APP_MODULES)/dsr/nc_dsr_set.c
CSRCS += $(NC_APP_MODULES)/dsr/nc_dsr_helper.c
endif
TARGET_TEST := app_wayland_npu
all:
${CXX} $(CFLAGS_TEST) $(CPPSRCS) $(CSRCS) -o $(TARGET_TEST) $(LIBRARY)
clean:
rm -rf $(TARGET_TEST)