-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
71 lines (56 loc) · 2.08 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
### Flags and directories
UNSUPPORTED_FLAG=-Ilib/eigen-3.4.0/unsupported
EIGEN_FLAG=-Ilib/eigen-3.4.0
BOOST_FLAG=-Ilib/boost_1_77_0
MP_LIBS=-lmpfr -lgmp
PRECISION=113 # default value of 113 is number of significand bits in quadruple-precision
BUILDDIR=build
CC=g++
CPPFLAGS=-std=c++17 -Wall -msse2 -O2 -fopenmp
CPPFLAGS+=$(UNSUPPORTED_FLAG) $(EIGEN_FLAG) $(BOOST_FLAG)
MP_FLAGS=-DPRECISION=$(PRECISION)
PRODUCT=raman_elastic_scattering
UTILS_PRODUCT=store_GL_quadrature
DEF_OBJS=$(BUILDDIR)/misc.o $(BUILDDIR)/raman_elastic_scattering.o
DEF_OBJS+=$(BUILDDIR)/defs_single.o $(BUILDDIR)/defs_double.o $(BUILDDIR)/defs_quad.o
MP_OBJS=$(BUILDDIR)/defs_custom.o
### Recipes
.PHONY=regular clean info
all : mp utils
regular : $(BUILDDIR) $(DEF_OBJS) $(BUILDDIR)/main.o
$(CC) -o $(PRODUCT) $(DEF_OBJS) $(BUILDDIR)/main.o $(CPPFLAGS)
mp : $(BUILDDIR) $(DEF_OBJS) $(MP_OBJS) $(BUILDDIR)/main_mp.o
$(CC) -o $(PRODUCT) $(DEF_OBJS) $(MP_OBJS) $(BUILDDIR)/main_mp.o $(CPPFLAGS) $(MP_LIBS)
utils: $(BUILDDIR) $(DEF_OBJS) $(BUILDDIR)/utils.o
$(CC) -o $(UTILS_PRODUCT) $(DEF_OBJS) $(BUILDDIR)/utils.o $(CPPFLAGS)
clean :
@rm -f $(DEF_OBJS)
@rm -f $(MP_OBJS)
@rm -f $(BUILDDIR)/main.o
@rm -f $(BUILDDIR)/main_mp.o
@rm -f $(BUILDDIR)/utils.o
@rm -f $(UTILS_PRODUCT)
@rm -f $(PRODUCT)
clean-mp :
@rm -f $(MP_OBJS)
@rm -f $(BUILDDIR)/main_mp.o
info :
@echo "UNSUPPORTED EIGEN FLAG:" $(UNSUPPORTED_FLAG)
@echo "EIGEN FLAG:" $(EIGEN_FLAG)
@echo "BOOST FLAG:" $(BOOST_FLAG)
@echo "COMPILER:" $(CC)
@echo "COMPILER REGULAR FLAGS:" $(CPPFLAGS)
@echo "COMPILER MP FLAGS:" $(CPPFLAGS) $(MP_FLAGS)
@echo "LIBRARIES:" $(MP_LIBS)
@echo "PRODUCTS:" $(PRODUCT) $(UTILS_PRODUCT)
@echo "REGULAR OBJS:" $(DEF_OBJS)
@echo "MP OBJS:" $(DEF_OBJS) $(MP_OBJS)
### Prerequisites
$(BUILDDIR) :
@mkdir $@
$(BUILDDIR)/defs_custom.o : src/defs_custom.cpp
$(CC) -c -o $@ $< $(CPPFLAGS) $(MP_FLAGS) $(MP_LIBS)
$(BUILDDIR)/main_mp.o : src/main_mp.cpp
$(CC) -c -o $@ $< $(CPPFLAGS) $(MP_FLAGS) $(MP_LIBS)
$(BUILDDIR)/%.o : src/%.cpp
$(CC) -c -o $@ $< $(CPPFLAGS)