CMakeLists.txt 8.82 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
file(GLOB CMAKE_MACROS "${BASE_DIR}/cmake/enable_*.cmake")
install(FILES ${CMAKE_MACROS} DESTINATION share/amdis/)
246
install(FILES ${BASE_DIR}/cmake3/parse_zoltan_makefile.cmake DESTINATION share/amdis/)
247 248 249 250 251 252 253

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)
254

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


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

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

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

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