################################################################################ # Copyright (c) 2017-2021, NVIDIA CORPORATION. All rights reserved. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. ################################################################################# #enable this flag to use optimized dsexample plugin #it can also be exported from command line WITH_OPENCV?=1 USE_OPTIMIZED_DSEXAMPLE?=0 CUDA_VER?=11.2 ifeq ($(CUDA_VER),) $(error "CUDA_VER is not set") endif TARGET_DEVICE = $(shell gcc -dumpmachine | cut -f1 -d -) CXX:= g++ NVCC:=/usr/local/cuda-$(CUDA_VER)/bin/nvcc ifeq ($(USE_OPTIMIZED_DSEXAMPLE),1) SRCS:= gstdsexample_optimized.cpp else SRCS:= gstdsexample.cpp SRCS+= ./src/CharacterDetection.cpp SRCS+= ./src/CropLicensePlate.cpp SRCS+= ./src/GetPlateColor.cpp SRCS+= ./src/LicensePlateRecognition.cpp SRCS+= ./src/LPRprocessor.cpp SRCS+= ./src/config.cpp SRCS+= ./src/CropLP.cpp SRCS+= ./src/YOLOv5/preprocess.cu SRCS+= ./src/YOLOv5/yololayer.cu SRCS+= ./src/YOLOv5/DetectorCOCO.cpp endif INCS:= $(wildcard *.h) INCS+= $(wildcard ./include/*.h) INCS+= $(wildcard ./include/*.hpp) INCS+= $(wildcard ./include/YOLOv5/*.h) INCS+= $(wildcard ./include/YOLOv5/*.hpp) LIB:=libnvdsgst_dsexample.so NVDS_VERSION:=6.0 DEP:=dsexample_lib/libdsexample.a DEP_FILES:=$(wildcard dsexample_lib/dsexample_lib.* ) DEP_FILES-=$(DEP) CFLAGS+= -fPIC -DDS_VERSION=\"6.0\" \ -I /usr/local/cuda-$(CUDA_VER)/include \ -I ../../includes \ -I ./lib_ncnn/ncnn \ -I ./include \ -I ./include/YOLOv5 CFLAGS_NVCC:=$(shell pkg-config --cflags --libs opencv4 ) CFLAGS_NVCC+=-I ./include -I ./include/YOLOv5 GST_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/gst-plugins/ LIB_INSTALL_DIR?=/opt/nvidia/deepstream/deepstream-$(NVDS_VERSION)/lib/ LIBS := -shared -Wl,-no-undefined \ -L dsexample_lib -ldsexample \ -L/usr/local/cuda-$(CUDA_VER)/lib64/ -lcudart -ldl \ -lnppc -lnppig -lnpps -lnppicc -lnppidei \ -L$(LIB_INSTALL_DIR) -lnvdsgst_helper -lnvdsgst_meta -lnvds_meta -lnvbufsurface -lnvbufsurftransform \ -Wl,-rpath,$(LIB_INSTALL_DIR) \ -L lib_ncnn -lncnn -fopenmp\ -lnvinfer -lpthread \ # -lnvinfer_plugin -lnvparsers \ OBJS:= $(SRCS:.cpp=.o) OBJS:= $(OBJS:.cu=.o) PKGS:= gstreamer-1.0 gstreamer-base-1.0 gstreamer-video-1.0 ifeq ($(WITH_OPENCV),1) CFLAGS+= -DWITH_OPENCV ifeq ($(TARGET_DEVICE),aarch64) PKGS+= opencv4 else PKGS+= opencv endif endif CFLAGS+=$(shell pkg-config --cflags $(PKGS)) LIBS+=$(shell pkg-config --libs $(PKGS)) all: $(LIB) %.o: %.cpp $(INCS) Makefile @echo $(CFLAGS) $(CXX) -c -o $@ $(CFLAGS) $< %.o: %.cu $(INCS) Makefile $(NVCC) -c -o $@ $(CFLAGS_NVCC) --compiler-options '-fPIC' $< $(LIB): $(OBJS) $(DEP) Makefile @echo $(CFLAGS) $(CXX) -o $@ $(OBJS) $(LIBS) $(DEP): $(DEP_FILES) $(MAKE) -C dsexample_lib/ install: $(LIB) cp -rv $(LIB) $(GST_INSTALL_DIR) clean: rm -rf $(OBJS) $(LIB)