Cuda makefile
[charm.git] / src / libs / ck-libs / ParFUM-Tops / Makefile-CUDA
1 CDIR=../../../..
2 CHARMC=$(CDIR)/bin/charmc -cc $(CUDAC) -c++ $(CUDAC) $(OPTS)
3 CUDADIR = /usr/local/cuda
4 CUDASDK = $(HOME)/NVIDIA_CUDA_SDK
5 CUDAC = $(CUDADIR)/bin/nvcc 
6 CUDAINC = -I$(CUDASDK)/common/inc -I$(CUDADIR)/include
7 CCFLAGS = -DCUDA -DFP_TYPE_FLOAT -O3
8
9 #Headers to be copied to include directory so application users can see them
10 HEADERS= ParFUM_TOPS.h ParFUM_TOPS_CUDA.h ParFUM_TOPS_Types.h $(INTERNALHEADERS)
11
12 #Headers generated from .ci files
13 GENHEADERS= ParFUM_TOPS.def.h ParFUM_TOPS.decl.h 
14
15 HEADDEP= $(GENHEADERS) $(HEADERS) $(INTERNALHEADERS)
16
17 OBJS=ParFUM_TOPS.o ParFUM_TOPS_Iterators.o ParFUM_TOPS_CUDA.o
18
19 LIB=libmoduleParFUM_TOPS
20
21 LIBDIR=$(CDIR)/lib
22 DEST=$(LIBDIR)/$(LIB).a
23
24 INCS=-I. $(CUDAINC)
25
26 all: $(DEST)
27
28
29 ParFUM_TOPS.decl.h: ParFUM_TOPS.ci
30         $(CHARMC) ParFUM_TOPS.ci
31 ParFUM_TOPS.def.h: ParFUM_TOPS.ci
32         $(CHARMC) ParFUM_TOPS.ci
33
34 # Build libmoduleParFUM
35 $(DEST): $(OBJS) headers $(HEADDEP)
36         $(CHARMC) $(OBJS) -o $@
37         cp $(LIB).dep $(LIBDIR)/$(LIB).dep
38
39 # Copy header files to include directory
40 .PHONY: headers
41 headers: $(HEADDEP)
42         cp $(HEADERS) $(CDIR)/include/
43
44 #ParFUM_TOPS.o: ParFUM_TOPS.C $(HEADDEP) ParFUM_TOPS.h
45 #       $(CHARMC) -c ParFUM_TOPS.C $(INCS)
46 ParFUM_TOPS.o: ParFUM_TOPS.cc $(HEADDEP) ParFUM_TOPS.h
47         $(CHARMC) -c ParFUM_TOPS.cc $(INCS) $(CCFLAGS)
48
49 ParFUM_TOPS_Iterators.o: ParFUM_TOPS_Iterators.cc $(HEADDEP)
50         $(CHARMC) -c ParFUM_TOPS_Iterators.cc $(CCFLAGS) $(INCS)
51
52 ParFUM_TOPS_CUDA.o: ParFUM_TOPS_CUDA.cu $(HEADDEP)
53         $(CHARMC) -c ParFUM_TOPS_CUDA.cu $(CCFLAGS) $(INCS)
54
55
56 # clean up
57 clean:
58         rm -rf *.a *.def.h *.decl.h *.o *~ SunWS_cache $(DEST) headers docs doxygen_warn_logfile