Makefile revamped. See comments:

- Added CUSTOMFLAGS to define flags from Make CLI.
- Separated and re-arranged C object targets.
- Added targets for test binaries.
This commit is contained in:
Pedro Martinez Mediano 2017-05-24 16:57:42 +10:00
parent e6818493ca
commit 169c35e990
1 changed files with 33 additions and 6 deletions

View File

@ -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