CMakeLists.txt 8.83 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
37
38
39
40
41
# ------------------------------------------------------------------------------

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

enable_cxx11(ENABLE_CXX11 COMPILEFLAGS)
if (ENABLE_CXX11)
  list(APPEND COMPILEFLAGS "-DHAS_CXX11=1")
else ()
  list(APPEND COMPILEFLAGS "-DHAS_CXX11=0")
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
191
192
193
include(muparser)

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

if (ENABLE_COMPRESSION)
  list(APPEND COMPILEFLAGS "-DHAVE_COMPRESSION=1")
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

if (MSVC)
  list(APPEND COMPILEFLAGS "-D_SCL_SECURE_NO_WARNINGS" "-D_CRT_SECURE_NO_WARNINGS")
endif (MSVC)

229
230
231
232
233
# ------------------------------------------------------------------------------

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

234
add_library(amdis ${AMDIS_SRC} ${PARALLEL_DOMAIN_AMDIS_SRC})
235
236


237
238
# specify how to install this target:
# -----------------------------------
239

240
set(INSTALL_SUBDIRS . config nonlin est expressions operations traits
241
                      utility time solver solver/details solver/itl io io/detail)
242
243

foreach (SUBDIR ${INSTALL_SUBDIRS})
244
245
  file(GLOB HEADERS "${SOURCE_DIR}/${SUBDIR}/*.h*")
  install(FILES ${HEADERS} DESTINATION include/amdis/${SUBDIR}/)
246
247
endforeach ()

248
249
250
251
252
253
254
255
256
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)
257

258
259
set_target_properties(amdis PROPERTIES OUTPUT_NAME amdis${POSTFIX}
                                 DEBUG_OUTPUT_NAME amdis${POSTFIX}d)
260
install(TARGETS amdis DESTINATION lib/amdis/ )
261
262


263
264
# generate configuration file:
# ----------------------------
265
266

# global configuration
267
configure_file(${BASE_DIR}/cmake/AMDISConfig.cmake.in
268
269
  ${AMDiS_BINARY_DIR}/AMDISConfig.cmake
  @ONLY
270
)
271

272
273
# component configuration
configure_file(${BASE_DIR}/cmake/AMDIS.cmake.in
274
  ${AMDiS_BINARY_DIR}/AMDIS${POSTFIX}.cmake
275
276
277
  @ONLY
)

278
install(FILES ${AMDiS_BINARY_DIR}/AMDISConfig.cmake DESTINATION share/amdis/)
279
install(FILES ${AMDiS_BINARY_DIR}/AMDIS${POSTFIX}.cmake DESTINATION share/amdis/)
280
install(FILES ${BASE_DIR}/cmake3/AMDISUse.cmake DESTINATION share/amdis/)