CMakeLists.txt 31.1 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)
Naumann, Andreas's avatar
Naumann, Andreas committed
5
6
7
8
if(POLICY CMP0042)
	cmake_policy(SET CMP0042 NEW)
endif()
	
9
10
SET(LIB_DIR ${AMDIS_SOURCE_DIR}/lib)
SET(SOURCE_DIR ${AMDIS_SOURCE_DIR}/src)
11

12
#TODO: use the cmake build type
13
SET(MTL_INCLUDE_DIR ${LIB_DIR}/mtl4/ CACHE PATH "mtl4 directory")
14

15
16
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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()
31
set(COMPILEFLAGS "-DAMDIS_VERSION=${CurrentRevision}")
32
33
34
35
36
37

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

38
39
40
41
42
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
43

44
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
45
46
option(USE_PETSC_DEV false)
option(ENABLE_ZOLTAN false)
47
option(ENABLE_SEQ_PETSC "Use sequential PETSc solvers" false)
48
option(ENABLE_UMFPACK "Use of UMFPACK solver" false)
49
option(ENABLE_HYPRE "Use HYPRE AMG solver" false)
Praetorius, Simon's avatar
Praetorius, Simon committed
50
option(ENABLE_PNG "use png reader/writer" false)
51
option(ENABLE_BDDCML "Use of BDDCML library" false)
52
option(ENABLE_EXTENSIONS "Use extensions" false)
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
53
option(ENABLE_OPENMP "Use OpenMP" false)
54
option(ENABLE_COMPRESSION "Use output compression" false)
55
option(ENABLE_OUTPUT "AMDiS output printing, disable only for debugging!" true)
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
56
57
58


mark_as_advanced(ENABLE_OUTPUT)
59
60
mark_as_advanced(ENABLE_BDDCML)
mark_as_advanced(USE_PETSC_DEV)
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
61

Naumann, Andreas's avatar
Naumann, Andreas committed
62

63
find_package(Boost 1.44 REQUIRED)
64
if(Boost_FOUND)
65
  list(APPEND AMDIS_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
66
67
68
69
70
  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")
71
  endif(WIN32)
72
  list(APPEND AMDIS_LINK_DIRS ${Boost_LIBRARY_DIRS})
73
endif(Boost_FOUND)
Naumann, Andreas's avatar
Naumann, Andreas committed
74

75

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

199
if(ENABLE_PARALLEL_DOMAIN)
200
201
202
	
	### Search for MPI compiler and get compile flags and include paths. ###

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


	### 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 ###

233
	if(ENABLE_ZOLTAN)
234
235
	  find_file(ZOLTAN_HEADER_FILE "zoltan_cpp.h" PATH ENV CPATH)
	  if(ZOLTAN_HEADER_FILE)
236
		get_filename_component(ZOLTAN_HEADER_DIR "${ZOLTAN_HEADER_FILE}" PATH CACHE)
237
		include_directories(${ZOLTAN_HEADER_DIR})
238
	  else()
239
240
241
		message(FATAL_ERROR "Could not find Zoltan include file!")
	  endif(ZOLTAN_HEADER_FILE)

242
	  list(APPEND COMPILEFLAGS "-DHAVE_ZOLTAN")
243
244
	endif(ENABLE_ZOLTAN)

245
246


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

305
306
	INSTALL(FILES ResolveCompilerPaths.cmake FindPackageMultipass.cmake FindPETSc.cmake
		DESTINATION share/amdis/)
307
	if(USE_PETSC_DEV)
308
	  list(APPEND COMPILEFLAGS "-DHAVE_PETSC_DEV")
Naumann, Andreas's avatar
Naumann, Andreas committed
309
	endif( USE_PETSC_DEV)
Naumann, Andreas's avatar
Naumann, Andreas committed
310
311
endif(ENABLE_PARALLEL_DOMAIN)

312

313
if(ENABLE_SEQ_PETSC)
314
315
316
317
318
319
320
321
322
323
324
  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)
325
  list(APPEND COMPILEFLAGS "-DHAVE_SEQ_PETSC" "-DPETSC_VERSION=${PETSC_VERSION}")
