CMakeLists.txt 8.74 KB
Newer Older
1
cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
2
3
4
if(POLICY CMP0048)
  cmake_policy(SET CMP0048 OLD)
endif()
5
6
project(AMDiS)

7
8
9
10
11
12
13
14
# set some policies
cmake_policy(SET CMP0017 OLD)
if(POLICY CMP0042)
  cmake_policy(SET CMP0042 NEW)
endif()
if(POLICY CMP0054)
  cmake_policy(SET CMP0054 NEW)
endif()
15

16
list(APPEND CMAKE_MODULE_PATH ${BASE_DIR}/cmake)
17

18
19
20
21
22
23
24
25
26
27
28
# Include macros
include(enable_cxx11)
include(enable_mtl4)
include(enable_boost)
include(enable_umfpack)
include(enable_petsc)
include(enable_zoltan)
include(enable_bddcml)
include(enable_hypre)
include(enable_png)

29
30
31
32
33
34
35
36
# ------------------------------------------------------------------------------

include_directories(${SOURCE_DIR})
set(AMDIS_INCLUDE_DIRS "")
set(COMPILEFLAGS "")

enable_cxx11(ENABLE_CXX11 COMPILEFLAGS)
if (ENABLE_CXX11)
37
  list(APPEND COMPILEFLAGS "-DAMDIS_HAS_CXX11=1")
38
else ()
39
  list(APPEND COMPILEFLAGS "-DAMDIS_HAS_CXX11=0")
40
41
endif (ENABLE_CXX11)

42
43
enable_mtl4(COMPILEFLAGS AMDIS_INCLUDE_DIRS _)
enable_boost(COMPILEFLAGS AMDIS_INCLUDE_DIRS _)
44
45
46
47
48

if (ENABLE_UMFPACK)
  enable_umfpack(COMPILEFLAGS AMDIS_INCLUDE_DIRS _)
endif (ENABLE_UMFPACK)

49
50
51
if (ENABLE_PNG)
  enable_png(COMPILEFLAGS AMDIS_INCLUDE_DIRS _)
endif (ENABLE_PNG)
52
53
54

# ------------------------------------------------------------------------------

