diff --git a/Makefile b/Makefile index a2a90f7b..cd3bccb2 100644 --- a/Makefile +++ b/Makefile @@ -3,12 +3,14 @@ CUDNN=0 OPENCV=0 DEBUG=0 OPENMP=0 +LIBSO=0 ARCH= -gencode arch=compute_20,code=[sm_20,sm_21] \ -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_50,code=[sm_50,compute_50] \ - -gencode arch=compute_52,code=[sm_52,compute_52] + -gencode arch=compute_52,code=[sm_52,compute_52] \ + -gencode arch=compute_61,code=[sm_61,compute_61] # This is what I use, uncomment if you know your arch and want to specify # ARCH= -gencode arch=compute_52,code=compute_52 @@ -17,12 +19,18 @@ VPATH=./src/ EXEC=darknet OBJDIR=./obj/ +ifeq ($(LIBSO), 1) +LIBNAMESO=darknet.so +APPNAMESO=uselib +endif + CC=gcc +CPP=g++ NVCC=nvcc OPTS=-Ofast LDFLAGS= -lm -pthread COMMON= -CFLAGS=-Wall -Wfatal-errors +CFLAGS=-Wall -Wfatal-errors ifeq ($(DEBUG), 1) OPTS=-O0 -g @@ -63,7 +71,17 @@ endif OBJS = $(addprefix $(OBJDIR), $(OBJ)) DEPS = $(wildcard src/*.h) Makefile -all: obj backup results $(EXEC) +all: obj backup results $(EXEC) $(LIBNAMESO) $(APPNAMESO) + +ifeq ($(LIBSO), 1) +CFLAGS+= -fPIC + +$(LIBNAMESO): $(OBJS) + $(CPP) -shared -std=c++11 -fvisibility=hidden -DYOLODLL_EXPORTS $(COMMON) $(CFLAGS) $^ -o $@ src/yolo_v2_class.cpp $(LDFLAGS) + +$(APPNAMESO): $(OBJS) + $(CPP) -std=c++11 $(COMMON) $(CFLAGS) -o $@ src/yolo_console_dll.cpp $(LDFLAGS) -L ./ -l:$(LIBNAMESO) +endif $(EXEC): $(OBJS) $(CC) $(COMMON) $(CFLAGS) $^ -o $@ $(LDFLAGS) @@ -84,5 +102,5 @@ results: .PHONY: clean clean: - rm -rf $(OBJS) $(EXEC) + rm -rf $(OBJS) $(EXEC) $(LIBNAMESO) $(APPNAMESO) diff --git a/src/yolo_v2_class.hpp b/src/yolo_v2_class.hpp index 8330dfc9..9a8baa62 100644 --- a/src/yolo_v2_class.hpp +++ b/src/yolo_v2_class.hpp @@ -11,9 +11,17 @@ #endif // OPENCV #ifdef YOLODLL_EXPORTS +#if defined(_MSC_VER) #define YOLODLL_API __declspec(dllexport) #else +#define YOLODLL_API __attribute__((visibility("default"))) +#endif +#else +#if defined(_MSC_VER) #define YOLODLL_API __declspec(dllimport) +#else +#define YOLODLL_API +#endif #endif struct bbox_t {