############################################################# # # Makefile for NextChip APACHE6 Linux Drvier Test Application # ############################################################# ############################################################# # pre-set ############################################################# # adjust-set ############################################################# .PHONY: all clean .DEFAULT_GOAL := all WS_C_SRC := src/uds_server.c WS_C_OBJ := $(WS_C_SRC:.c=.o) CNN_NETWORKS := CUUVA FACE FIRE LPR ifneq (,$(filter CUUVA,$(CNN_NETWORKS))) USE_CNN_CUUVA_NETWORK := yes SHOW_CUUVA_DETECT := yes endif ifneq (,$(filter FACE,$(CNN_NETWORKS))) USE_CNN_FACE_NETWORK := yes SHOW_FACE_DETECT := yes endif ifneq (,$(filter FIRE,$(CNN_NETWORKS))) USE_CNN_FIRE_NETWORK := yes SHOW_FIRE_DETECT := yes endif ifneq (,$(filter LPR,$(CNN_NETWORKS))) USE_CNN_LPR_NETWORK := yes SHOW_LPR_DETECT := 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 UTILS_DIR = $(NC_APP_MODULES)/utils WAYLANDEGL_DIR = $(NC_APP_MODULES)/wayland_egl NC_OPENGL_DIR = $(NC_APP_MODULES)/opengl 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_CNN_NETWORKS_YOLOV8_DIR = $(NC_APP_MODULES)/cnn/networks/yolov8 LIBDRM_DIR = $(3RD_PARTY_DIR)/libdrm OPENGL_DIR = $(3RD_PARTY_DIR)/opengl SOIL_DIR = $(3RD_PARTY_DIR)/soil FREETYPE_DIR = $(3RD_PARTY_DIR)/freetype LIBPNG_DIR = $(3RD_PARTY_DIR)/libpng OPENCV_DIR = $(3RD_PARTY_DIR)/opencv2 ifeq ($(USE_BYTETRACK), yes) EIGEN_DIR = $(3RD_PARTY_DIR)/eigen BYTETRACK_CPP_DIR = $(3RD_PARTY_DIR)/ByteTrack-cpp endif LWS_PREFIX := $(3RD_PARTY_DIR)/libwebsockets/arm64 export PKG_CONFIG_PATH := $(LWS_PREFIX)/lib/pkgconfig INILIB_DIR = $(3RD_PARTY_DIR)/iniLib AIWARE_LIB_DIR = $(COMMON_DIR)/aiware ######################## makefile include ################### # include $(OPENGL_TPI_DIR)/Makefile ############################################################# 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$(3RD_PARTY_DIR)/jpeg-turbo 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_YOLOV8_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 INC_DIR += -I$(THIS_DIR)/include INC_DIR += -I$(LWS_PREFIX)/include ############################################################# 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 += -O0 CFLAGS_TEST += -g -std=c++11 #CFLAGS_TEST += -pg CFLAGS_TEST += -fno-inline -fno-omit-frame-pointer CFLAGS_TEST += $(INC_DIR) CFLAGS_TEST += -fopenmp CFLAGS_TEST += -Wall -Wextra -Wformat=2 -Wpedantic -Wconversion -Werror -fstack-protector-all CFLAGS_TEST += -DAIWARE_DEVICE_SUPPORTED ifeq ($(USE_8MP_VI), yes) CFLAGS_TEST += -DUSE_8MP_VI endif ifeq ($(USE_CNN_FACE_NETWORK), yes) CFLAGS_TEST += -DUSE_CNN_FACE_NETWORK CFLAGS_TEST += -DFACE_NETWORK=1 ifeq ($(SHOW_FACE_DETECT), yes) CFLAGS_TEST += -DSHOW_FACE_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_FIRE_NETWORK), yes) CFLAGS_TEST += -DUSE_CNN_FIRE_NETWORK CFLAGS_TEST += -DFIRE_NETWORK=2 ifeq ($(SHOW_FIRE_DETECT), yes) CFLAGS_TEST += -DSHOW_FIRE_DETECT endif endif ifeq ($(USE_CNN_LPR_NETWORK), yes) CFLAGS_TEST += -DUSE_CNN_LPR_NETWORK CFLAGS_TEST += -DLPR_NETWORK=3 ifeq ($(SHOW_LPR_DETECT), yes) CFLAGS_TEST += -DSHOW_LPR_DETECT 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_BYTETRACK), yes) # ByteTrack 빌드에서는 conversion/werror 제거 CFLAGS_TEST := $(filter-out -Wconversion -Werror,$(CFLAGS_TEST)) 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 LIBRARY += -L$(LWS_PREFIX)/lib -lwebsockets LIBRARY += -lm -lpthread \ $(3RD_PARTY_DIR)/jpeg-turbo/libturbojpeg.a \ -lrt ############################################################# # Test App CSRCS := wayland_cam_app.c CSRCS += $(NC_APP_MODULES)/v4l2/v4l2_interface.c CSRCS += $(WS_C_SRC) 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 ifneq (,$(filter yes,$(USE_CNN_FACE_NETWORK) $(USE_CNN_CUUVA_NETWORK) $(USE_CNN_FIRE_NETWORK) $(USE_CNN_LPR_NETWORK))) CSRCS += $(NC_CNN_NETWORKS_YOLOV8_DIR)/nc_cnn_yolov8_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 CSRCS += src/ctrl_flags.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_cam ############################################################# # CPPSRCS := $(NC_APP_MODULES)/wrapper/nc_opencv_wrapper.cpp ############################################################# # OBJS := $(CSRCS:.c=.o) $(CPPSRCS:.cpp=.o) ############################################################# CFLAGS_WS := $(filter-out -std=c++11,$(CFLAGS_TEST)) -std=gnu11 $(WS_C_OBJ): $(WS_C_SRC) ${CC} $(CFLAGS_WS) -c $< -o $@ all: $(WS_C_OBJ) ${CXX} $(CFLAGS_TEST) $(CPPSRCS) $(filter-out $(WS_C_SRC),$(CSRCS)) $(WS_C_OBJ) -o $(TARGET_TEST) $(LIBRARY) @echo "✅ Build complete: $(TARGET_TEST)" clean: rm -rf $(TARGET_TEST)