326
327
328
329
  
  list(APPEND AMDIS_SRC   
	${SOURCE_DIR}/solver/PetscSolver.cc
	${SOURCE_DIR}/solver/PetscTypes.cc)
330
endif(ENABLE_SEQ_PETSC)
331
332

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


347
if(ENABLE_HYPRE)
348
  include(HYPREConfig.cmake)
349
  message("have hypre: ${HAVE_HYPRE}")
350
351
  if (HAVE_HYPRE)
    if (NOT MPI_FOUND)
352
      find_package(MPI REQUIRED)
353
      if (MPI_FOUND)
354
355
356
357
358
359
360
361
362
363
364
	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
365
366
367
368
369
370
371
372
373
374
375
376
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
377

378
379
380
if(ENABLE_COMPRESSION)
  list(APPEND COMPILEFLAGS "-DHAVE_COMPRESSION=1")
endif(ENABLE_COMPRESSION)
381

Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
382
383
384
385
386
387
if(NOT ENABLE_OUTPUT)
       message(WARNING "AMDiS cout output disabled!")
       list(APPEND COMPILEFLAGS "-DSUPPRESS_OUTPUT")
endif(NOT ENABLE_OUTPUT)


388
if(ENABLE_BDDCML)
389
390
	SET(BDDCML_LINK_LIST "" CACHE STRING "Further libraries to be linked with BDDCML")
		
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
	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()
413

Thomas Witkowski's avatar
Thomas Witkowski committed
414
415
416
417

	find_file(BLOPEX_PATH blopex
			      HINTS ENV CPATH
			      DOC "Path to BLOPEX library.")
418
419
420
endif(ENABLE_BDDCML)


421
if(ENABLE_EXTENSIONS)
422
  option(ENABLE_BASE_PROBLEMS "Use base_problems" false)
423
424
425
426
427
428
  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()
  
429
430
431
432
433
      SET(EXTENSIONS_SRC
	      ${EXTENSIONS_DIR}/Helpers.cc
	      ${EXTENSIONS_DIR}/BackgroundMesh.cc
	      ${EXTENSIONS_DIR}/GeometryTools.cc
	      ${EXTENSIONS_DIR}/POperators.cc
434
	      ${EXTENSIONS_DIR}/SingularDirichletBC2.cc
435
	      ${EXTENSIONS_DIR}/time/ExtendedRosenbrockStationary.cc
436
437
438
	      ${EXTENSIONS_DIR}/pugixml/src/pugixml.cpp
	      ${EXTENSIONS_DIR}/preconditioner/PhaseFieldCrystal_.cc
	      ${EXTENSIONS_DIR}/preconditioner/CahnHilliard_.cc)
439
	      
440
      if(ENABLE_SEQ_PETSC)
441
442
	list(APPEND EXTENSIONS_SRC
	      ${EXTENSIONS_DIR}/preconditioner/PetscPreconPfc.cc
443
	      ${EXTENSIONS_DIR}/preconditioner/PetscPreconPfcDiag.cc
444
	      ${EXTENSIONS_DIR}/preconditioner/PetscPreconCahnHilliard.cc)
445
      endif(ENABLE_SEQ_PETSC)
446
      
447
448
      if(ENABLE_PARALLEL_DOMAIN)
	list(APPEND EXTENSIONS_SRC
Praetorius, Simon's avatar
Praetorius, Simon committed
449
# 	      ${EXTENSIONS_DIR}/preconditioner/PetscSolverNavierStokes2.cc
450
451
	      ${EXTENSIONS_DIR}/preconditioner/PetscSolverPfc.cc
	      ${EXTENSIONS_DIR}/preconditioner/PetscSolverPfc_diag.cc)
452
453
      endif(ENABLE_PARALLEL_DOMAIN)
      
454
455
456
457
458
      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
459
460
461
462
463
      if(WIN32)
	add_library(extensions STATIC ${EXTENSIONS_SRC})
      else()
	add_library(extensions SHARED ${EXTENSIONS_SRC})
      endif()
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
      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/)
481
482
483
484
485
486
487
	      
      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/)
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503

      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