55
set(AMDIS_SRC "")
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
list(APPEND AMDIS_SRC
    ${SOURCE_DIR}/AdaptBase.cc
    ${SOURCE_DIR}/AdaptInfo.cc
    ${SOURCE_DIR}/AdaptInstationary.cc
    ${SOURCE_DIR}/AdaptStationary.cc
    ${SOURCE_DIR}/AMDiS.cc
    ${SOURCE_DIR}/Assembler.cc
    ${SOURCE_DIR}/BasisFunction.cc
    ${SOURCE_DIR}/Boundary.cc
    ${SOURCE_DIR}/BoundaryManager.cc
    ${SOURCE_DIR}/BoundaryObject.cc
    ${SOURCE_DIR}/Bubble.cc
    ${SOURCE_DIR}/Cholesky.cc
    ${SOURCE_DIR}/CoarseningManager.cc
    ${SOURCE_DIR}/CoarseningManager1d.cc
    ${SOURCE_DIR}/CoarseningManager2d.cc
    ${SOURCE_DIR}/CoarseningManager3d.cc
    ${SOURCE_DIR}/ComponentTraverseInfo.cc
    ${SOURCE_DIR}/CouplingIterationInterface.cc
    ${SOURCE_DIR}/CreatorMap.cc
    ${SOURCE_DIR}/DOFAdmin.cc
    ${SOURCE_DIR}/DOFIndexed.cc
    ${SOURCE_DIR}/DOFMatrix.cc
    ${SOURCE_DIR}/DOFVector.cc
    ${SOURCE_DIR}/DirichletBC.cc
    ${SOURCE_DIR}/DualTraverse.cc
    ${SOURCE_DIR}/ElInfo.cc
    ${SOURCE_DIR}/ElInfo1d.cc
    ${SOURCE_DIR}/ElInfo2d.cc
    ${SOURCE_DIR}/ElInfo3d.cc
    ${SOURCE_DIR}/ElInfoStack.cc
    ${SOURCE_DIR}/Element.cc
    ${SOURCE_DIR}/ElementData.cc
    ${SOURCE_DIR}/ElementDofIterator.cc
    ${SOURCE_DIR}/ElementRegion_ED.cc
    ${SOURCE_DIR}/FiniteElemSpace.cc
    ${SOURCE_DIR}/FirstOrderAssembler.cc
    ${SOURCE_DIR}/FirstOrderTerm.cc
    ${SOURCE_DIR}/FixVec.cc
    ${SOURCE_DIR}/Global.cc
    ${SOURCE_DIR}/Initfile.cc
    ${SOURCE_DIR}/Lagrange.cc
    ${SOURCE_DIR}/LeafData.cc
    ${SOURCE_DIR}/Line.cc
    ${SOURCE_DIR}/MacroElement.cc
    ${SOURCE_DIR}/Marker.cc
    ${SOURCE_DIR}/MatrixVector.cc
    ${SOURCE_DIR}/Mesh.cc
    ${SOURCE_DIR}/MeshStructure.cc
    ${SOURCE_DIR}/Operator.cc
    ${SOURCE_DIR}/OperatorTerm.cc
    ${SOURCE_DIR}/Parametric.cc
    ${SOURCE_DIR}/PeriodicBC.cc
    ${SOURCE_DIR}/ProblemInstat.cc
    ${SOURCE_DIR}/ProblemInterpol.cc
    ${SOURCE_DIR}/ProblemStat.cc
    ${SOURCE_DIR}/Projection.cc
    ${SOURCE_DIR}/QPInfo.cc
    ${SOURCE_DIR}/QPsiPhi.cc
    ${SOURCE_DIR}/Quadrature.cc
    ${SOURCE_DIR}/RCNeighbourList.cc
    ${SOURCE_DIR}/Recovery.cc
    ${SOURCE_DIR}/RefinementManager.cc
    ${SOURCE_DIR}/RefinementManager1d.cc
    ${SOURCE_DIR}/RefinementManager2d.cc
    ${SOURCE_DIR}/RefinementManager3d.cc
    ${SOURCE_DIR}/RobinBC.cc
    ${SOURCE_DIR}/ScalableQuadrature.cc
    ${SOURCE_DIR}/SecondOrderAssembler.cc
    ${SOURCE_DIR}/SecondOrderTerm.cc
    ${SOURCE_DIR}/Serializer.cc
    ${SOURCE_DIR}/StandardProblemIteration.cc
    ${SOURCE_DIR}/SubAssembler.cc
    ${SOURCE_DIR}/SubElInfo.cc
    ${SOURCE_DIR}/SubQuadrature.cc
    ${SOURCE_DIR}/SurfaceQuadrature.cc
    ${SOURCE_DIR}/SurfaceRegion_ED.cc
    ${SOURCE_DIR}/SystemVector.cc
    ${SOURCE_DIR}/Tetrahedron.cc
    ${SOURCE_DIR}/Timer.cc
    ${SOURCE_DIR}/Traverse.cc
    ${SOURCE_DIR}/Triangle.cc
    ${SOURCE_DIR}/VertexVector.cc
    ${SOURCE_DIR}/ZeroOrderAssembler.cc
    ${SOURCE_DIR}/ZeroOrderTerm.cc
    ${SOURCE_DIR}/est/Estimator.cc
    ${SOURCE_DIR}/est/RecoveryEstimator.cc
    ${SOURCE_DIR}/est/ResidualEstimator.cc
    ${SOURCE_DIR}/est/SimpleResidualEstimator.cc
    ${SOURCE_DIR}/io/ArhReader.cc
    ${SOURCE_DIR}/io/detail/ArhReader.cc
    ${SOURCE_DIR}/io/Arh2Reader.cc
    ${SOURCE_DIR}/io/Arh2Writer.cc
    ${SOURCE_DIR}/io/Arh3Reader.cc
    ${SOURCE_DIR}/io/Arh3Writer.cc
    ${SOURCE_DIR}/io/detail/Arh2Reader.cc
    ${SOURCE_DIR}/io/detail/ArhWriter.cc
    ${SOURCE_DIR}/io/detail/Arh2Writer.cc
    ${SOURCE_DIR}/io/detail/Arh3Reader.cc
    ${SOURCE_DIR}/io/detail/Arh3Writer.cc
    ${SOURCE_DIR}/io/DofWriter.cc
    ${SOURCE_DIR}/io/ElementFileWriter.cc
    ${SOURCE_DIR}/io/FileWriterInterface.cc
    ${SOURCE_DIR}/io/FileWriter.cc
    ${SOURCE_DIR}/io/GNUPlotWriter.cc
    ${SOURCE_DIR}/io/MacroInfo.cc
    ${SOURCE_DIR}/io/MacroReader.cc
    ${SOURCE_DIR}/io/MacroWriter.cc
    ${SOURCE_DIR}/io/PngReader.cc
    ${SOURCE_DIR}/io/PngWriter.cc
    ${SOURCE_DIR}/io/PovrayWriter.cc
    ${SOURCE_DIR}/io/Spreadsheet.cc
    ${SOURCE_DIR}/io/ValueReader.cc
    ${SOURCE_DIR}/io/ValueWriter.cc
    ${SOURCE_DIR}/io/VtkWriter.cc
    ${SOURCE_DIR}/io/VtkVectorWriter.cc
    ${SOURCE_DIR}/io/detail/VtkWriter.cc
    ${SOURCE_DIR}/nonlin/ProblemNonLin.cc
    ${SOURCE_DIR}/solver/SolverMatrix.cc
    ${SOURCE_DIR}/time/RosenbrockAdaptInstationary.cc
    ${SOURCE_DIR}/time/RosenbrockMethod.cc
    ${SOURCE_DIR}/time/RosenbrockStationary.cc
# debugging files
    ${SOURCE_DIR}/Debug.cc
    ${SOURCE_DIR}/GlobalDOFNumbering.cc      # not used by any other class
    ${SOURCE_DIR}/GlobalElementNumbering.cc  # not used by any other class
    ${SOURCE_DIR}/ProblemStatDbg.cc
)

