ROOTINCLUDES = $(shell root-config --incdir) ROOTCFLAGS = $(shell root-config --cflags) ROOTLIBS = $(shell root-config --libs) -lRooFit -lRooFitCore -lMinuit -lHistPainter CXXFLAGS = -I. -Wall -fPIC -O3 -g -std=c++11 -fopenmp CUDA_LIBS := -L$(CUDAPATH)/lib64 -I$(CUDAPATH)/include -lcudart LIBBASE = Oscillator VER = 1.00 TAG = LIBALIAS = $(LIBBASE)$(TAG) LIBNAME = $(LIBALIAS)_$(VER) libOscClass = lib$(LIBNAME).a ifdef CUDAPATH CXXFLAGS+=-DUSE_GPU CUDAVER=$(shell nvcc --version | grep -o 'V[0-9].*' | cut -d. -f1 |sed 's:V::') ifeq ($(shell expr $(CUDAVER) \< 9), 1) ARCH= -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_32,code=sm_32 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_35,code=compute_35 ifeq ($(shell expr $(CUDAVER) \>= 11), 1) ARCH= -gencode arch=compute_52,code=sm_52 \ -gencode arch=compute_60,code=sm_60 \ -gencode arch=compute_61,code=sm_61 \ -gencode arch=compute_70,code=sm_70 \ -gencode arch=compute_75,code=sm_75 \ -gencode arch=compute_80,code=sm_80 \ -gencode arch=compute_86,code=sm_86 \ -gencode arch=compute_86,code=compute_86 else ARCH= -gencode arch=compute_30,code=sm_30 \ -gencode arch=compute_32,code=sm_32 \ -gencode arch=compute_35,code=sm_35 \ -gencode arch=compute_35,code=compute_35 endif endif endif OBJS = OscClass_CUDAProb3.o $(libOscClass) : $(OBJS) $(RM) $@ ar clq $@ $(OBJS) ranlib $@ ifdef CUDAPATH OscClass_CUDAProb3.o : OscClass_CUDAProb3.cpp $(RM) $@ nvcc -g -O3 -x cu $(ARCH) -lineinfo -std=c++11 -Xcompiler="-fopenmp -Wall -I${ROOTINCLUDES} $(ROOTLIBS) $(CXXFLAGS)" -I.. -c $< -o $@ else OscClass_CUDAProb3.o : OscClass_CUDAProb3.cpp g++ $(CXXFLAGS) -I${ROOTINCLUDES} $(ROOTLIBS) -I.. -c $< -o $@ endif OscClass: $(OBJS) $(libOscClass) $(RM) $@ $(CXX) -o $@ $(CXXFLAGS) -I${INC} -L. $^ ${ROOTLIBS} ${CUDA_LIBS} clean: $(RM) $(targets) *.o *.a *.so shared: $(OBJS) $(CXX) -shared -o lib$(LIBNAME).so $^ $(ROOTLIBS) mv lib$(LIBNAME).so ../lib/. emptyrule::$(libOscClass)