504
	      DESTINATION lib/amdis/ )
505
506
507
508
509

# === baseProblems ====================================================================
      
      if(ENABLE_BASE_PROBLEMS)
	  SET(BASE_PROBLEMS_SRC
510
		  ${EXTENSIONS_DIR}/base_problems/CahnHilliard.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
511
512
		  ${EXTENSIONS_DIR}/base_problems/CahnHilliard_RB.cc
		  ${EXTENSIONS_DIR}/base_problems/CahnHilliardNavierStokes.cc
513
514
515
516
    # 	      ${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
517
		  ${EXTENSIONS_DIR}/base_problems/NavierStokesCahnHilliard.cc
518
		  ${EXTENSIONS_DIR}/base_problems/NavierStokesPhase_TaylorHood.cc
519
		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TaylorHood.cc
520
		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TaylorHood_RB.cc
521
		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TH_MultiPhase.cc
522
		  ${EXTENSIONS_DIR}/base_problems/NavierStokes_TH_MultiPhase_RB.cc
Praetorius, Simon's avatar
Praetorius, Simon committed
523
		  ${EXTENSIONS_DIR}/base_problems/PhaseFieldCrystal.cc
524
		  ${EXTENSIONS_DIR}/base_problems/PhaseFieldCrystal_Phase.cc
525
526
527
		  ${EXTENSIONS_DIR}/base_problems/PhaseFieldCrystal_RB.cc
		  ${EXTENSIONS_DIR}/base_problems/PolarizationField.cc
		  ${EXTENSIONS_DIR}/base_problems/QuasiCrystal.cc)
528
529
	list(APPEND COMPILEFLAGS "-DHAVE_BASE_PROBLEMS=1")
	list(APPEND AMDIS_INCLUDE_DIRS ${EXTENSIONS_DIR}/base_problems)
Praetorius, Simon's avatar
Praetorius, Simon committed
530
531
532
533
534
	if(WIN32)
	  add_library(base_problems STATIC ${BASE_PROBLEMS_SRC})
	else()
	  add_library(base_problems SHARED ${BASE_PROBLEMS_SRC})
	endif()
535
536
537
538
539
540
541
542
543
544
545
546
	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
547
		DESTINATION lib/amdis/ )
548
    
549
550
551
      endif(ENABLE_BASE_PROBLEMS)
    endif()
  endif()
552
553
endif(ENABLE_EXTENSIONS)

554

Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
555
if(ENABLE_OPENMP)
Thomas Witkowski's avatar
Thomas Witkowski committed
556
557
558
559
560
  if(CMAKE_CXX_COMPILER MATCHES ".*icpc")
	list(APPEND COMPILEFLAGS "-openmp")
  else()
        list(APPEND COMPILEFLAGS "-fopenmp")
  endif()
Thomas Witkowski's avatar
Blub  
Thomas Witkowski committed
561
562
endif(ENABLE_OPENMP)

563
SET(COMPOSITE_SOURCE_DIR ${SOURCE_DIR}/compositeFEM)
Thomas Witkowski's avatar
Thomas Witkowski committed
564
565
566
567
568
569
570
571
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
572
573
		      ${COMPOSITE_SOURCE_DIR}/SubElementAssembler.cc )

