-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
122 lines (85 loc) · 4.41 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
CXX = g++
CC = gcc
FF = gfortran
Opt = -Ofast
include Makefile.in
CXX_FLAGS = -ansi -fexceptions -DMATLAB_MEX_FILE -std=c++11 -fopenmp -march=native \
-D_GNU_SOURCE -fPIC -fno-omit-frame-pointer -Wno-write-strings -pthread\
$(Opt) -DNDEBUG -fopenmp -ffast-math
CXX_INCLUDE = -I./include/mexplus \
-I./include/ \
-I$(MATLAB_ROOT)extern/include \
-I$(MATLAB_ROOT)simulink/include
MATLAB_LINKS = $(Opt) -pthread -shared\
-Wl,--version-script,"$(MATLAB_ROOT)extern/lib/glnxa64/mexFunction.map" \
-Wl,--no-undefined -lblas -llapack
CXX_LIBS = -Wl,--no-undefined -Wl,-rpath-link,"$(MATLAB_ROOT)bin/glnxa64" \
-L$(MATLAB_ROOT)bin/glnxa64 -lmx -lmex -lmat -lm -fopenmp
########################## Mesh ###########################
TriangleWrapper = src/MeshWrapper/TriangleWrapper
TriangleWrapperOut = class/TriangleMesh/private
$(TriangleWrapper)/tTriangleInfo.o: $(TriangleWrapper)/tTriangleInfo.cpp $(TriangleWrapper)/tTriangleInfo.h path
$(CXX) -c $(CXX_INCLUDE) $(CXX_FLAGS) $< -o $@
$(TriangleWrapperOut)/TriangleWrapper.mexa64: $(TriangleWrapper)/tTriangleInfo.o
$(CXX) $(MATLAB_LINKS) -o $@ $< $(CXX_LIBS) -ltriangle && rm $(TriangleWrapper)/tTriangleInfo.o
###########################################################
####################### Function Space ####################
FunctionWrapper = src/FunctionSpace
FunctionWrapperOut = class/FunctionSpace/private
$(FunctionWrapper)/FunctionSpace.o: $(FunctionWrapper)/FunctionSpace.cpp $(FunctionWrapper)/FunctionSpace.h path
$(CXX) -c $(CXX_INCLUDE) $(CXX_FLAGS) $< -o $@
$(FunctionWrapperOut)/FunctionSpaceWrapper.mexa64: $(FunctionWrapper)/FunctionSpace.o
$(CXX) $(MATLAB_LINKS) -o $@ $< $(CXX_LIBS) && rm $(FunctionWrapper)/FunctionSpace.o
###########################################################
########################### Mode ##########################
ModeWrapper = src/ModeWrapper
ModeWrapperOut = class/QuadMode/private
$(ModeWrapper)/ModeWrapper.o: $(ModeWrapper)/tModeInfo.cpp $(ModeWrapper)/tModeInfo.h path
$(CXX) -c $(CXX_INCLUDE) $(CXX_FLAGS) $< -o $@
$(ModeWrapperOut)/ModeWrapper.mexa64: $(ModeWrapper)/ModeWrapper.o
$(CXX) $(MATLAB_LINKS) -o $@ $< $(CXX_LIBS) -lquadmath && rm $(ModeWrapper)/ModeWrapper.o
###########################################################
######################## Metis ############################
MetisWrapper = src/MetisWrapper
MetisWrapperOut = utility/MeshPartition
$(MetisWrapper)/MetisWrapper.o: $(MetisWrapper)/metismex.c path
$(CXX) -c $(CXX_INCLUDE) $(CXX_FLAGS) $< -o $@
$(MetisWrapperOut)/MetisPartition.mexa64: $(MetisWrapper)/MetisWrapper.o
$(CXX) $(MATLAB_LINKS) -o $@ $< $(CXX_LIBS) -lmetis && rm $(MetisWrapper)/MetisWrapper.o
###########################################################
##################### Form ################################
FormWrapper = src/FormWrapper
FormWrapperOut = class/FormBuilder/private
$(FormWrapper)/FormWrapper.o: $(FormWrapper)/Assembler.cpp path
$(CXX) -c $(CXX_INCLUDE) $(CXX_FLAGS) $< -o $@
$(FormWrapperOut)/FormWrapper.mexa64: $(FormWrapper)/FormWrapper.o
$(CXX) $(MATLAB_LINKS) -o $@ $< $(CXX_LIBS) && rm $(FormWrapper)/FormWrapper.o
###########################################################
##################### BC ##################################
BCWrapper = src/BCWrapper
BCWrapperOut = class/BC/private
$(BCWrapper)/BCWrapper.o: $(BCWrapper)/Boundary.cpp path
$(CXX) -c $(CXX_INCLUDE) $(CXX_FLAGS) $< -o $@
$(BCWrapperOut)/BCWrapper.mexa64: $(BCWrapper)/BCWrapper.o
$(CXX) $(MATLAB_LINKS) -o $@ $< $(CXX_LIBS) && rm $(BCWrapper)/BCWrapper.o
###########################################################
path:
mkdir -p ./class/TriangleMesh/private
mkdir -p ./class/QuadMode/private
mkdir -p ./class/FunctionSpace/private
mkdir -p ./class/FormBuilder/private
mkdir -p ./class/BC/private
mkdir -p ./utility/MeshPartition
all:$(TriangleWrapperOut)/TriangleWrapper.mexa64 \
$(FunctionWrapperOut)/FunctionSpaceWrapper.mexa64 \
$(ModeWrapperOut)/ModeWrapper.mexa64 \
$(MetisWrapperOut)/MetisPartition.mexa64 \
$(FormWrapperOut)/FormWrapper.mexa64 \
$(BCWrapperOut)/BCWrapper.mexa64
clean:
rm -f $(TriangleWrapperOut)/TriangleWrapper.mexa64
rm -f $(FunctionWrapperOut)/FunctionSpaceWrapper.mexa64
rm -f $(ModeWrapperOut)/ModeWrapper.mexa64
rm -f $(MetisWrapperOut)/MetisPartition.mexa64
rm -f $(FormWrapperOut)/FormBuilder.mexa64
rm -rf $(BCWrapperOut)/BCWrapper.mexa64