CMakeLists.txt 30.4 KB
Newer Older
1
project(AMDIS)
Naumann, Andreas's avatar
Naumann, Andreas committed
2

3
cmake_minimum_required(VERSION 2.6)
4
cmake_policy(SET CMP0017 OLD)
5
6
7

SET(LIB_DIR ${AMDIS_SOURCE_DIR}/lib)
SET(SOURCE_DIR ${AMDIS_SOURCE_DIR}/src)
8

9
#TODO: use the cmake build type
10
SET(MTL_INCLUDE_DIR ${LIB_DIR}/mtl4/ CACHE PATH "mtl4 directory")
11

12
13
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDEBUG=0") #-Wno-unused-but-set-variable
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG=1 -O0") #-Wno-unused-but-set-variable
14
15
16
17
18
19
20
21
22
23
24
25
26
27
if(NOT CurrentRevision)
	find_package(Subversion)
	if(Subversion_FOUND)
	  Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} svn_info)
	  #message("svn-rev: ${svn_info_WC_REVISION}")
	  set(CurrentRevision "0.9.${svn_info_WC_REVISION}")
	endif()
endif()
if(NOT AMDIS_MAJOR)
  set(AMDIS_MAJOR "0")
endif()
if(NOT AMDIS_MINOR)
  set(AMDIS_MINOR "9")
endif()
28
set(COMPILEFLAGS "-DAMDIS_VERSION=${CurrentRevision}")
29
30
31
32
33
34

#define the build type, empty can be everything and nothing
if(CMAKE_BUILD_TYPE STREQUAL "")
	set(CMAKE_BUILD_TYPE "Release")
endif()

35
36
37
38
39
if(CMAKE_CXX_COMPILER MATCHES ".*icpc")
	Message("Compiler: Intel")
	set(CMAKE_CXX_FLAGS "-diag-disable 654 -diag-disable 858") 
endif()

Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
40

41
SET(ENABLE_PARALLEL_DOMAIN "OFF" CACHE STRING "use parallel domain decomposition. please set to one of: PMTL, PETSC, OFF" )
Naumann, Andreas's avatar
Naumann, Andreas committed
42
43
option(USE_PETSC_DEV false)
option(ENABLE_ZOLTAN false)
44
option(ENABLE_SEQ_PETSC "Use sequential PETSc solvers" false)
45
option(ENABLE_UMFPACK "Use of UMFPACK solver" false)
46
option(ENABLE_HYPRE "Use HYPRE AMG solver" false)
Praetorius, Simon's avatar
Praetorius, Simon committed
47
option(ENABLE_PNG "use png reader/writer" false)
48
option(ENABLE_BDDCML "Use of BDDCML library" false)
49
option(ENABLE_EXTENSIONS "Use extensions" false)
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
50
option(ENABLE_OPENMP "Use OpenMP" false)
51
option(ENABLE_COMPRESSION "Use output compression" false)
52
option(ENABLE_OUTPUT "AMDiS output printing, disable only for debugging!" true)
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
53
54
55
56


mark_as_advanced(ENABLE_OUTPUT)

Naumann, Andreas's avatar
Naumann, Andreas committed
57