574
575
576
577
set(REINIT_SOURCE_DIR ${SOURCE_DIR}/reinit)
file(GLOB REINIT_SRC ${REINIT_SOURCE_DIR}/*.cc)
include_directories(${REINIT_SOURCE_DIR})

578
579

#muparser includes
580
set(MUPARSER_SOURCE_DIR ${AMDIS_SOURCE_DIR}/lib/muparser_v134)
581
file(GLOB MUPARSER_SRC ${MUPARSER_SOURCE_DIR}/src/*.cpp)
582
list(APPEND AMDIS_INCLUDE_DIRS ${MUPARSER_SOURCE_DIR}/include)
583

Naumann, Andreas's avatar
Naumann, Andreas committed
584
#mtl4 includes
585
list(APPEND AMDIS_INCLUDE_DIRS ${MTL_INCLUDE_DIR})
586
#include_directories(${MTL_INCLUDE_DIR})
587
list(APPEND AMDIS_INCLUDE_DIRS ${SOURCE_DIR})
588

589
#include_directories(${SOURCE_DIR})
590
include_directories(${AMDIS_INCLUDE_DIRS})
Naumann, Andreas's avatar
Naumann, Andreas committed
591

Praetorius, Simon's avatar
Praetorius, Simon committed
592
593
594
595
596
597
598
599
600
601
602
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()
603

Praetorius, Simon's avatar
Praetorius, Simon committed
604
605
#target_link_libraries(compositeFEM amdis)
#target_link_libraries(reinit amdis)
606
list(APPEND AMDIS_LIBS amdis ${Boost_LIBRARIES})
607

608
if(WIN32)
609
	list(APPEND COMPILEFLAGS "-D_SCL_SECURE_NO_WARNINGS" "-D_CRT_SECURE_NO_WARNINGS")
610
endif(WIN32)
611
612
613
614
615
616
617
618
619
620
621
622


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

623
message("compileflags: ${COMPILEFLAGS}")
624
625
#SET_TARGET_PROPERTIES(amdis PROPERTIES COMPILE_FLAGS "${COMPILEFLAGS}")
add_definitions(${COMPILEFLAGS})
626

Naumann, Andreas's avatar
Naumann, Andreas committed
627
628
629
630
if(ENABLE_MARMOT)
	Message("please set marmotcc manually")
endif(ENABLE_MARMOT)

631
#dont change this destination. the GUI depends on it to guess the buildsystem
632

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

638
FILE(GLOB HEADERS "${SOURCE_DIR}/*.hh")
639
640
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
641

642
FILE(GLOB HEADERS "${SOURCE_DIR}/parallel/*.h")
643
644
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/parallel/)
Naumann, Andreas's avatar
Naumann, Andreas committed
645
646
list(APPEND deb_add_dirs "include/amdis/parallel")

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

652
653
654
655
656
FILE(GLOB HEADERS "${SOURCE_DIR}/est/*.h")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/est/)
list(APPEND deb_add_dirs "include/amdis/est")

657
FILE(GLOB HEADERS "${SOURCE_DIR}/expressions/*.h*")
658
659
660
661
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/expressions/)
list(APPEND deb_add_dirs "include/amdis/expressions")

662
663
664
665
666
667
668
669
670
671
FILE(GLOB HEADERS "${SOURCE_DIR}/operations/*.h*")
INSTALL(FILES ${HEADERS} 
	DESTINATION include/amdis/operations/)
list(APPEND deb_add_dirs "include/amdis/operations")

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

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

677
678
679
680
681
682
683
684
685
686
687
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")
688
INSTALL(FILES ${HEADERS} 
689
690
	DESTINATION include/amdis/solver/itl)
list(APPEND deb_add_dirs "include/amdis/solver/itl")
Naumann, Andreas's avatar
Naumann, Andreas committed
691

692
FILE(GLOB HEADERS "${SOURCE_DIR}/io/*.h")
Naumann, Andreas's avatar
Naumann, Andreas committed
693
694
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/io)
Naumann, Andreas's avatar
Naumann, Andreas committed
695
696
list(APPEND deb_add_dirs "include/amdis/io")

697
FILE(GLOB HEADERS "${SOURCE_DIR}/io/*.hh")
Naumann, Andreas's avatar
Naumann, Andreas committed
698
699
INSTALL(FILES ${HEADERS}
	DESTINATION include/amdis/io)
700
701
702
703
704
	
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")        
705

Praetorius, Simon's avatar
Praetorius, Simon committed
706
707
708
709
710
711
712
713
714
715
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")

716
717
718
719
720
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
721
list(APPEND deb_add_dirs "lib/amdis")
722
install(TARGETS amdis compositeFEM reinit muparser
Praetorius, Simon's avatar
Praetorius, Simon committed
723
	DESTINATION lib/amdis/ )
Praetorius, Simon's avatar
Praetorius, Simon committed
724

725
726
configure_file(${AMDIS_SOURCE_DIR}/AMDISConfig.cmake.in
		${AMDIS_BINARY_DIR}/AMDISConfig.cmake
727
728
		@ONLY
	      )
729

730
INSTALL(FILES ${AMDIS_BINARY_DIR}/AMDISConfig.cmake 
731
	DESTINATION share/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
732
733
list(APPEND deb_add_dirs "share/amdis/")

734
735
736
737
# INSTALL(FILES ${AMDIS_SOURCE_DIR}/AMDISUse.cmake 
# 	DESTINATION share/amdis/)
FILE(GLOB CMAKE_FILES "${AMDIS_SOURCE_DIR}/*.cmake")
INSTALL(FILES ${CMAKE_FILES}
738
	DESTINATION share/amdis/)
Naumann, Andreas's avatar
Naumann, Andreas committed
739

740
#install mtl
741
INSTALL(DIRECTORY ${AMDIS_SOURCE_DIR}/lib/mtl4/
742
743
744
745
746
747
	DESTINATION include/amdis/mtl4/
	FILES_MATCHING PATTERN "*.hpp"
	PATTERN ".svn" EXCLUDE
	PATTERN ".svn/*" EXCLUDE
	PATTERN "mtl4/libs" EXCLUDE
	PATTERN "mtl4/extern" EXCLUDE
748
       )
Naumann, Andreas's avatar
Naumann, Andreas committed
749
FILE(GLOB_RECURSE mtl4_files 
750
751
		RELATIVE ${AMDIS_SOURCE_DIR}/lib/mtl4/boost/ 
		${AMDIS_SOURCE_DIR}/lib/mtl4/boost/*.hpp)
Naumann, Andreas's avatar
Naumann, Andreas committed
752
753
foreach(mtl4_file in ${mtl4_files})
 get_filename_component(mtl4File_path ${mtl4_file} PATH)
754
 list(APPEND deb_add_dirs "include/amdis/mtl4/boost/${mtl4File_path}")
Naumann, Andreas's avatar
Naumann, Andreas committed
755
endforeach(mtl4_file)
756
757
758
759
760
761

#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
762
list(REMOVE_DUPLICATES deb_add_dirs)
763

Praetorius, Simon's avatar
Praetorius, Simon committed
764
765
ENABLE_TESTING()
INCLUDE(CTest)
766
767
768
INCLUDE(Dart)
if(NOT CTEST_MODEL)
        set(CTEST_MODEL "Experimental")
Praetorius, Simon's avatar
Praetorius, Simon committed
769
endif()
770
771
if( NOT N_TEST_PROC) 
	set(N_TEST_PROC "8")
Praetorius, Simon's avatar
Praetorius, Simon committed
772
endif()
773
774
configure_file(myMake.sh.in myMake.sh @ONLY)
configure_file(CTestScript.cmake.in CTestScript.cmake @ONLY)
Praetorius, Simon's avatar
Praetorius, Simon committed
775
776


777
778
# PACKAGES
# ========================================================
779
set(CPACK_PACKAGE_NAME "AMDIS")
780
set(CPACK_PACKAGE_CONTACT "Andreas.Naumann@tu-dresden.de")
781
set(CPACK_PACKAGE_VERSION "${CurrentRevision}")
782
783
set(CPACK_GENERATOR "RPM" "DEB" "TGZ")
set(CPACK_INSTALL_PREFIX "/usr/")
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
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)
803

804
805
configure_file(${AMDIS_SOURCE_DIR}/preinst.in 
  ${AMDIS_BINARY_DIR}/preinst 
Naumann, Andreas's avatar
Naumann, Andreas committed
806
807
  @ONLY)

808
809
configure_file(${AMDIS_SOURCE_DIR}/postrm.in 
  ${AMDIS_BINARY_DIR}/postrm 
Naumann, Andreas's avatar
Naumann, Andreas committed
810
  @ONLY)
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
  
#----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:
843
 . 
844
845
846
847
848
849
  - 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!
850
 . 
851
852
  The library is compiled with ${COMPILER_VERSION} and compiled/linked with boost ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}.")

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

855
include(CPack)