-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
130 lines (82 loc) · 3.95 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#change this for your opencl header path
CL_H = /home/ribli/tools/AMDAPPSDK-3.0/include/
#/usr/local/cuda-7.5/targets/x86_64-linux/include/
#change this for your opencl library path
CL_L = /home/ribli/tools/AMDAPPSDK-3.0/lib/x86_64/
# Compilers
CXX = g++
LINK = $(CXX)
# Flags
CXXFLAGS = -O3 -std=c++11 -I$(IDIR) -I$(CL_H) -W -Wall -fPIC
ifeq ($(shell uname), Darwin) # Apple
SHARED_LIB_FLAG= -dynamiclib
else # Linux
SHARED_LIB_FLAG= -shared
endif
#Opencl library place (Apple)
ifeq ($(shell uname), Darwin) # Apple
LIBOPENCL=-framework OpenCL
else # Linux
LIBOPENCL= -lOpenCL -L $(CL_L)
endif
# Paths
BIN = bin
PYWRAP = python_wrapper
ODIR = bin/obj
SRC = src
IDIR = include
# all target
all: $(BIN)/generate_spec $(BIN)/generate_spec_cpu $(BIN)/test_spectrum_generators $(BIN)/fit_spectrum $(BIN)/fit_spectrum_cpu $(PYWRAP)/sps_fast_utils.so $(PYWRAP)/sps_fast_utils_cpu.so
# cpu only target
cpu_only: $(BIN)/generate_spec_cpu $(BIN)/fit_spectrum_cpu $(PYWRAP)/sps_fast_utils_cpu.so
#Build rules
#Building spectrum generator
$(BIN)/generate_spec : $(ODIR)/generate_spec.o $(ODIR)/spectrum_generator.o $(ODIR)/sps_data.o $(ODIR)/sps_write.o $(ODIR)/sps_options.o
$(LINK) -o $@ $^ $(LIBOPENCL)
$(ODIR)/generate_spec.o : $(SRC)/generate_spec.cpp$
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(ODIR)/sps_options.o : $(SRC)/sps_options.cpp $(IDIR)/sps_options.h
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(ODIR)/sps_data.o : $(SRC)/sps_data.cpp $(IDIR)/sps_data.h
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(ODIR)/spectrum_generator.o : $(SRC)/spectrum_generator.cpp $(IDIR)/spectrum_generator.h
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(ODIR)/sps_write.o : $(SRC)/sps_write.cpp $(IDIR)/sps_write.h
$(CXX) -c -o $@ $< $(CXXFLAGS)
#Building spectrum generator cpu only version
$(BIN)/generate_spec_cpu : $(ODIR)/generate_spec_cpu.o $(ODIR)/spectrum_generator_cpu.o $(ODIR)/sps_data.o $(ODIR)/sps_write.o $(ODIR)/sps_options.o
$(LINK) -o $@ $^
$(ODIR)/generate_spec_cpu.o : $(SRC)/generate_spec_cpu.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(ODIR)/spectrum_generator_cpu.o : $(SRC)/spectrum_generator_cpu.cpp $(IDIR)/spectrum_generator_cpu.h
$(CXX) -c -o $@ $< $(CXXFLAGS)
#Building test
$(BIN)/test_spectrum_generators : $(ODIR)/test_spectrum_generators.o $(ODIR)/spectrum_generator_cpu.o $(ODIR)/spectrum_generator.o $(ODIR)/sps_data.o $(ODIR)/sps_options.o $(ODIR)/sps_write.o
$(LINK) -o $@ $^ $(LIBOPENCL)
$(ODIR)/test_spectrum_generators.o : $(SRC)/test_spectrum_generators.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
#Building fitter
$(BIN)/fit_spectrum : $(ODIR)/fit_spectrum.o $(ODIR)/spectrum_generator.o $(ODIR)/mcmc.o $(ODIR)/sps_data.o $(ODIR)/sps_write.o $(ODIR)/sps_options.o
$(LINK) -o $@ $^ $(LIBOPENCL)
$(ODIR)/fit_spectrum.o : $(SRC)/fit_spectrum.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(ODIR)/mcmc.o : $(SRC)/mcmc.cpp $(IDIR)/mcmc.h
$(CXX) -c -o $@ $< $(CXXFLAGS)
#Building cpu only fitter
$(BIN)/fit_spectrum_cpu: $(ODIR)/fit_spectrum_cpu.o $(ODIR)/spectrum_generator_cpu.o $(ODIR)/mcmc.o $(ODIR)/sps_data.o $(ODIR)/sps_write.o $(ODIR)/sps_options.o
$(LINK) -o $@ $^
$(ODIR)/fit_spectrum_cpu.o : $(SRC)/fit_spectrum_cpu.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
#Builing the python wrapper
$(PYWRAP)/sps_fast_utils.so: $(PYWRAP)/sps_fast_utils.o $(ODIR)/spectrum_generator.o $(ODIR)/sps_data.o $(ODIR)/sps_write.o $(ODIR)/sps_options.o
$(LINK) -o $@ $^ $(LIBOPENCL) $(SHARED_LIB_FLAG)
$(PYWRAP)/sps_fast_utils.o : $(PYWRAP)/utils.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
#Builing the cpu only python wrapper
$(PYWRAP)/sps_fast_utils_cpu.so: $(PYWRAP)/sps_fast_utils_cpu.o $(ODIR)/spectrum_generator_cpu.o $(ODIR)/sps_data.o $(ODIR)/sps_write.o $(ODIR)/sps_options.o
$(LINK) -o $@ $^ $(SHARED_LIB_FLAG)
$(PYWRAP)/sps_fast_utils_cpu.o : $(PYWRAP)/utils_cpu.cpp
$(CXX) -c -o $@ $< $(CXXFLAGS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o $(PYWRAP)/*.o $(PYWRAP)/*.so $(BIN)/generate_spec $(BIN)/generate_spec_cpu $(BIN)/test_spectrum_generators $(BIN)/fit_spectrum $(BIN)/fit_spectrum_cpu