185
include(amdis_parallel)
186
187
188
189
190
include(muparser)

# ------------------------------------------------------------------------------

if (ENABLE_COMPRESSION)
191
  list(APPEND COMPILEFLAGS "-DAMDIS_HAS_COMPRESSION")
192
193
endif (ENABLE_COMPRESSION)

194
195
196
197
if (ENABLE_EXTENSIONS)
  include(amdis_extensions)
  add_library(amdis_extensions ${EXTENSIONS_SRC})

198
199
  set_target_properties(amdis_extensions PROPERTIES OUTPUT_NAME amdisextensions${POSTFIX}
                                              DEBUG_OUTPUT_NAME amdisextensions${POSTFIX}d)
200
201
202
  install(TARGETS amdis_extensions DESTINATION lib/amdis/ )
endif (ENABLE_EXTENSIONS)

203
204
if (ENABLE_REINIT)
  include(amdis_reinit)
205
206
  add_library(amdis_reinit ${REINIT_SRC})

207
208
  set_target_properties(amdis_reinit PROPERTIES OUTPUT_NAME amdisreinit${POSTFIX}
                                          DEBUG_OUTPUT_NAME amdisreinit${POSTFIX}d)
209
  install(TARGETS amdis_reinit DESTINATION lib/amdis/ )
210
211
212
213
endif (ENABLE_REINIT)

if (ENABLE_COMPOSITE_FEM)
  include(amdis_compositeFEM)
214
215
  add_library(amdis_compositeFEM ${COMPOSITE_FEM_SRC})

216
217
  set_target_properties(amdis_compositeFEM PROPERTIES OUTPUT_NAME amdiscompositefem${POSTFIX}
                                                DEBUG_OUTPUT_NAME amdiscompositefem${POSTFIX}d)
218
  install(TARGETS amdis_compositeFEM DESTINATION lib/amdis/ )
219
220
endif (ENABLE_COMPOSITE_FEM)

221
222
223
if (ENABLE_SEQ_PETSC)
  include(amdis_seq_petsc)
endif (ENABLE_SEQ_PETSC)
224

225
226
227
228
229
# ------------------------------------------------------------------------------

include_directories(${AMDIS_INCLUDE_DIRS})
add_definitions(${COMPILEFLAGS})

230
add_library(amdis ${AMDIS_SRC} ${PARALLEL_DOMAIN_AMDIS_SRC})
231
232


233
234
# specify how to install this target:
# -----------------------------------
235

236
set(INSTALL_SUBDIRS . config nonlin est expressions operations traits
237
                      utility time solver solver/details solver/itl io io/detail)
238
239

foreach (SUBDIR ${INSTALL_SUBDIRS})
240
241
  file(GLOB HEADERS "${SOURCE_DIR}/${SUBDIR}/*.h*")
  install(FILES ${HEADERS} DESTINATION include/amdis/${SUBDIR}/)
242
243
endforeach ()

244
245
246
247
248
249
250
251
252
file(GLOB CMAKE_MACROS "${BASE_DIR}/cmake/enable_*.cmake")
install(FILES ${CMAKE_MACROS} DESTINATION share/amdis/)

install(DIRECTORY ${BASE_DIR}/lib/mtl4/ DESTINATION include/amdis/mtl4/
  FILES_MATCHING PATTERN "*.hpp"
  PATTERN ".svn" EXCLUDE
  PATTERN ".svn/*" EXCLUDE
  PATTERN "mtl4/libs" EXCLUDE
  PATTERN "mtl4/extern" EXCLUDE)
253

254
255
set_target_properties(amdis PROPERTIES OUTPUT_NAME amdis${POSTFIX}
                                 DEBUG_OUTPUT_NAME amdis${POSTFIX}d)
256
install(TARGETS amdis DESTINATION lib/amdis/ )
257
258


259
260
# generate configuration file:
# ----------------------------
261
262

# global configuration
263
configure_file(${BASE_DIR}/cmake/AMDISConfig.cmake.in
264
265
  ${AMDiS_BINARY_DIR}/AMDISConfig.cmake
  @ONLY
266
)
267

268
269
# component configuration
configure_file(${BASE_DIR}/cmake/AMDIS.cmake.in
270
  ${AMDiS_BINARY_DIR}/AMDIS${POSTFIX}.cmake
271
272
273
  @ONLY
)

274
install(FILES ${AMDiS_BINARY_DIR}/AMDISConfig.cmake DESTINATION share/amdis/)
275
install(FILES ${AMDiS_BINARY_DIR}/AMDIS${POSTFIX}.cmake DESTINATION share/amdis/)
276
install(FILES ${BASE_DIR}/cmake3/AMDISUse.cmake DESTINATION share/amdis/)