58
find_package(Boost 1.44 REQUIRED)
59
if(Boost_FOUND)
60
  list(APPEND AMDIS_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
61
62
63
64
65
  message("boost lib-dirs: ${Boost_LIBRARY_DIRS}")
  message("use the boost dir: ${Boost_INCLUDE_DIR}")
  if(WIN32)
	message("the windows find_boost does not set the boost library paths, please set it")
	SET(Boost_LIBRARY_DIRS CACHE PATH "The directory containing the boost libraries")
66
  endif(WIN32)
67
  list(APPEND AMDIS_LINK_DIRS ${Boost_LIBRARY_DIRS})
68
endif(Boost_FOUND)
Naumann, Andreas's avatar
Naumann, Andreas committed
69

70

Thomas Witkowski's avatar
Thomas Witkowski committed
71
72
SET(AMDIS_SRC ${SOURCE_DIR}/AdaptBase.cc
	      ${SOURCE_DIR}/AdaptInfo.cc
73
	      ${SOURCE_DIR}/AdaptInstationary.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
74
	      ${SOURCE_DIR}/AdaptStationary.cc
75
	      ${SOURCE_DIR}/AMDiS.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
76
77
78
79
	      ${SOURCE_DIR}/Assembler.cc
	      ${SOURCE_DIR}/BasisFunction.cc
	      ${SOURCE_DIR}/Boundary.cc
	      ${SOURCE_DIR}/BoundaryManager.cc
80
	      ${SOURCE_DIR}/BoundaryObject.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
81
82
83
84
85
86
	      ${SOURCE_DIR}/Cholesky.cc
	      ${SOURCE_DIR}/CoarseningManager.cc
	      ${SOURCE_DIR}/CoarseningManager1d.cc
	      ${SOURCE_DIR}/CoarseningManager2d.cc
	      ${SOURCE_DIR}/CoarseningManager3d.cc
	      ${SOURCE_DIR}/ComponentTraverseInfo.cc
87
	      ${SOURCE_DIR}/CouplingIterationInterface.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
88
89
90
91
92
	      ${SOURCE_DIR}/CreatorMap.cc
	      ${SOURCE_DIR}/DOFAdmin.cc
	      ${SOURCE_DIR}/DOFIndexed.cc
	      ${SOURCE_DIR}/DOFMatrix.cc
	      ${SOURCE_DIR}/DOFVector.cc
Naumann, Andreas's avatar
Naumann, Andreas committed
93
	      ${SOURCE_DIR}/Debug.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
94
95
96
97
98
99
100
101
102
103
	      ${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
104
	      ${SOURCE_DIR}/ElementRegion_ED.cc	
Thomas Witkowski's avatar
Thomas Witkowski committed
105
106
107
108
109
110
111
	      ${SOURCE_DIR}/FiniteElemSpace.cc
	      ${SOURCE_DIR}/FirstOrderAssembler.cc
	      ${SOURCE_DIR}/FirstOrderTerm.cc
	      ${SOURCE_DIR}/FixVec.cc
	      ${SOURCE_DIR}/Global.cc
	      ${SOURCE_DIR}/GlobalDOFNumbering.cc
	      ${SOURCE_DIR}/GlobalElementNumbering.cc
112
	      ${SOURCE_DIR}/Initfile.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
113
114
115
116
117
	      ${SOURCE_DIR}/Lagrange.cc
	      ${SOURCE_DIR}/LeafData.cc
	      ${SOURCE_DIR}/Line.cc
	      ${SOURCE_DIR}/MacroElement.cc
	      ${SOURCE_DIR}/Marker.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
118
	      ${SOURCE_DIR}/MatrixVector.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
119
120
121
122
123
124
125
126
	      ${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}/ProblemImplicit.cc
	      ${SOURCE_DIR}/ProblemInstat.cc
127
128
129
	      ${SOURCE_DIR}/ProblemInterpol.cc
	      ${SOURCE_DIR}/ProblemStat.cc
	      ${SOURCE_DIR}/ProblemStatDbg.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
130
131
132
133
134
135
136
137
138
139
140
141
142
143
	      ${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
144
	      ${SOURCE_DIR}/Serializer.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
145
146
147
148
149
	      ${SOURCE_DIR}/StandardProblemIteration.cc
	      ${SOURCE_DIR}/SubAssembler.cc
	      ${SOURCE_DIR}/SubElInfo.cc
	      ${SOURCE_DIR}/SubQuadrature.cc
	      ${SOURCE_DIR}/SurfaceQuadrature.cc
150
151
	      ${SOURCE_DIR}/SurfaceRegion_ED.cc
	      ${SOURCE_DIR}/SystemVector.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
152
	      ${SOURCE_DIR}/Tetrahedron.cc
Naumann, Andreas's avatar
Naumann, Andreas committed
153
	      ${SOURCE_DIR}/Timer.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
154
155
156
157
158
	      ${SOURCE_DIR}/Traverse.cc
	      ${SOURCE_DIR}/Triangle.cc
	      ${SOURCE_DIR}/VertexVector.cc
	      ${SOURCE_DIR}/ZeroOrderAssembler.cc
	      ${SOURCE_DIR}/ZeroOrderTerm.cc
159
160
161
162
	      ${SOURCE_DIR}/est/Estimator.cc
	      ${SOURCE_DIR}/est/RecoveryEstimator.cc
	      ${SOURCE_DIR}/est/ResidualEstimator.cc
	      ${SOURCE_DIR}/est/SimpleResidualEstimator.cc
163
	      ${SOURCE_DIR}/io/ArhReader.cc
164
165
	      ${SOURCE_DIR}/io/detail/ArhReader.cc
              ${SOURCE_DIR}/io/Arh2Reader.cc
166
              ${SOURCE_DIR}/io/Arh2Writer.cc
167
168
169
              ${SOURCE_DIR}/io/detail/Arh2Reader.cc
	      ${SOURCE_DIR}/io/detail/ArhWriter.cc
              ${SOURCE_DIR}/io/detail/Arh2Writer.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
170
171
172
173
174
175
176
	      ${SOURCE_DIR}/io/DofWriter.cc
	      ${SOURCE_DIR}/io/ElementFileWriter.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
Praetorius, Simon's avatar
Praetorius, Simon committed
177
	      ${SOURCE_DIR}/io/PngReader.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
178
179
	      ${SOURCE_DIR}/io/PngWriter.cc
	      ${SOURCE_DIR}/io/PovrayWriter.cc
180
	      ${SOURCE_DIR}/io/Spreadsheet.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
181
182
183
	      ${SOURCE_DIR}/io/ValueReader.cc
	      ${SOURCE_DIR}/io/ValueWriter.cc
	      ${SOURCE_DIR}/io/VtkWriter.cc
184
	      ${SOURCE_DIR}/io/VtkVectorWriter.cc
185
              ${SOURCE_DIR}/io/detail/VtkWriter.cc
186
	      ${SOURCE_DIR}/nonlin/ProblemNonLin.cc
187
	      ${SOURCE_DIR}/solver/SolverMatrix.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
188
	      ${SOURCE_DIR}/time/RosenbrockAdaptInstationary.cc
189
	      ${SOURCE_DIR}/time/RosenbrockMethod.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
190
	      ${SOURCE_DIR}/time/RosenbrockStationary.cc
Naumann, Andreas's avatar
Naumann, Andreas committed
191
192
	      )

193
if(ENABLE_PARALLEL_DOMAIN)
194
195
196
	
	### Search for MPI compiler and get compile flags and include paths. ###

Naumann, Andreas's avatar
Naumann, Andreas committed
197
	find_package(MPI REQUIRED)
198
	if(MPI_FOUND)
199
	  list(APPEND COMPILEFLAGS "${MPI_COMPILE_FLAGS}")
200
201
	  include_directories(${MPI_INCLUDE_PATH})
	endif(MPI_FOUND)
202
 
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226


	### Search for ParMetis ###

	find_file(PARMETIS_HEADER_FILE "parmetis.h" PATH ENV CPATH)
	if(PARMETIS_HEADER_FILE)
		get_filename_component(PARMETIS_INCLUDE_PATH "${PARMETIS_HEADER_FILE}" PATH CACHE)
		include_directories(${PARMETIS_INCLUDE_PATH})
	else()
		message(FATAL_ERROR "Could not find ParMetis header file!")
	endif(PARMETIS_HEADER_FILE)

	find_file(PARMETIS_LIB_FILE "libparmetis.a" PATH ENV LIBRARY_PATH)
	if(PARMETIS_LIB_FILE)
		get_filename_component(PARMETIS_LINK_PATH "${PARMETIS_LIB_FILE}" PATH CACHE)
		link_directories(${PARMETIS_LINK_PATH})
	else()
		message(FATAL_ERROR "Could not find ParMetis library file!")
	endif(PARMETIS_LIB_FILE)


	
	### Search for Zoltan ###

227
	if(ENABLE_ZOLTAN)
228
229
	  find_file(ZOLTAN_HEADER_FILE "zoltan_cpp.h" PATH ENV CPATH)
	  if(ZOLTAN_HEADER_FILE)
230
		get_filename_component(ZOLTAN_HEADER_DIR "${ZOLTAN_HEADER_FILE}" PATH CACHE)
231
		include_directories(${ZOLTAN_HEADER_DIR})
232
	  else()
233
234
235
		message(FATAL_ERROR "Could not find Zoltan include file!")
	  endif(ZOLTAN_HEADER_FILE)

236
	  list(APPEND COMPILEFLAGS "-DHAVE_ZOLTAN")
237
238
	endif(ENABLE_ZOLTAN)

239
240


241
	list(APPEND COMPILEFLAGS "-DHAVE_PARALLEL_DOMAIN_AMDIS=1")
Naumann, Andreas's avatar
Naumann, Andreas committed
242
	SET(PARALLEL_DOMAIN_AMDIS_SRC
243
		${SOURCE_DIR}/parallel/BddcMlSolver.cc
244
               	${SOURCE_DIR}/parallel/DofComm.cc
245
		${SOURCE_DIR}/parallel/CheckerPartitioner.cc
246
		${SOURCE_DIR}/parallel/ElementObjectDatabase.cc
247
		${SOURCE_DIR}/parallel/InteriorBoundary.cc
248
		${SOURCE_DIR}/parallel/MeshDistributor.cc 
249
		${SOURCE_DIR}/parallel/MeshLevelData.cc 
250
		${SOURCE_DIR}/parallel/MeshManipulation.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
251
		${SOURCE_DIR}/parallel/MeshPartitioner.cc
252
		${SOURCE_DIR}/parallel/MpiHelper.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
253
		${SOURCE_DIR}/parallel/ParallelDebug.cc
254
		${SOURCE_DIR}/parallel/ParallelDofMapping.cc
255
256
		${SOURCE_DIR}/parallel/ParallelProblemStat.cc
		${SOURCE_DIR}/parallel/ParallelSolver.cc
257
		${SOURCE_DIR}/parallel/PeriodicMap.cc
258
		${SOURCE_DIR}/parallel/ParMetisPartitioner.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
259
		${SOURCE_DIR}/parallel/StdMpi.cc
260
		${SOURCE_DIR}/parallel/ZoltanPartitioner.cc)
261
262
263
264
265
266
		
	if(ENABLE_PARALLEL_DOMAIN STREQUAL "PETSC")
		set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};/usr/share/cmake-2.8/Modules/;${CMAKE_SOURCE_DIR}/")
		set(PETSC_EXECUTABLE_RUNS ON)
		find_package(PETSc REQUIRED)
		include_directories(${PETSC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/include)
267
		list(APPEND COMPILEFLAGS "-DHAVE_PARALLEL_PETSC" "-DPETSC_VERSION=${PETSC_VERSION}")
268
		list(APPEND AMDIS_INCLUDE_DIRS ${PETSC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/include)
269
		list(APPEND PARALLEL_DOMAIN_AMDIS_SRC 
270
			${SOURCE_DIR}/parallel/MatrixNnzStructure.cc
271
			${SOURCE_DIR}/parallel/ParallelCoarseSpaceSolver.cc
272
			${SOURCE_DIR}/parallel/PetscHelper.cc
Thomas Witkowski's avatar
Thomas Witkowski committed
273
			${SOURCE_DIR}/parallel/PetscSolver.cc
274
			${SOURCE_DIR}/parallel/PetscSolverFeti.cc
275
276
			${SOURCE_DIR}/parallel/PetscSolverFetiDebug.cc
			${SOURCE_DIR}/parallel/PetscSolverFetiMonitor.cc
277
278
			${SOURCE_DIR}/parallel/PetscSolverFetiOperators.cc
			${SOURCE_DIR}/parallel/PetscSolverFetiTimings.cc
279
			${SOURCE_DIR}/parallel/PetscSolverGlobalMatrix.cc
280
			${SOURCE_DIR}/parallel/PetscSolverGlobalBlockMatrix.cc
281
			${SOURCE_DIR}/parallel/PetscSolverNavierStokes.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
282
			${SOURCE_DIR}/parallel/PetscSolverNSCH.cc
283
284
285
286
			${SOURCE_DIR}/parallel/PetscSolverCahnHilliard2.cc
			${SOURCE_DIR}/parallel/PetscSolverCahnHilliard.cc                        
			${SOURCE_DIR}/parallel/PetscSolverSchur.cc
			${SOURCE_DIR}/solver/PetscTypes.cc)
287
288
289
290
	elseif(ENABLE_PARALLEL_DOMAIN STREQUAL "PMTL")
		set(MTL_INCLUDE_DIR "")
		find_package(MTL REQUIRED)
		list(APPEND COMPILEFLAGS "-DMTL_HAS_MPI" "-DHAVE_PARALLEL_MTL4")
291
292
293
# 		list(APPEND PARALLEL_DOMAIN_AMDIS_SRC 
# 			${SOURCE_DIR}/parallel/PMTL_ProblemStat.cc
# 			)
294
		list(APPEND AMDIS_LIBS ${MTL_LIBRARIES})
295
	else()
296
		message(SEND_ERROR "Set the domain-decomposition version correctly.")
297
298
	endif()

299
300
	INSTALL(FILES ResolveCompilerPaths.cmake FindPackageMultipass.cmake FindPETSc.cmake
		DESTINATION share/amdis/)
301
	if(USE_PETSC_DEV)
302
	  list(APPEND COMPILEFLAGS "-DHAVE_PETSC_DEV")
Naumann, Andreas's avatar
Naumann, Andreas committed
303
	endif( USE_PETSC_DEV)
Naumann, Andreas's avatar
Naumann, Andreas committed
304
305
endif(ENABLE_PARALLEL_DOMAIN)

306

307
if(ENABLE_SEQ_PETSC)
308
309
310
311
312
313
314
315
316
317
318
  find_package(MPI REQUIRED)
  if(MPI_FOUND)
    list(APPEND COMPILEFLAGS "${MPI_COMPILE_FLAGS}")
    include_directories(${MPI_INCLUDE_PATH})
  endif(MPI_FOUND)
	
  set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};/usr/share/cmake-2.8/Modules/;${CMAKE_SOURCE_DIR}/")
  set(PETSC_EXECUTABLE_RUNS ON)
  find_package(PETSc REQUIRED)
  include_directories(${PETSC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/include)
  list(APPEND AMDIS_INCLUDE_DIRS ${PETSC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/include)
319
  list(APPEND COMPILEFLAGS "-DHAVE_SEQ_PETSC" "-DPETSC_VERSION=${PETSC_VERSION}")
320
321
322
323
  
  list(APPEND AMDIS_SRC   
	${SOURCE_DIR}/solver/PetscSolver.cc
	${SOURCE_DIR}/solver/PetscTypes.cc)
324
endif(ENABLE_SEQ_PETSC)
325
326

if(ENABLE_UMFPACK)
327
	find_file(UMFPACK_H umfpack.h
328
			    HINTS ENV CPATH /usr/include /usr/include/suitesparse /usr/include/ufsparse
329
330
			    DOC "headerfile umfpack.h for UMFPACK")
	if(UMFPACK_H)
331
332
		get_filename_component(UMFPACK_PATH ${UMFPACK_H} PATH)
		include_directories(${UMFPACK_PATH} ${UFCONFIG_PATH} ${AMD_PATH})
333
		list(APPEND COMPILEFLAGS "-DHAVE_UMFPACK=1" "-DMTL_HAS_UMFPACK")
334
	else()
Praetorius, Simon's avatar
Praetorius, Simon committed
335
		message(FATAL_ERROR "Could not find the UMFPACK header umfpack.h.")
336
	endif()
337
	SET(RPM_DEPEND_STR "blas")
Naumann, Andreas's avatar
Naumann, Andreas committed
338
endif(ENABLE_UMFPACK)
Praetorius, Simon's avatar
Praetorius, Simon committed
339
340


341
342
343
if(ENABLE_HYPRE)
  include(FindHYPRE.cmake)
  message("have hypre: ${HAVE_HYPRE}")
344
345
  if (HAVE_HYPRE)
    if (NOT MPI_FOUND)
346
      find_package(MPI REQUIRED)
347
      if (MPI_FOUND)
348
349
350
351
352
353
354
355
356
357
358
	list(APPEND COMPILEFLAGS "${MPI_COMPILE_FLAGS}")
	include_directories(${MPI_INCLUDE_PATH})
      endif()
    endif()
    include_directories(${HYPRE_INCLUDE_DIRECTORIES})
    list(APPEND COMPILEFLAGS "-DMTL_HAS_HYPRE")
    list(APPEND MYLIBS ${HYPRE_LIBRARIES} )
  endif()
endif(ENABLE_HYPRE)
  
  
Praetorius, Simon's avatar
Praetorius, Simon committed
359
360
361
362
363
364
365
366
367
368
369
370
if(ENABLE_PNG)
	find_file(PNG_H png.h
			    HINTS ENV CPATH /usr/include
			    DOC "headerfile png.h for PNG-READER")
	if(PNG_H)
		get_filename_component(PNG_PATH ${PNG_H} PATH)
		include_directories(${PNG_PATH})
		list(APPEND COMPILEFLAGS "-DHAVE_PNG=1")
	else()
		message(FATAL_ERROR "Could not find the PNG header png.h.")
	endif()
endif(ENABLE_PNG)
Naumann, Andreas's avatar
Naumann, Andreas committed
371

372
373
374
if(ENABLE_COMPRESSION)
  list(APPEND COMPILEFLAGS "-DHAVE_COMPRESSION=1")
endif(ENABLE_COMPRESSION)
375

Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
376
377
378
379
380
381
if(NOT ENABLE_OUTPUT)
       message(WARNING "AMDiS cout output disabled!")
       list(APPEND COMPILEFLAGS "-DSUPPRESS_OUTPUT")
endif(NOT ENABLE_OUTPUT)


382
if(ENABLE_BDDCML)
383
384
	SET(BDDCML_LINK_LIST "" CACHE STRING "Further libraries to be linked with BDDCML")
		
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
	find_file(BDDCML_H bddcml_interface_c.h
			   HINTS ENV CPATH
			   DOC "Header bddcml_interface_c.h for the BDDCML library.")

	if(BDDCML_H)
		get_filename_component(BDDCML_PATH ${BDDCML_H} PATH)
		include_directories(${BDDCML_PATH})		
		list(APPEND COMPILEFLAGS "-DHAVE_BDDC_ML=1")
		list(APPEND COMPILEFLAGS "-DAdd_")
	else()
		message(FATAL_ERROR "Could not find BDDCML headers.")
	endif()

	find_library(BDDCML_LIB bddcml
				HINTS ENV LIBRARY_PATH
				DOC "BDDCML library")

	if(BDDCML_LIB)
		list(APPEND AMDIS_LIBS ${BDDCML_LIB})
	else()
		message(FATAL_ERROR "Could not find the BDDCML library")
	endif()
407

Thomas Witkowski's avatar
Thomas Witkowski committed
408
409
410
411

	find_file(BLOPEX_PATH blopex
			      HINTS ENV CPATH
			      DOC "Path to BLOPEX library.")
412
413
414
endif(ENABLE_BDDCML)


415
if(ENABLE_EXTENSIONS)
416
  option(ENABLE_BASE_PROBLEMS "Use base_problems" false)
417
418
419
420
421
422
  find_path(EXTENSIONS_DIR NAMES ${SOURCE_DIR}/../../extensions/Helpers.h DOC "Path to AMDiS extensions.")
  if (EXTENSIONS_DIR)
    if (NOT EXISTS ${EXTENSIONS_DIR}/Helpers.h OR NOT EXISTS ${EXTENSIONS_DIR}/base_problems/BaseProblem.h)
      message(FATAL_ERROR "Wrong extensions directory! Directory must contain the 'Helpers.h' and the subdirectory 'base_problems'")
    else()
  
423
424
425
426
427
      SET(EXTENSIONS_SRC
	      ${EXTENSIONS_DIR}/Helpers.cc
	      ${EXTENSIONS_DIR}/BackgroundMesh.cc
	      ${EXTENSIONS_DIR}/GeometryTools.cc
	      ${EXTENSIONS_DIR}/POperators.cc
428
	      ${EXTENSIONS_DIR}/SingularDirichletBC2.cc
429
	      ${EXTENSIONS_DIR}/time/ExtendedRosenbrockStationary.cc
430
431
432
	      ${EXTENSIONS_DIR}/pugixml/src/pugixml.cpp
	      ${EXTENSIONS_DIR}/preconditioner/PhaseFieldCrystal_.cc
	      ${EXTENSIONS_DIR}/preconditioner/CahnHilliard_.cc)
433
	      
434
      if(ENABLE_SEQ_PETSC)
435
436
437
	list(APPEND EXTENSIONS_SRC
	      ${EXTENSIONS_DIR}/preconditioner/PetscPreconPfc.cc
	      ${EXTENSIONS_DIR}/preconditioner/PetscPreconCahnHilliard.cc)
438
      endif(ENABLE_SEQ_PETSC)
439
      
440
441
      if(ENABLE_PARALLEL_DOMAIN)
	list(APPEND EXTENSIONS_SRC
Praetorius, Simon's avatar
Praetorius, Simon committed
442
# 	      ${EXTENSIONS_DIR}/preconditioner/PetscSolverNavierStokes2.cc
443
	      ${EXTENSIONS_DIR}/preconditioner/PetscSolverPfc.cc)
444
445
      endif(ENABLE_PARALLEL_DOMAIN)
      
446
447
448
449
450
      list(APPEND COMPILEFLAGS "-DHAVE_EXTENSIONS=1")
      list(APPEND AMDIS_INCLUDE_DIRS ${EXTENSIONS_DIR})
      list(APPEND AMDIS_INCLUDE_DIRS ${EXTENSIONS_DIR}/time)
      list(APPEND AMDIS_INCLUDE_DIRS ${EXTENSIONS_DIR}/nanoflann)
      list(APPEND AMDIS_INCLUDE_DIRS ${EXTENSIONS_DIR}/pugixml/src)
Praetorius, Simon's avatar
Praetorius, Simon committed
451
452
453
454
455
      if(WIN32)
	add_library(extensions STATIC ${EXTENSIONS_SRC})
      else()
	add_library(extensions SHARED ${EXTENSIONS_SRC})
      endif()
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
      list(APPEND AMDIS_LIBS extensions)

      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/*.h")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/)
      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/*.hh")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/)

      list(APPEND deb_add_dirs "include/amdis/extensions")

      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/time/*.h")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/time/)
      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/time/*.hh")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/time/)
473
474
475
476
477
478
479
	      
      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/preconditioner/*.h")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/preconditioner/)
      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/preconditioner/*.hh")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/preconditioner/)
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495

      list(APPEND deb_add_dirs "include/amdis/extensions/time")

      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/nanoflann/*.hpp")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/nanoflann/)

      list(APPEND deb_add_dirs "include/amdis/extensions/nanoflann")

      FILE(GLOB HEADERS "${EXTENSIONS_DIR}/pugixml/src/*.hpp")
      INSTALL(FILES ${HEADERS}
	      DESTINATION include/amdis/extensions/pugixml/)

      list(APPEND deb_add_dirs "include/amdis/extensions/pugixml")

      install(TARGETS extensions
Praetorius, Simon's avatar
Praetorius, Simon committed
496
	      DESTINATION lib/amdis/ )
497
498
499
500
501

# === baseProblems ====================================================================
      
      if(ENABLE_BASE_PROBLEMS)
	  SET(BASE_PROBLEMS_SRC
502
# 		  ${EXTENSIONS_DIR}/base_problems/CahnHilliard.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
503
504
		  ${EXTENSIONS_DIR}/base_problems/CahnHilliard_RB.cc
		  ${EXTENSIONS_DIR}/base_problems/CahnHilliardNavierStokes.cc
505
506
507
508
    # 	      ${EXTENSIONS_DIR}/base_problems/DiffuseDomainFsi.cc
		  ${EXTENSIONS_DIR}/base_problems/LinearElasticity.cc
		  ${EXTENSIONS_DIR}/base_problems/LinearElasticityPhase.cc
    # 	      ${EXTENSIONS_DIR}/base_problems/NavierStokes_Chorin.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
509
		  ${EXTENSIONS_DIR}/base_problems/NavierStokesCahnHilliard.cc
510
		  ${EXTENSIONS_DIR}/base_problems/NavierStokesPhase_TaylorHood.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
511
# 		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TaylorHood.cc
512
		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TaylorHood_RB.cc
513
# 		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TH_MultiPhase.cc
514
		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TH_MultiPhase_RB.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
515
		  ${EXTENSIONS_DIR}/base_problems/PhaseFieldCrystal.cc
516
		  ${EXTENSIONS_DIR}/base_problems/PhaseFieldCrystal_Phase.cc
517
518
519
		  ${EXTENSIONS_DIR}/base_problems/PhaseFieldCrystal_RB.cc)
	list(APPEND COMPILEFLAGS "-DHAVE_BASE_PROBLEMS=1")
	list(APPEND AMDIS_INCLUDE_DIRS ${EXTENSIONS_DIR}/base_problems)
Praetorius, Simon's avatar
Praetorius, Simon committed
520
521
522
523
524
	if(WIN32)
	  add_library(base_problems STATIC ${BASE_PROBLEMS_SRC})
	else()
	  add_library(base_problems SHARED ${BASE_PROBLEMS_SRC})
	endif()
525
526
527
528
529
530
531
532
533
534
535
536
	list(APPEND AMDIS_LIBS base_problems)

	FILE(GLOB HEADERS "${EXTENSIONS_DIR}/base_problems/*.h")
	INSTALL(FILES ${HEADERS}
		DESTINATION include/amdis/base_problems/)
	FILE(GLOB HEADERS "${EXTENSIONS_DIR}/base_problems/*.hh")
	INSTALL(FILES ${HEADERS}
		DESTINATION include/amdis/base_problems/)

	list(APPEND deb_add_dirs "include/amdis/base_problems")

	install(TARGETS base_problems
Praetorius, Simon's avatar
Praetorius, Simon committed
537
		DESTINATION lib/amdis/ )
538
    
539
540
541
      endif(ENABLE_BASE_PROBLEMS)
    endif()
  endif()
542
543
endif(ENABLE_EXTENSIONS)

544

Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
545
if(ENABLE_OPENMP)
Thomas Witkowski's avatar
Thomas Witkowski committed
546
547
548
549
550
  if(CMAKE_CXX_COMPILER MATCHES ".*icpc")
	list(APPEND COMPILEFLAGS "-openmp")
  else()
        list(APPEND COMPILEFLAGS "-fopenmp")
  endif()
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
551
552
endif(ENABLE_OPENMP)

553
SET(COMPOSITE_SOURCE_DIR ${SOURCE_DIR}/compositeFEM)
Thomas Witkowski's avatar
Thomas Witkowski committed
554
555
556
557
558
559
560
561
SET(COMPOSITE_FEM_SRC ${COMPOSITE_SOURCE_DIR}/CFE_Integration.cc 
		      ${COMPOSITE_SOURCE_DIR}/CFE_NormAndErrorFcts.cc 
		      ${COMPOSITE_SOURCE_DIR}/CompositeFEMMethods.cc 
		      ${COMPOSITE_SOURCE_DIR}/CompositeFEMOperator.cc 
		      ${COMPOSITE_SOURCE_DIR}/LevelSetAdaptMesh.cc 
		      ${COMPOSITE_SOURCE_DIR}/PenaltyOperator.cc 
		      ${COMPOSITE_SOURCE_DIR}/ElementLevelSet.cc 
		      ${COMPOSITE_SOURCE_DIR}/SubPolytope.cc 
Naumann, Andreas's avatar
Naumann, Andreas committed
562
563
		      ${COMPOSITE_SOURCE_DIR}/SubElementAssembler.cc )

564
565
566
567
set(REINIT_SOURCE_DIR ${SOURCE_DIR}/reinit)
file(GLOB REINIT_SRC ${REINIT_SOURCE_DIR}/*.cc)
include_directories(${REINIT_SOURCE_DIR})

568
569

#muparser includes
570
set(MUPARSER_SOURCE_DIR ${AMDIS_SOURCE_DIR}/lib/muparser_v134)
571
file(GLOB MUPARSER_SRC ${MUPARSER_SOURCE_DIR}/src/*.cpp)
572
list(APPEND AMDIS_INCLUDE_DIRS ${MUPARSER_SOURCE_DIR}/include)
573

Naumann, Andreas's avatar
Naumann, Andreas committed
574
#mtl4 includes
575
list(APPEND AMDIS_INCLUDE_DIRS ${MTL_INCLUDE_DIR})
576
#include_directories(${MTL_INCLUDE_DIR})
577
list(APPEND AMDIS_INCLUDE_DIRS ${SOURCE_DIR})
578

579
#include_directories(${SOURCE_DIR})
580
include_directories(${AMDIS_INCLUDE_DIRS})
Naumann, Andreas's avatar
Naumann, Andreas committed
581

Praetorius, Simon's avatar
Praetorius, Simon committed
582
583
584
585
586
587
588
589
590
591
592
if(WIN32)
  add_library(amdis STATIC ${AMDIS_SRC} ${PARALLEL_DOMAIN_AMDIS_SRC})
  add_library(compositeFEM STATIC ${COMPOSITE_FEM_SRC})
  add_library(reinit STATIC ${REINIT_SRC})
  add_library(muparser STATIC ${MUPARSER_SRC})
else()
  add_library(amdis SHARED ${AMDIS_SRC} ${PARALLEL_DOMAIN_AMDIS_SRC})
  add_library(compositeFEM SHARED ${COMPOSITE_FEM_SRC})
  add_library(reinit SHARED ${REINIT_SRC})
  add_library(muparser SHARED ${MUPARSER_SRC})
endif()
593

Praetorius, Simon's avatar
Praetorius, Simon committed
594
595
#target_link_libraries(compositeFEM amdis)
#target_link_libraries(reinit amdis)
596
list(APPEND AMDIS_LIBS amdis ${Boost_LIBRARIES})
597

598
if(WIN32)
599
	list(APPEND COMPILEFLAGS "-D_SCL_SECURE_NO_WARNINGS" "-D_CRT_SECURE_NO_WARNINGS")
600
endif(WIN32)
601
602
603
604
605
606
607
608
609
610
611
612


if(CMAKE_SYSTEM_NAME MATCHES Darwin)
  if(CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
     SET(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -flat_namespace -single_module -undefined dynamic_lookup")
     SET(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -flat_namespace -single_module -undefined dynamic_lookup")
 
     set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -bind_at_load -m64")
     set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -bind_at_load -m64")
  endif()
endif()

613
message("compileflags: ${COMPILEFLAGS}")
614
615
#SET_TARGET_PROPERTIES(amdis PROPERTIES COMPILE_FLAGS "${COMPILEFLAGS}")
add_definitions(${COMPILEFLAGS})
616

Naumann, Andreas's avatar
Naumann, Andreas committed
617
618
619
620
if(ENABLE_MARMOT)
	Message("please set marmotcc manually")
endif(ENABLE_MARMOT)

621
#dont change this destination. the GUI depends on it to guess the buildsystem
622

623
FILE(GLOB HEADERS "${SOURCE_DIR}/*.h")
624
625
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
626
627
list(APPEND deb_add_dirs "include/amdis")

628
FILE(GLOB HEADERS "${SOURCE_DIR}/*.hh")
629
630
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
631

632
FILE(GLOB HEADERS "${SOURCE_DIR}/parallel/*.h")
633
634
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/parallel/)
Naumann, Andreas's avatar
Naumann, Andreas committed
635
636
list(APPEND deb_add_dirs "include/amdis/parallel")

637
638
639
640
641
FILE(GLOB HEADERS "${SOURCE_DIR}/nonlin/*.h")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/nonlin/)
list(APPEND deb_add_dirs "include/amdis/nonlin")

642
643
644
645
646
FILE(GLOB HEADERS "${SOURCE_DIR}/est/*.h")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/est/)
list(APPEND deb_add_dirs "include/amdis/est")

647
648
649
650
651
FILE(GLOB HEADERS "${SOURCE_DIR}/expressions/*.h")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/expressions/)
list(APPEND deb_add_dirs "include/amdis/expressions")

652
FILE(GLOB HEADERS "${SOURCE_DIR}/time/*.h")
653
654
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/time/)
Naumann, Andreas's avatar
Naumann, Andreas committed
655
656
list(APPEND deb_add_dirs "include/amdis/time")

657
658
659
660
661
662
663
664
665
666
667
FILE(GLOB HEADERS "${SOURCE_DIR}/solver/*.h")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/solver)
list(APPEND deb_add_dirs "include/amdis/solver")

FILE(GLOB HEADERS "${SOURCE_DIR}/solver/*.hh")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/solver)
list(APPEND deb_add_dirs "include/amdis/solver")

FILE(GLOB HEADERS "${SOURCE_DIR}/solver/itl/*.hpp")
668
INSTALL(FILES ${HEADERS} 
669
670
	DESTINATION include/amdis/solver/itl)
list(APPEND deb_add_dirs "include/amdis/solver/itl")
Naumann, Andreas's avatar
Naumann, Andreas committed
671

672
FILE(GLOB HEADERS "${SOURCE_DIR}/io/*.h")
Naumann, Andreas's avatar
Naumann, Andreas committed
673
674
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/io)
Naumann, Andreas's avatar
Naumann, Andreas committed
675
676
list(APPEND deb_add_dirs "include/amdis/io")

677
FILE(GLOB HEADERS "${SOURCE_DIR}/io/*.hh")
Naumann, Andreas's avatar
Naumann, Andreas committed
678
679
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/io)
680
681
682
683
684
	
FILE(GLOB HEADERS "${SOURCE_DIR}/io/detail/*h")
INSTALL(FILES ${HEADERS}
        DESTINATION include/amdis/io/detail)
list(APPEND deb_add_dirs "include/amdis/io/detail")        
685

Praetorius, Simon's avatar
Praetorius, Simon committed
686
687
688
689
690
691
692
693
694
695
FILE(GLOB HEADERS "${REINIT_SOURCE_DIR}/*.h")
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/reinit)
list(APPEND deb_add_dirs "include/amdis/reinit")

FILE(GLOB HEADERS "${COMPOSITE_SOURCE_DIR}/*.h")
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/compositeFEM)
list(APPEND deb_add_dirs "include/amdis/compositeFEM")

696
697
698
699
700
FILE(GLOB HEADERS "${MUPARSER_SOURCE_DIR}/include/*.h")
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/muparser)
list(APPEND deb_add_dirs "include/amdis/muparser")

Praetorius, Simon's avatar
Praetorius, Simon committed
701
list(APPEND deb_add_dirs "lib/amdis")
702
install(TARGETS amdis compositeFEM reinit muparser
Praetorius, Simon's avatar
Praetorius, Simon committed
703
	DESTINATION lib/amdis/ )
Praetorius, Simon's avatar
Praetorius, Simon committed
704

705
706
configure_file(${AMDIS_SOURCE_DIR}/AMDISConfig.cmake.in
		${AMDIS_BINARY_DIR}/AMDISConfig.cmake
707
708
		@ONLY
	      )
709

710
INSTALL(FILES ${AMDIS_BINARY_DIR}/AMDISConfig.cmake 
711
	DESTINATION share/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
712
713
list(APPEND deb_add_dirs "share/amdis/")

714
715
716
717
# INSTALL(FILES ${AMDIS_SOURCE_DIR}/AMDISUse.cmake 
# 	DESTINATION share/amdis/)
FILE(GLOB CMAKE_FILES "${AMDIS_SOURCE_DIR}/*.cmake")
INSTALL(FILES ${CMAKE_FILES}
718
	DESTINATION share/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
719

720
#install mtl
721
INSTALL(DIRECTORY ${AMDIS_SOURCE_DIR}/lib/mtl4/
722
723
724
725
726
727
	DESTINATION include/amdis/mtl4/
	FILES_MATCHING PATTERN "*.hpp"
	PATTERN ".svn" EXCLUDE
	PATTERN ".svn/*" EXCLUDE
	PATTERN "mtl4/libs" EXCLUDE
	PATTERN "mtl4/extern" EXCLUDE
728
       )
Naumann, Andreas's avatar
Naumann, Andreas committed
729
FILE(GLOB_RECURSE mtl4_files 
730
731
		RELATIVE ${AMDIS_SOURCE_DIR}/lib/mtl4/boost/ 
		${AMDIS_SOURCE_DIR}/lib/mtl4/boost/*.hpp)
Naumann, Andreas's avatar
Naumann, Andreas committed
732
733
foreach(mtl4_file in ${mtl4_files})
 get_filename_component(mtl4File_path ${mtl4_file} PATH)
734
 list(APPEND deb_add_dirs "include/amdis/mtl4/boost/${mtl4File_path}")
Naumann, Andreas's avatar
Naumann, Andreas committed
735
endforeach(mtl4_file)
736
737
738
739
740
741

#install documentation
FILE(GLOB DOCS "${AMDIS_SOURCE_DIR}/doc/*.pdf")
INSTALL(FILES  ${DOCS} DESTINATION share/amdis/doc)
list(APPEND deb_add_dirs "share/amdis/doc")

Naumann, Andreas's avatar
Naumann, Andreas committed
742
list(REMOVE_DUPLICATES deb_add_dirs)
743

Praetorius, Simon's avatar
Praetorius, Simon committed
744
745
ENABLE_TESTING()
INCLUDE(CTest)
746
747
748
INCLUDE(Dart)
if(NOT CTEST_MODEL)
        set(CTEST_MODEL "Experimental")
Praetorius, Simon's avatar
Praetorius, Simon committed
749
endif()
750
751
if( NOT N_TEST_PROC) 
	set(N_TEST_PROC "8")
Praetorius, Simon's avatar
Praetorius, Simon committed
752
endif()
753
754
configure_file(myMake.sh.in myMake.sh @ONLY)
configure_file(CTestScript.cmake.in CTestScript.cmake @ONLY)
Praetorius, Simon's avatar
Praetorius, Simon committed
755
756


757
758
# PACKAGES
# ========================================================
759
set(CPACK_PACKAGE_NAME "AMDIS")
760
set(CPACK_PACKAGE_CONTACT "Andreas.Naumann@tu-dresden.de")
761
set(CPACK_PACKAGE_VERSION "${CurrentRevision}")
762
763
set(CPACK_GENERATOR "RPM" "DEB" "TGZ")
set(CPACK_INSTALL_PREFIX "/usr/")
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
set(CPACK_RESOURCE_FILE_LICENSE "${AMDIS_SOURCE_DIR}/license.opensource.txt")

# library depends on boost, but boost libraries have version-number in name on some systems.
# so we have to find a workaround to enforce allowed boost versions
set(boost_ver ${Boost_MINOR_VERSION})
math(EXPR boost_ver_start "${Boost_MINOR_VERSION}+1")
math(EXPR boost_ver_stop "${Boost_MINOR_VERSION}+10")

set(boost_depends "libboost${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
set(boost_iostreams_depends "libboost-iostreams${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
set(boost_system_depends "libboost-system${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
set(boost_filesystem_depends "libboost-filesystem${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")

foreach(boost_ver RANGE ${boost_ver_start} ${boost_ver_stop})
  set(boost_depends "${boost_depends} | libboost${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
  set(boost_iostreams_depends "${boost_iostreams_depends} | libboost-iostreams${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
  set(boost_system_depends "${boost_system_depends} | libboost-system${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
  set(boost_filesystem_depends "${boost_filesystem_depends} | libboost-filesystem${Boost_MAJOR_VERSION}.${boost_ver}-dev (>= ${Boost_MAJOR_VERSION}.${boost_ver})")
endforeach(boost_ver)
783

784
785
configure_file(${AMDIS_SOURCE_DIR}/preinst.in 
  ${AMDIS_BINARY_DIR}/preinst 
Naumann, Andreas's avatar
Naumann, Andreas committed
786
787
  @ONLY)

788
789
configure_file(${AMDIS_SOURCE_DIR}/postrm.in 
  ${AMDIS_BINARY_DIR}/postrm 
Naumann, Andreas's avatar
Naumann, Andreas committed
790
  @ONLY)
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
  
#----Test if clang setup works----------------------------------------------------------------------
set(COMPILER_VERSION "")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  exec_program(${CMAKE_C_COMPILER} ARGS "-v" OUTPUT_VARIABLE _clang_version_info)
  string(REGEX REPLACE "^.*[ ]([0-9]+)\\.[0-9].*$" "\\1" CLANG_MAJOR "${_clang_version_info}")
  string(REGEX REPLACE "^.*[ ][0-9]+\\.([0-9]).*$" "\\1" CLANG_MINOR "${_clang_version_info}")
  set(COMPILER_VERSION "clang ${CLANG_MAJOR}.${CLANG_MINOR}")
endif()

#---Obtain the major and minor version of the GNU compiler-------------------------------------------
if (CMAKE_COMPILER_IS_GNUCXX)
  exec_program(${CMAKE_C_COMPILER} ARGS "-dumpversion" OUTPUT_VARIABLE _gcc_version_info)
  string(REGEX REPLACE "^([0-9]+).*$"                   "\\1" GCC_MAJOR ${_gcc_version_info})
  string(REGEX REPLACE "^[0-9]+\\.([0-9]+).*$"          "\\1" GCC_MINOR ${_gcc_version_info})
  string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" GCC_PATCH ${_gcc_version_info})

  if(GCC_PATCH MATCHES "\\.+")
    set(GCC_PATCH "")
  endif()
  if(GCC_MINOR MATCHES "\\.+")
    set(GCC_MINOR "")
  endif()
  if(GCC_MAJOR MATCHES "\\.+")
    set(GCC_MAJOR "")
  endif()
  set(COMPILER_VERSION "gcc ${_gcc_version_info}")
endif()
  
set(CPACK_RPM_PACKAGE_REQUIRES "boost-devel >= ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}, ${RPM_DEPEND_STR}")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "${boost_depends},\\n ${boost_iostreams_depends},\\n ${boost_system_depends},\\n ${boost_filesystem_depends}")
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "AMDiS (Adaptive Multi-Dimensional Simulations) - a C++ library to solve partial differential equations using adaptive finite elements. The main features of AMDiS are:
823
 . 
824
825
826
827
828
829
  - full adaptive meshes in 1D, 2D and 3D
  - adaptive time stepping strategies for time dependent equations
  - uses high performance Krylov subspace solvers from MTL4 and the direct solvers UMFPACK and Intel's Pardiso
  - parallelization of the overall finite element method with excelent scaling up to several thounds of processors
  - uses PETSc for solving parallel distributed linear systems
  - easy to use interface, no additional effort to run code in parallel!
830
 . 
831
832
  The library is compiled with ${COMPILER_VERSION} and compiled/linked with boost ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}.")

833
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${AMDIS_BINARY_DIR}/preinst" "${AMDIS_BINARY_DIR}/postrm")
Naumann, Andreas's avatar
Naumann, Andreas committed
834

835
include(CPack)