-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
87 lines (74 loc) · 2.77 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
.SUFFIXES:
vpath %.cpp src
vpath %.cu src
vpath %.c src
vpath %.hpp include
vpath %.h include
vpath %.o obj
vpath %.oc obj
EXEC = ./fluor
EXEC_CUDA = ./fluor_CUDA
INCLUDES = -Iinclude -I/usr/include/gromacs
#CFLAGS = -g3 -Wall
#CFLAGS = -g -pg
CFLAGS = -O2
OBJ_DIR = obj
OBJS = fluorescence.o correlatorSimple.o photonHistogram.o main.o log.o diffusion.o diff_rods.o crossCorrelator.o #CUDA_random.o
OBJS_CUDA = fluorescence_c.o correlatorSimple_c.o photonHistogram_c.o main_c.o log_c.o diffusion_c.o diff_rods_c.o crossCorrelator_c.o CUDA_random_c.o
SRC_DIR = src
#CUDA_FLAGS = -L /home/marek/NVIDIA_GPU_Computing_SDK/C/lib -l cutil_x86_64
#CUDA_FLAGS = -L ~/NVIDIA_GPU_Computing_SDK/C/lib -l cutil_i386
CUDA_FLAGS =
#-L/usr/local/lib/gromacs -lgmx
#LIBS = -lmd -lm -lnsl -lfftw3
LIBS = -lm
#LIBS = -lm -pg # PG - for profiler
CC = g++
NVCC = nvcc
#Linkowanie, np.: gcc main.o -o build/hello -lstdc++
$(EXEC) : $(OBJS)
@echo -e "---- Linking objects ----"
cd $(OBJ_DIR); $(CC) $(OBJS) $(LIBS) $(CUDA_FLAGS) -o ../$(EXEC)
@echo -e "\nCompilation finished successfully. You can now execute $(EXEC).\n"
#Zestaw zaleznosci + wzor kompilacji poszczegolnych czesci
fluorescence.o : fluorescence.h
diffusion.o : fluorescence.h
correlatorSimple.o : correlator.h
photonHistogram.o : photonHistogram.h
main.o: correlator.h photonHistogram.h fluorescence.h
%.o : %.cpp
$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $(OBJ_DIR)/$@
%.o : %.cu
$(CC) $(INCLUDES) -c $< -o $(OBJ_DIR)/$@
#czyli: gcc -Iinclude -Wall -c src/plik.cpp -o obj/plik.o
##### TO SAMO W WERSJI DLA CUDY #####
$(EXEC_CUDA) : $(OBJS_CUDA)
@echo -e "---- Linking objects ----"
cd $(OBJ_DIR); $(NVCC) $(OBJS_CUDA) $(LIBS) $(CUDA_FLAGS) -o ../$(EXEC_CUDA) -DENABLE_GPU
@echo -e "\nCompilation finished successfully. You can now execute $(EXEC_CUDA).\n"
#Zestaw zaleznosci + wzor kompilacji poszczegolnych czesci
fluorescence_c.o : fluorescence.h
diffusion_c.o : fluorescence.h
correlatorSimple_c.o : correlator.h
photonHistogram_c.o : photonHistogram.h
main_c.o: correlator.h photonHistogram.h fluorescence.h
%_c.o : %.cpp
$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $(OBJ_DIR)/$@ -DENABLE_GPU
%_c.o : %.cu
$(NVCC) $(INCLUDES) -c $< -o $(OBJ_DIR)/$@ -DENABLE_GPU
#czyli: gcc -Iinclude -Wall -c src/plik.cpp -o obj/plik.o , #define ENABLE_GPU
#Delete all object + executable (in order to compile once more from scratch)
.PHONY : clean rebuild all
clean :
@-rm obj/*.o
@-rm $(EXEC)
@-rm $(EXEC_CUDA)
@echo "*All Clean*"
rebuild : clean
rebuild : $(EXEC)
# need to write "make all" to build CUDA version too
all : $(EXEC) $(EXEC_CUDA)
cuda : $(EXEC_CUDA)
# ; - oznacza, ze nastepna komenda ma byc w tym samym shellu, \ - ze to wszystko to jest jedna linia
# @ sprawia, ze nie wypluwa na ekran "echo Compiling..." tylko samo "Compiling..."
# $@ - target; $< - dependency