From 169c35e990942a2e161ad7cefcd4002905231b32 Mon Sep 17 00:00:00 2001 From: Pedro Martinez Mediano Date: Wed, 24 May 2017 16:57:42 +1000 Subject: [PATCH] Makefile revamped. See comments: - Added CUSTOMFLAGS to define flags from Make CLI. - Separated and re-arranged C object targets. - Added targets for test binaries. --- .../measures/continuous/kraskov/cuda/Makefile | 39 ++++++++++++++++--- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/java/source/infodynamics/measures/continuous/kraskov/cuda/Makefile b/java/source/infodynamics/measures/continuous/kraskov/cuda/Makefile index 0161729..abeca80 100644 --- a/java/source/infodynamics/measures/continuous/kraskov/cuda/Makefile +++ b/java/source/infodynamics/measures/continuous/kraskov/cuda/Makefile @@ -18,25 +18,52 @@ ifdef DEBUG NVCCFLAGS += -g -G endif +ifdef CUSTOMFLAGS + CCFLAGS += ${CUSTOMFLAGS} + NVCCFLAGS += ${CUSTOMFLAGS} +endif + + # Common includes and paths for CUDA. This assumes the CUDA toolkit is in PATH INCLUDES := -I. -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux LDFLAGS += -L. -lcuda -lcudart -# Target rules +# Main target rule all: libKraskov.so +## Compile device code +#--------------------- gpuKnnLibrary.o: gpuKnnLibrary.cu helperfunctions.cu gpuKnnBF_kernel.cu ${NVCC} ${NVCCFLAGS} ${INCLUDES} -Xcompiler -fPIC -c gpuKnnLibrary.cu libgpuKnnLibrary.a: gpuKnnLibrary.o ${AR} -r libgpuKnnLibrary.a gpuKnnLibrary.o -libKraskov.so: libgpuKnnLibrary.a kraskovCuda.c - ${NVCC} ${NVCCFLAGS} ${INCLUDES} -Xcompiler -fPIC -shared -o libKraskov.so digamma.c gpuMILibrary.c kraskovCuda.c ${LDFLAGS} -lgpuKnnLibrary -test: libKraskov.so - ${GCC} -std=c++11 -o unittest unittests.cpp -L. -lKraskov +## Compile host code +#------------------- +c_objects = digamma.o gpuMILibrary.o kraskovCuda.o + +%.o: %.c + ${GCC} ${INCLUDES} ${CCFLAGS} -x c -std=c99 -fPIC -c $< -o $@ + + +## Final shared library linking +#------------------------------ +libKraskov.so: libgpuKnnLibrary.a $(c_objects) + ${NVCC} ${NVCCFLAGS} ${INCLUDES} -Xcompiler -fPIC -shared -o libKraskov.so $(c_objects) ${LDFLAGS} -lgpuKnnLibrary + + +## Test binary targets +#------------------------------ +test: unittest perftest + +unittest: libKraskov.so unittest.cpp + ${GCC} ${CCFLAGS} -std=c++11 unittests.cpp -L. -lKraskov -o $@ + +perftest: libKraskov.so perftest.cpp + ${GCC} ${CCFLAGS} -DTIMER -std=c++11 perftest.cpp -L. -lKraskov -o $@ clean: - rm -f *.o *.so *.a unittest + rm -f *.o *.so *.a unittest perftest