Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/CMakeLists.txt
5229 views
1
#
2
# CMake configuration script for Elmer
3
#
4
# Authors:
5
# Sami Ilvonen, CSC - IT Center for Science, Ltd.
6
# Phil Weir, NUMA Engineering Services, Ltd.
7
# Mikko Byckling, CSC - IT Center for Science Ltd.
8
# Juhani Kataja, CSC - IT Center for Science Ltd.
9
# Thomas Zwinger, CSC - IT Center for Science Ltd.
10
#
11
# First public beta release 11th of October, 2013
12
#
13
14
IF(NOT CMAKE_BUILD_TYPE)
15
SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Build type (Release, Debug, RelWithDebugInfo, MinSizeRel)")
16
ENDIF()
17
18
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
19
20
if(POLICY CMP0074)
21
cmake_policy(SET CMP0074 NEW)
22
endif()
23
24
PROJECT(Elmer Fortran C CXX)
25
26
IF(APPLE)
27
SET(CMAKE_MACOSX_RPATH 1)
28
ENDIF()
29
30
# Allow users to ignore package managers on macOS
31
option(USE_MACOS_PACKAGE_MANAGER "Search for packages that are installed with Homebrew or MacPorts on macOS" ON)
32
33
#shamelessly borrowed from FreeCAD project: https://github.com/FreeCAD/FreeCAD/blob/master/cMake/FreeCAD_Helpers/SetupPython.cmake
34
# For building on OS X
35
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND USE_MACOS_PACKAGE_MANAGER)
36
37
# If the user doesn't tell us which package manager they're using
38
if(NOT DEFINED MACPORTS_PREFIX AND NOT DEFINED HOMEBREW_PREFIX)
39
40
# Try to find MacPorts path
41
find_program(MACPORTS_EXECUTABLE port)
42
if(EXISTS ${MACPORTS_EXECUTABLE})
43
string(REPLACE "/bin/port" ""
44
MACPORTS_PREFIX ${MACPORTS_EXECUTABLE})
45
message(STATUS "Detected MacPorts install at ${MACPORTS_PREFIX}")
46
endif(EXISTS ${MACPORTS_EXECUTABLE})
47
48
# Try to find Homebrew path
49
find_program(HOMEBREW_EXECUTABLE brew)
50
if(EXISTS ${HOMEBREW_EXECUTABLE})
51
string(REPLACE "/bin/brew" ""
52
HOMEBREW_PREFIX ${HOMEBREW_EXECUTABLE})
53
message(STATUS "Detected Homebrew install at ${HOMEBREW_PREFIX}")
54
endif()
55
56
endif(NOT DEFINED MACPORTS_PREFIX AND NOT DEFINED HOMEBREW_PREFIX)
57
58
# In case someone tries to shoot themselves in the foot
59
if(DEFINED MACPORTS_PREFIX AND DEFINED HOMEBREW_PREFIX)
60
message(SEND_ERROR "Multiple package management systems detected - ")
61
message(SEND_ERROR "define either MACPORTS_PREFIX or HOMEBREW_PREFIX")
62
63
# No package manager
64
elseif(NOT DEFINED MACPORTS_PREFIX AND NOT DEFINED HOMEBREW_PREFIX)
65
message(SEND_ERROR "No package manager detected - install MacPorts or Homebrew")
66
endif()
67
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND USE_MACOS_PACKAGE_MANAGER)
68
# endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
69
70
71
# SET(CMAKE_MODULE_PATH "${CMAKE_ROOT}/Modules;${PROJECT_SOURCE_DIR}/cmake/Modules")
72
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/Modules;${CMAKE_ROOT}/Modules")
73
74
SET(CMAKE_Fortran_MODULE_DIRECTORY
75
${PROJECT_BINARY_DIR}/fmodules CACHE PATH "Directory for Fortran modules")
76
77
# Require minimum standard version
78
SET(CMAKE_C_STANDARD 99)
79
SET(CMAKE_C_STANDARD_REQUIRED ON)
80
SET(CMAKE_CXX_STANDARD 11)
81
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
82
83
# Defaults to cache variables
84
SET(WITH_MPI TRUE CACHE BOOL "Use MPI parallelization")
85
SET(MPI_TEST_MAXPROC 8 CACHE STRING "Maximum number of tasks used in parallel tests")
86
SET(MPI_TEST_MINPROC 1 CACHE STRING "Minimum number of tasks used in parallel tests")
87
SET(WITH_OpenMP FALSE CACHE BOOL "Use OpenMP thread and SIMD (if available) parallelization")
88
SET(WITH_MKL FALSE CACHE BOOL "Use Intel Math Kernel library")
89
OPTION(HAVE_QP "Fortran compiler and runtime support quadruple-precision floating-point numbers" ON)
90
SET(WITH_Mumps FALSE CACHE BOOL "Use Mumps sparse direct solver")
91
SET(WITH_Hypre FALSE CACHE BOOL "Use Hypre linear algebra library")
92
SET(WITH_CHOLMOD FALSE CACHE BOOL "Use CHOLMOD linear algebra library")
93
SET(WITH_UMFPACK TRUE CACHE BOOL "Use UMFPACK for LU factorization")
94
SET(WITH_ELMERGUI FALSE CACHE BOOL "Include ElmerGUI")
95
SET(WITH_ElmerIce FALSE CACHE BOOL "Include ElmerIce")
96
SET(WITH_XIOS FALSE CACHE BOOL "Include XIOS")
97
SET(WITH_NETCDF FALSE CACHE BOOL "Include NetCDF")
98
SET(WITH_ELMERGUITESTER FALSE CACHE BOOL "Include ElmerGUI tester")
99
SET(WITH_ELMERGUILOGGER FALSE CACHE BOOL "Include ElmerGUI logger")
100
SET(ELMER_INSTALL_LIB_DIR "lib/elmersolver" CACHE PATH "Location of elmer shared libraries relative to prefix.")
101
SET(WITH_Trilinos FALSE CACHE BOOL "Use Trilinos")
102
SET(WITH_FETI4I FALSE CACHE BOOL "Use FETI4I")
103
SET(WITH_ELMERPOST FALSE CACHE BOOL "Include ElmerPost (DEPRECATED)")
104
SET(WITH_CONTRIB FALSE CACHE BOOL "Include contributed solvers")
105
106
SET(WITH_LUA FALSE CACHE BOOL "Include LUA extensions.")
107
SET(WITH_MMG FALSE CACHE BOOL "Compile with MMG library.")
108
SET(WITH_PARMMG FALSE CACHE BOOL "Compile with PARMMG library.")
109
SET(WITH_ROCALUTION FALSE CACHE BOOL "Compile with Rocalution library.")
110
111
SET(WITH_Zoltan FALSE CACHE BOOL "Link in Zoltan mesh repartitioning library.")
112
SET(USE_SYSTEM_ZOLTAN FALSE CACHE BOOL "Use system Zoltan library")
113
114
SET(INCLUDE_ELMER_MODULES "" CACHE STRING "Semicolon separated list of solver modules to be compiled. If empty compile all.")
115
116
# Let user select if the contiguous attribute is used or not
117
SET(USE_CONTIGUOUS FALSE CACHE BOOL "Use contiguous attribute")
118
119
MARK_AS_ADVANCED(WITH_ELMERPOST)
120
121
# if("${CMAKE_VERSION}" VERSION_GREATER 2.8.12)
122
# CMAKE_POLICY(SET CMP0022 OLD)
123
# ENDIF()
124
125
OPTION (USE_NEW_POLICY_CMP0057 "Option to enable new policy CMP0057" ON)
126
IF (USE_NEW_POLICY_CMP0057)
127
CMAKE_POLICY(SET CMP0057 NEW)
128
ENDIF()
129
130
MARK_AS_ADVANCED(ELMER_INSTALL_LIB_DIR)
131
132
INCLUDE(CTest)
133
134
SET(ELMER_FEM_MAJOR_VERSION 26)
135
SET(ELMER_FEM_MINOR_VERSION 1)
136
137
SET(ELMER_FEM_VERSION
138
${ELMER_FEM_MAJOR_VERSION}.${ELMER_FEM_MINOR_VERSION})
139
140
IF(NOT(ELMER_FEM_REVISION))
141
SET(RESET_ELMER_REVISION TRUE CACHE BOOL "")
142
MARK_AS_ADVANCED(RESET_ELMER_REVISION)
143
ENDIF()
144
145
IF(RESET_ELMER_REVISION)
146
execute_process(
147
COMMAND "git" "--no-pager" "log" "-1" "--pretty=format:%h"
148
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
149
OUTPUT_VARIABLE ELMER_FEM_REVISION_
150
RESULT_VARIABLE RUN_RETURN_VALUE)
151
IF(RUN_RETURN_VALUE EQUAL 0)
152
SET(ELMER_FEM_REVISION ${ELMER_FEM_REVISION_} CACHE STRING "" FORCE)
153
MARK_AS_ADVANCED(ELMER_FEM_REVISION)
154
ENDIF()
155
ENDIF()
156
157
IF(NOT(ELMER_FEM_BRANCH))
158
SET(RESET_ELMER_BRANCH TRUE CACHE BOOL "")
159
MARK_AS_ADVANCED(RESET_ELMER_BRANCH)
160
ENDIF()
161
162
163
IF(RESET_ELMER_BRANCH)
164
execute_process(
165
COMMAND "git" "branch" "--show-current"
166
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
167
OUTPUT_STRIP_TRAILING_WHITESPACE
168
OUTPUT_VARIABLE ELMER_FEM_BRANCH_
169
RESULT_VARIABLE RUN_RETURN_VALUE)
170
IF(RUN_RETURN_VALUE EQUAL 0)
171
SET(ELMER_FEM_BRANCH ${ELMER_FEM_BRANCH_} CACHE STRING "" FORCE)
172
MARK_AS_ADVANCED(ELMER_FEM_BRANCH)
173
ENDIF()
174
ENDIF()
175
176
SET(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
177
STRING(TIMESTAMP ELMER_FEM_COMPILATIONDATE "%Y-%m-%d")
178
SET(COMPILATIONDATE ${ELMER_FEM_COMPILATIONDATE})
179
180
# Check that the gfortran version is >= 7
181
IF(${CMAKE_Fortran_COMPILER_ID} MATCHES "GNU")
182
INCLUDE(testGFortranVersion)
183
IF(NOT CMAKE_Fortran_COMPILER_GNU_VERSION_OK)
184
MESSAGE(FATAL_ERROR "GNU Fortran major version is too old, should be at least 7")
185
ENDIF()
186
ENDIF()
187
188
IF(WITH_LUA)
189
IF(NOT(${USE_SYSTEM_LUA}))
190
ADD_SUBDIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/contrib/lua-5.1.5/)
191
set(LUA_LIBRARIES luaelmer CACHE STRING "")
192
set(LUA_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/contrib/lua-5.1.5/src CACHE STRING "")
193
ELSE()
194
FIND_PACKAGE(Lua51 REQUIRED)
195
ENDIF()
196
SET(HAVE_LUA TRUE)
197
MARK_AS_ADVANCED(HAVE_LUA)
198
ENDIF()
199
200
IF(WITH_EXTOPTIM)
201
SET(HAVE_EXTOPTIM TRUE)
202
ENDIF()
203
204
IF(WITH_OpenMP)
205
FIND_PACKAGE(OpenMP REQUIRED)
206
207
# FIXME: Should link to the CMake targets instead
208
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
209
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${OpenMP_Fortran_FLAGS}")
210
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
211
212
# Set variables for supported OpenMP version
213
IF(OpenMP_Fortran_VERSION VERSION_GREATER_EQUAL 4.0)
214
SET(HAVE_OPENMP40 TRUE)
215
MARK_AS_ADVANCED(HAVE_OPENMP40)
216
IF(OpenMP_Fortran_VERSION VERSION_GREATER_EQUAL 4.5)
217
SET(HAVE_OPENMP45 TRUE)
218
MARK_AS_ADVANCED(HAVE_OPENMP45)
219
ENDIF()
220
ENDIF()
221
ENDIF()
222
223
# Get rid of the annoying rank mismatch warning
224
IF("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU")
225
IF(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER 9.9)
226
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch")
227
# SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy")
228
ENDIF()
229
ENDIF()
230
231
232
# Import targets with information for using MPI or the MPI stub
233
ADD_LIBRARY(Elmer::MPI_Fortran INTERFACE IMPORTED)
234
ADD_LIBRARY(Elmer::MPI_C INTERFACE IMPORTED)
235
ADD_LIBRARY(Elmer::MPI_CXX INTERFACE IMPORTED)
236
IF(WITH_MPI)
237
# Advanced properties
238
MARK_AS_ADVANCED(
239
MPI_EXTRA_LIBRARY
240
MPI_LIBRARY
241
)
242
243
FIND_PACKAGE(MPI REQUIRED)
244
245
# Check features of found MPI
246
INCLUDE(testMPIcapabilities)
247
IF(ELMER_BROKEN_MPI_IN_PLACE)
248
ADD_DEFINITIONS(-DELMER_BROKEN_MPI_IN_PLACE)
249
ENDIF()
250
251
TARGET_LINK_LIBRARIES(Elmer::MPI_Fortran INTERFACE MPI::MPI_Fortran)
252
TARGET_LINK_LIBRARIES(Elmer::MPI_C INTERFACE MPI::MPI_C)
253
TARGET_LINK_LIBRARIES(Elmer::MPI_CXX INTERFACE MPI::MPI_CXX)
254
ENDIF(WITH_MPI)
255
256
257
IF (WITH_ROCALUTION)
258
259
IF(NOT WITH_MPI)
260
MESSAGE(FATAL_ERROR "Building with rocALUTION requires MPI")
261
ENDIF()
262
263
MESSAGE(STATUS "------------------------------------------------")
264
MESSAGE(STATUS "Looking for rocALUTION installation")
265
266
FIND_PACKAGE(rocalution REQUIRED)
267
268
MESSAGE(STATUS " rocALUTION: " "${rocalution_FOUND}")
269
MESSAGE(STATUS " rocALUTION_INC: " "${ROCALUTION_INCLUDE_DIR}")
270
MESSAGE(STATUS " rocALUTION_LIB: " "${ROCALUTION_LIBRARY}")
271
272
SET(HAVE_ROCALUTION TRUE CACHE BOOL "")
273
MARK_AS_ADVANCED(HAVE_ROCALUTION)
274
ENDIF()
275
276
277
IF(WITH_AMGX)
278
FIND_PACKAGE(AMGX)
279
ENDIF()
280
281
IF(WITH_CHOLMOD)
282
FIND_PACKAGE(CHOLMOD)
283
FIND_PACKAGE(SPQR)
284
ENDIF()
285
286
# if(APPLE)
287
# # message(STATUS "Trying to find Accelerate library")
288
# # find_library(BLAS_LIBRARIES Accelerate HINTS /System/Library/Frameworks/Accelerate.framework)
289
# # MARK_AS_ADVANCED(BLAS_LIBRARIES)
290
# # set(BLAS_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -framework accelerate")
291
# # find_path(LAPACK_INCLUDE_DIRS
292
# # NAMES clapack.h
293
# # PATHS ${BLAS_INCLUDE_DIRS}
294
# # NO_DEFAULT_PATH
295
# # )
296
# # set(LAPACK_HEADER ${LAPACK_INCLUDE_DIRS}/clapack.h)
297
# # set(LAPACK_SUFFIX "_")
298
# # set(LAPACK_PREFIX)
299
300
# # message(STATUS "Using Accelerate framework on macOS")
301
# message("using the local blas library")
302
# # option(BLAS_VERBOSE "Print some additional information during BLAS libraries detection" ON)
303
# set(BLAS_DIR "./mathlibs/src/blas/")
304
# set(BLA_VENDOR "Generic")
305
306
# set(ACCELERATE_LIBS "-framework Accelerate")
307
# BLAS_Accelerate_LIBRARY:FILEPATH=/System/Library/Frameworks/Accelerate.framework
308
309
310
# else()
311
IF(WITH_MKL)
312
# Find MKL
313
FIND_PACKAGE(MKL REQUIRED)
314
SET(HAVE_MKL TRUE)
315
MARK_AS_ADVANCED(HAVE_MKL)
316
# Set BLAS and LAPACK to point to MKL
317
SET(BLAS_LIBRARIES ${MKL_BLAS_LIBRARIES} CACHE FILEPATH "")
318
SET(LAPACK_LIBRARIES ${MKL_LAPACK_LIBRARIES} CACHE FILEPATH "")
319
IF(MKL_SCALAPACK_LIBRARIES_FOUND)
320
SET(SCALAPACK_LIBRARIES ${MKL_SCALAPACK_LIBRARIES})
321
# Versions >11.1 of MKL include Cluster PARDISO direct solver
322
IF(MKL_CPARDISO_FOUND)
323
SET(HAVE_CPARDISO TRUE)
324
MARK_AS_ADVANCED(HAVE_CPARDISO)
325
ENDIF()
326
ENDIF()
327
INCLUDE_DIRECTORIES(${MKL_INCLUDE_DIR})
328
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${MKL_Fortran_FLAGS}")
329
ELSE()
330
IF (NOT BLAS_LIBRARIES OR NOT LAPACK_LIBRARIES)
331
# If BLAS/LAPACK not explicitly set, attempt to find MKL BLAS/LAPACK
332
FIND_PACKAGE(MKL QUIET)
333
IF (MKL_BLAS_LIBRARIES_FOUND AND MKL_LAPACK_LIBRARIES_FOUND)
334
# Set BLAS and LAPACK to point to MKL, in order to work around
335
# CMake FindBLAS finding wrong core library for GNU Fortran
336
SET(BLAS_LIBRARIES ${MKL_BLAS_LIBRARIES} CACHE FILEPATH "")
337
SET(LAPACK_LIBRARIES ${MKL_LAPACK_LIBRARIES} CACHE FILEPATH "")
338
INCLUDE_DIRECTORIES(${MKL_INCLUDE_DIR})
339
SET(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${MKL_Fortran_FLAGS}")
340
ENDIF()
341
ENDIF()
342
ENDIF()
343
# endif(APPLE)
344
345
# MARK_AS_ADVANCED(WITH_Trilinos)
346
IF(WITH_Trilinos)
347
IF(NOT WITH_MPI)
348
MESSAGE(FATAL_ERROR "Building with Trilinos requires MPI.")
349
ENDIF()
350
FIND_PACKAGE(ML REQUIRED PATHS ${TRILINOS_PATH}/lib/cmake/ML ${TRILINOS_PATH})
351
FIND_PACKAGE(Trilinos REQUIRED PATHS ${TRILINOS_PATH}/lib/cmake/Trilinos ${TRILINOS_PATH})
352
FIND_PACKAGE(Belos REQUIRED PATHS ${TRILINOS_PATH}/lib/cmake/Belos ${TRILINOS_PATH})
353
IF(ML_DIR)
354
ADD_DEFINITIONS(-DHAVE_TRILINOS)
355
ENDIF()
356
ENDIF()
357
358
IF(WITH_Zoltan)
359
# ZOLTAN Remeshing
360
MESSAGE(STATUS "------------------------------------------------")
361
IF(NOT USE_SYSTEM_ZOLTAN)
362
MESSAGE(STATUS "Building Zoltan mesh repartitioner")
363
ADD_SUBDIRECTORY(contrib/Zoltan_v3.83)
364
SET(HAVE_ZOLTAN TRUE CACHE BOOL "Has Zoltan tools for mesh (re)partitioning" )
365
MARK_AS_ADVANCED(HAVE_ZOLTAN)
366
MESSAGE(STATUS " Zoltan library: " "${ZOLTAN_LIBRARY}")
367
MESSAGE(STATUS "------------------------------------------------")
368
ELSE()
369
FIND_PACKAGE(Zoltan)
370
IF(Zoltan_FOUND)
371
SET(HAVE_ZOLTAN TRUE CACHE BOOL "Has Zoltan tools for mesh (re)partitioning" )
372
INCLUDE_DIRECTORIES(${ZOLTAN_INCLUDE_DIR})
373
MESSAGE(STATUS "------------------------------------------------")
374
ELSE()
375
MESSAGE(STATUS " Zoltan library not found. ")
376
MESSAGE(STATUS " Missing: <ZOLTAN_INCLUDE_DIR> or <ZOLTAN_LIBRARY>")
377
ENDIF(Zoltan_FOUND)
378
MESSAGE(STATUS "------------------------------------------------")
379
ENDIF()
380
ENDIF(WITH_Zoltan)
381
382
383
IF(WITH_NETCDF)
384
# ---------------------- #
385
# -- NETCDF libraries -- #
386
#----------------------- #
387
MESSAGE(STATUS "------------------------------------------------")
388
MESSAGE(STATUS "Elmer/Ice package: Looking for [NETCDF] & [NETCDF Fortran] libraries")
389
390
391
FIND_PACKAGE(NETCDF)
392
393
IF(NETCDF_FOUND)
394
395
SET(HAVE_NETCDF TRUE CACHE BOOL "Has NETCDF for Elmer/Ice Output" )
396
GET_FILENAME_COMPONENT(NETCDF_LIBDIR ${NETCDF_LIBRARY} DIRECTORY)
397
GET_FILENAME_COMPONENT(NETCDFF_LIBDIR ${NETCDFF_LIBRARY} DIRECTORY)
398
399
MARK_AS_ADVANCED(HAVE_NETCDF)
400
INCLUDE_DIRECTORIES(${NETCDF_INCLUDE_DIR})
401
ADD_DEFINITIONS(-DHAVE_NETCDF)
402
403
MESSAGE(STATUS " NETCDF: " "${NETCDF_FOUND}")
404
MESSAGE(STATUS " NETCDF_INC: " "${NETCDF_INCLUDE_DIR}")
405
MESSAGE(STATUS " NETCDF_LIBS: " "${NETCDF_LIBRARIES}")
406
ELSE()
407
MESSAGE(STATUS "Library not found: >NETCDF_FOUND< ")
408
MESSAGE(WARNING " \n Missing: >NETCDF_INCLUDE_DIR< , >NETCDF_LIBRARY<, >NETCDFF_LIBRARY< \n some functionalities will be disabled")
409
ENDIF(NETCDF_FOUND)
410
411
IF(NETCDF_FOUND)
412
# ---------------------- #
413
# -- HDF5 libraries -- #
414
#----------------------- #
415
MESSAGE(STATUS "------------------------------------------------")
416
MESSAGE(STATUS "Elmer/Ice package: Looking for [HDF5] & [HDF5 Fortran] libraries")
417
418
FIND_PACKAGE(PHDF5)
419
420
IF(PHDF5_FOUND)
421
422
SET(HAVE_HDF5 TRUE CACHE BOOL "Has HDF5 for Elmer/Ice Output" )
423
GET_FILENAME_COMPONENT(PHDF5_LIBDIR ${PHDF5_LIBRARY} DIRECTORY)
424
GET_FILENAME_COMPONENT(PHDF5HL_LIBDIR ${PHDF5HL_LIBRARY} DIRECTORY)
425
426
MARK_AS_ADVANCED(HAVE_HDF5)
427
INCLUDE_DIRECTORIES(${PHDF5_INCLUDE_DIR})
428
ADD_DEFINITIONS(-DHAVE_HDF5)
429
430
MESSAGE(STATUS " HDF5: " "${PHDF5_FOUND}")
431
MESSAGE(STATUS " HDF5_INC: " "${PHDF5_INCLUDE_DIR}")
432
MESSAGE(STATUS " HDF5_LIBS: " "${PHDF5_LIBRARIES}")
433
ELSE()
434
MESSAGE(STATUS "Library not found: >HDF5_FOUND< ")
435
MESSAGE(WARNING " \n Missing: >HDF5_INCLUDE_DIR< , >HDF5_LIBRARY<, >HDF5F_LIBRARY< \n some functionalities will be disabled")
436
ENDIF(PHDF5_FOUND)
437
ENDIF(NETCDF_FOUND)
438
439
ENDIF(WITH_NETCDF)
440
441
# MMG Remeshing
442
IF(WITH_MMG)
443
MESSAGE(STATUS "------------------------------------------------")
444
MESSAGE(STATUS "Mesh adaptation 2D/3D looking for [Mmg] tools ")
445
FIND_PACKAGE(MMG)
446
# INCLUDE("cmake/Modules/FindMMG.cmake")
447
# INCLUDE_DIRECTORIES(${MMG_INCLUDE_DIR})
448
# TARGET_LINK_LIBRARIES( ${YOUR_TARGET} ${MMG_LIBRARY})
449
IF(MMG_FOUND)
450
451
SET(HAVE_MMG TRUE CACHE BOOL "Has Mmg tools for Elmer/Ice Mesh adaptation" )
452
GET_FILENAME_COMPONENT(MMG_LIBDIR ${MMG_LIBRARY} DIRECTORY)
453
454
MARK_AS_ADVANCED(HAVE_MMG)
455
MESSAGE(STATUS " Mmg: " "${MMG_FOUND}")
456
MESSAGE(STATUS " Mmg_INC: " "${MMG_INCLUDE_DIR}")
457
MESSAGE(STATUS " Mmg_LIB: " "${MMG_LIBRARY}")
458
MESSAGE(STATUS " Mmg_LIBDIR: " "${MMG_LIBDIR}")
459
MESSAGE(STATUS "Compile MMG2DSolver/MMG3DSolver")
460
ADD_DEFINITIONS(-DHAVE_MMG)
461
462
INCLUDE_DIRECTORIES(${MMG_INCLUDE_DIR})
463
MESSAGE(STATUS "------------------------------------------------")
464
465
ELSE()
466
SET(HAVE_MMG FALSE)
467
MESSAGE(STATUS " Library not found: >MMG_FOUND< ")
468
MESSAGE(STATUS " Missing: >MMG_INCLUDE_DIR< , >MMG_LIBRARY<, to compile MMG3DSolver")
469
ENDIF(MMG_FOUND)
470
471
MESSAGE(STATUS "------------------------------------------------")
472
473
IF (WITH_PARMMG)
474
FIND_PACKAGE(PARMMG)
475
IF(PARMMG_FOUND)
476
477
SET(HAVE_PARMMG TRUE CACHE BOOL "Has ParMmg tools for Elmer/Ice Mesh adaptation" )
478
GET_FILENAME_COMPONENT(PARMMG_LIBDIR ${PARMMG_LIBRARY} DIRECTORY)
479
480
MARK_AS_ADVANCED(HAVE_PARMMG)
481
MESSAGE(STATUS " ParMmg: " "${PARMMG_FOUND}")
482
MESSAGE(STATUS " ParMmg_INC: " "${PARMMG_INCLUDE_DIR}")
483
MESSAGE(STATUS " ParMmg_LIB: " "${PARMMG_LIBRARY}")
484
MESSAGE(STATUS " ParMmg_LIBDIR: " "${PARMMG_LIBDIR}")
485
#MESSAGE(STATUS "Compile MMG2DSolver/MMG3DSolver")
486
ADD_DEFINITIONS(-DHAVE_PARMMG)
487
488
INCLUDE_DIRECTORIES(${PARMMG_INCLUDE_DIR})
489
MESSAGE(STATUS "------------------------------------------------")
490
ELSE()
491
SET(HAVE_PARMMG FALSE)
492
MESSAGE(STATUS " Library not found: >PARMMG_FOUND< ")
493
MESSAGE(STATUS " Missing: >PARMMG_INCLUDE_DIR< , >PARMMG_LIBRARY<, to compile PARMMGSolver")
494
ENDIF(PARMMG_FOUND)
495
ELSE()
496
SET(PARMMG_FOUND FALSE)
497
SET(HAVE_PARMMG FALSE)
498
MESSAGE(STATUS " Skipping ParMMG")
499
# INCLUDE("cmake/Modules/FindParMMG.cmake")
500
# INCLUDE_DIRECTORIES(${PARMMG_INCLUDE_DIR})
501
# TARGET_LINK_LIBRARIES( ${YOUR_TARGET} ${PARMMG_LIBRARY})
502
# SET(HAVE_PARMMG FALSE)
503
ENDIF(WITH_PARMMG)
504
ELSE()
505
SET(HAVE_MMG FALSE)
506
SET(HAVE_PARMMG FALSE)
507
ENDIF()
508
509
# XIOS
510
IF (WITH_XIOS)
511
MESSAGE(STATUS "------------------------------------------------")
512
MESSAGE(STATUS " Checking for XIOS-related dependencies")
513
MESSAGE(STATUS " NETCDF: " "${NETCDF_FOUND}")
514
515
IF (NOT NETCDF_FOUND)
516
MESSAGE(FATAL_ERROR "Building with XIOS requires NetCDF. Please configure "
517
"with -DWITH_NETCDF=ON and make sure NetCDF is found.")
518
ENDIF()
519
520
MESSAGE(STATUS "------------------------------------------------")
521
MESSAGE(STATUS " Looking for XIOS ")
522
523
FIND_PACKAGE(XIOS)
524
525
MESSAGE(STATUS " XIOS_FOUND: " "${XIOS_FOUND}")
526
MESSAGE(STATUS " XIOS_INC: " "${XIOS_INCLUDE_DIR}")
527
MESSAGE(STATUS " XIOS_LIB : " "${XIOS_LIBRARIES}")
528
IF(XIOS_FOUND)
529
SET(HAVE_XIOS TRUE)
530
MARK_AS_ADVANCED(HAVE_XIOS)
531
INCLUDE_DIRECTORIES(${XIOS_INCLUDE_DIR})
532
LINK_DIRECTORIES(${XIOS_LIBRARIES})
533
ADD_DEFINITIONS(-DHAVE_XIOS)
534
ELSE(XIOS_FOUND)
535
MESSAGE(STATUS " ${XIOS_FAILMSG}")
536
ENDIF(XIOS_FOUND)
537
538
MESSAGE(STATUS "------------------------------------------------")
539
ENDIF()
540
541
542
MESSAGE(STATUS "------------------------------------------------")
543
544
# MPI and LAPACK
545
FIND_PACKAGE(BLAS REQUIRED)
546
FIND_PACKAGE(LAPACK REQUIRED)
547
# BLAS and LAPACK libraries may be needed for testing
548
SET(CMAKE_REQUIRED_LIBRARIES
549
${CMAKE_REQUIRED_LIBRARIES} ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES})
550
551
IF(MPI_FOUND)
552
# Mumps
553
IF(WITH_Mumps)
554
FIND_PACKAGE(Mumps REQUIRED)
555
ENDIF()
556
# Hypre
557
IF(WITH_Hypre)
558
FIND_PACKAGE(Hypre REQUIRED OPTIONAL_COMPONENTS Euclid parcsr_ls ParaSails IJ_mv FEI core QUIET)
559
ENDIF()
560
561
# Permon
562
IF(WITH_FETI4I)
563
FIND_PACKAGE(FETI4I REQUIRED)
564
ENDIF()
565
ENDIF()
566
567
IF(Mumps_FOUND)
568
SET(HAVE_MUMPS TRUE)
569
MARK_AS_ADVANCED(HAVE_MUMPS)
570
# LINK_DIRECTORIES(${MUMPS_LIBRARIES})
571
ENDIF()
572
573
IF(Hypre_FOUND)
574
SET(HAVE_HYPRE TRUE)
575
MARK_AS_ADVANCED(HAVE_HYPRE)
576
INCLUDE_DIRECTORIES(${Hypre_INCLUDE_DIR})
577
# LINK_DIRECTORIES(${Hypre_LIBRARIES})
578
ENDIF()
579
580
IF(FETI4I_FOUND)
581
SET(HAVE_FETI4I TRUE)
582
MARK_AS_ADVANCED(HAVE_FETI4I)
583
ADD_DEFINITIONS(-DHAVE_FETI4I)
584
ENDIF()
585
586
IF (AMGX_FOUND)
587
SET(HAVE_AMGX TRUE)
588
MARK_AS_ADVANCED(HAVE_AMGX)
589
INCLUDE_DIRECTORIES(${AMGX_INCLUDE_DIR})
590
LINK_DIRECTORIES(${CUDA_LIBDIR})
591
ENDIF()
592
593
IF (CHOLMOD_FOUND AND SPQR_FOUND)
594
SET(HAVE_CHOLMOD TRUE)
595
MARK_AS_ADVANCED(HAVE_CHOLMOD)
596
ENDIF()
597
598
# Check if Fortran compiler supports procedure pointer
599
INCLUDE(testProcedurePointer)
600
IF(NOT CMAKE_Fortran_COMPILER_SUPPORTS_PROCEDUREPOINTER)
601
MESSAGE(FATAL_ERROR "Fortran compiler does not seem to support the PROCEDURE statement.")
602
ENDIF()
603
604
# Check if Fortran compiler supports contiguous keyword
605
INCLUDE(testContiguous)
606
IF(USE_CONTIGUOUS AND CMAKE_Fortran_COMPILER_SUPPORTS_CONTIGUOUS)
607
ADD_DEFINITIONS(-DCONTIG=,CONTIGUOUS)
608
ELSE()
609
ADD_DEFINITIONS(-DCONTIG=)
610
ENDIF()
611
612
# Check if this is mingw toolchain.
613
IF(MINGW)
614
ADD_DEFINITIONS(-DMINGW32)
615
ENDIF()
616
617
IF(WIN32)
618
ADD_DEFINITIONS(-DWIN32)
619
ENDIF()
620
621
# Check if Fortran compiler supports execute_command_line
622
INCLUDE(testExecutecommand)
623
IF(CMAKE_Fortran_COMPILER_SUPPORTS_EXECUTECOMMANDLINE)
624
ADD_DEFINITIONS(-DHAVE_EXECUTECOMMANDLINE)
625
ENDIF()
626
627
ADD_DEFINITIONS(-DUSE_ISO_C_BINDINGS)
628
SET(FC_STDCALLBULL " ")
629
SET(ELMER_LINKTYP 1)
630
#SET(FC_FUNC FC_GLOBAL)
631
#SET(FC_FUNC_ FC_GLOBAL_)
632
633
# Add support for arpack
634
ADD_DEFINITIONS(-DUSE_ARPACK)
635
636
#INCLUDE(FortranCInterface)
637
#FortranCInterface_HEADER(FCMangle.h MACRO_NAMESPACE "FC_")
638
#FortranCInterface_VERIFY(CXX)
639
640
# Set up rpaths to point ELMER_INSTALL_LIB_DIR
641
IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
642
SET(ELMERSOLVER_RPATH_STRING "\$ORIGIN/../${ELMER_INSTALL_LIB_DIR}")
643
SET(ELMERLIB_RPATH_STRING "\$ORIGIN/")
644
ELSEIF(APPLE)
645
SET(ELMERSOLVER_RPATH_STRING "@loader_path/../${ELMER_INSTALL_LIB_DIR}")
646
SET(ELMERLIB_RPATH_STRING "@loader_path/")
647
ENDIF()
648
649
# Uncomment these to use rpath with linked libraries
650
# SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
651
# SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
652
# Remove system directories (from the CMake guide)
653
# LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
654
# IF("${isSystemDir}" STREQUAL "-1")
655
# SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
656
# ENDIF("${isSystemDir}" STREQUAL "-1")
657
658
ADD_SUBDIRECTORY(matc)
659
660
661
IF (WITH_UMFPACK)
662
IF (EXTERNAL_UMFPACK)
663
MESSAGE(STATUS "Using external UMFPACK instead of built-in")
664
FIND_PACKAGE(UMFPACK REQUIRED)
665
666
# Check for size of "SuiteSparse_long"
667
INCLUDE(CheckTypeSize)
668
SET(old_CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES})
669
SET(old_CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES})
670
LIST(APPEND CMAKE_REQUIRED_INCLUDES "${UMFPACK_INCLUDE_DIR}")
671
LIST(APPEND CMAKE_EXTRA_INCLUDE_FILES "umfpack.h")
672
CHECK_TYPE_SIZE("SuiteSparse_long" SIZEOF_SUITESPARSE_LONG LANGUAGE C)
673
SET(CMAKE_REQUIRED_INCLUDES ${old_CMAKE_REQUIRED_INCLUDES})
674
SET(CMAKE_EXTRA_INCLUDE_FILES ${old_CMAKE_EXTRA_INCLUDE_FILES})
675
IF (HAVE_SIZEOF_SUITESPARSE_LONG)
676
IF (SIZEOF_SUITESPARSE_LONG EQUAL 4)
677
SET(UMFPACK_LONG_FORTRAN_TYPE "C_INT32_T")
678
ELSE()
679
SET(UMFPACK_LONG_FORTRAN_TYPE "C_INT64_T")
680
ENDIF()
681
ENDIF()
682
ELSE()
683
MESSAGE(STATUS "Using built-in UMFPACK")
684
ADD_SUBDIRECTORY(umfpack)
685
ENDIF()
686
SET(HAVE_UMFPACK ON)
687
MARK_AS_ADVANCED(HAVE_UMFPACK)
688
ELSE()
689
MESSAGE(STATUS "Building without UMFPACK")
690
ENDIF()
691
IF(NOT DEFINED UMFPACK_LONG_FORTRAN_TYPE)
692
# Old versions of UMFPACK before "SuiteSparse_long" was defined used "long"
693
SET(UMFPACK_LONG_FORTRAN_TYPE "C_LONG")
694
ENDIF()
695
696
697
# Find external arpack and parpack
698
IF(EXTERNAL_ARPACK)
699
MESSAGE(STATUS "Using external arpack library instead of built-in")
700
FIND_PACKAGE(ARPACK REQUIRED)
701
SET(CMAKE_REQUIRED_LIBRARIES
702
${CMAKE_REQUIRED_LIBRARIES} ${ARPACK_LIBRARIES})
703
ENDIF()
704
705
IF(MPI_FOUND AND EXTERNAL_PARPACK)
706
MESSAGE(STATUS "Using external parpack library instead of built-in")
707
FIND_PACKAGE(PARPACK REQUIRED)
708
SET(CMAKE_REQUIRED_LIBRARIES
709
${CMAKE_REQUIRED_LIBRARIES} ${PARPACK_LIBRARIES})
710
ENDIF()
711
712
ADD_SUBDIRECTORY(fhutiter)
713
ADD_SUBDIRECTORY(meshgen2d)
714
ADD_SUBDIRECTORY(fem)
715
ADD_SUBDIRECTORY(mathlibs)
716
ADD_SUBDIRECTORY(elmergrid)
717
ADD_SUBDIRECTORY(license_texts)
718
719
IF(WITH_ElmerIce)
720
IF(NOT WITH_MPI)
721
MESSAGE(FATAL_ERROR "Building ElmerIce requires MPI.")
722
ENDIF()
723
MESSAGE(STATUS "Adding optional package ElmerIce")
724
ADD_SUBDIRECTORY(elmerice)
725
ENDIF(WITH_ElmerIce)
726
727
728
IF(WITH_ELMERGUI)
729
MESSAGE(STATUS " Building ElmerGUI")
730
MESSAGE(STATUS "------------------------------------------------")
731
ADD_SUBDIRECTORY(ElmerGUI)
732
ENDIF(WITH_ELMERGUI)
733
734
IF(WITH_ELMERGUITESTER)
735
ADD_SUBDIRECTORY(ElmerGUItester)
736
ENDIF(WITH_ELMERGUITESTER)
737
738
IF(WITH_ELMERGUILOGGER)
739
ADD_SUBDIRECTORY(ElmerGUIlogger)
740
ENDIF(WITH_ELMERGUILOGGER)
741
742
#INCLUDE(FeatureSummary)
743
#FEATURE_SUMMARY(WHAT ENABLED_FEATURES
744
# INCLUDE_QUIET_PACKAGES
745
# DESCRIPTION "Enabled Features:"
746
# VAR enabledFeaturesText)
747
#MESSAGE(STATUS "${enabledFeaturesText}")
748
749
#
750
IF(CMAKE_BUILD_TYPE)
751
STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPCASE)
752
MARK_AS_ADVANCED(CMAKE_BUILD_TYPE_UPCASE)
753
ENDIF(CMAKE_BUILD_TYPE)
754
755
MESSAGE(STATUS "------------------------------------------------")
756
MESSAGE(STATUS " BLAS library: " "${BLAS_LIBRARIES}")
757
MESSAGE(STATUS " LAPACK library: " "${LAPACK_LIBRARIES}")
758
MESSAGE(STATUS "------------------------------------------------")
759
IF(WITH_UMFPACK)
760
IF(UMFPACK_FOUND)
761
MESSAGE(STATUS " UMFPACK library: " "${UMFPACK_LIBRARIES}")
762
MESSAGE(STATUS " UMFPACK headers: " "${UMFPACK_INCLUDE_DIR}")
763
MESSAGE(STATUS "------------------------------------------------")
764
ELSE()
765
MESSAGE(STATUS " UMFPACK library: Using internal Elmer library")
766
ENDIF()
767
ELSE()
768
MESSAGE(STATUS " UMFPACK library: Building without UMFPACK")
769
ENDIF()
770
IF(CHOLMOD_FOUND AND SPQR_FOUND)
771
MESSAGE(STATUS " CHOLMOD library: " "${CHOLMOD_LIBRARIES}")
772
MESSAGE(STATUS " CHOLMOD headers: " "${CHOLMOD_INCLUDE_DIR}")
773
MESSAGE(STATUS " SPQR library: " "${SPQR_LIBRARIES}")
774
MESSAGE(STATUS " SPQR headers: " "${SPQR_INCLUDE_DIR}")
775
MESSAGE(STATUS "------------------------------------------------")
776
MARK_AS_ADVANCED(HAVE_CHOLMOD)
777
ENDIF()
778
IF(ARPACK_FOUND)
779
MESSAGE(STATUS " ARPACK library: " "${ARPACK_LIBRARIES}")
780
MESSAGE(STATUS " ARPACK headers: " "${ARPACK_INCLUDE_DIR}")
781
ELSE()
782
MESSAGE(STATUS " ARPACK library: Using internal Elmer library")
783
ENDIF()
784
IF(PARPACK_FOUND)
785
MESSAGE(STATUS " PARPACK library: " "${PARPACK_LIBRARIES}")
786
MESSAGE(STATUS " PARPACK headers: " "${PARPACK_INCLUDE_DIR}")
787
MESSAGE(STATUS "------------------------------------------------")
788
ELSE()
789
MESSAGE(STATUS " PARPACK library: Using internal Elmer library")
790
MESSAGE(STATUS "------------------------------------------------")
791
ENDIF()
792
IF(WITH_Zoltan AND NOT USE_SYSTEM_ZOLTAN)
793
MESSAGE(STATUS " Zoltan: building bundled code")
794
MESSAGE(STATUS "------------------------------------------------")
795
ELSEIF(WITH_Zoltan AND HAVE_ZOLTAN)
796
MESSAGE(STATUS " Zoltan library: " "${ZOLTAN_LIBRARY}")
797
MESSAGE(STATUS " Zoltan headers: " "${ZOLTAN_INCLUDE_DIR}")
798
MESSAGE(STATUS "------------------------------------------------")
799
ELSEIF(WITH_Zoltan AND NOT Zoltan_FOUND)
800
MESSAGE(STATUS " Zoltan system library not found")
801
MESSAGE(STATUS "------------------------------------------------")
802
ENDIF()
803
MESSAGE(STATUS " Fortran compiler: " "${CMAKE_Fortran_COMPILER}")
804
MESSAGE(STATUS " Fortran flags: " "${CMAKE_Fortran_FLAGS} ${CMAKE_Fortran_FLAGS_${CMAKE_BUILD_TYPE_UPCASE}}")
805
MESSAGE(STATUS "------------------------------------------------")
806
MESSAGE(STATUS " C compiler: " "${CMAKE_C_COMPILER}")
807
MESSAGE(STATUS " C flags: " "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPCASE}}")
808
MESSAGE(STATUS "------------------------------------------------")
809
MESSAGE(STATUS " CXX compiler: " "${CMAKE_CXX_COMPILER}")
810
MESSAGE(STATUS " CXX flags: " "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPCASE}}")
811
MESSAGE(STATUS "------------------------------------------------")
812
IF(WITH_MPI)
813
MESSAGE(STATUS " MPI Fortran: " "${MPI_Fortran_FOUND}")
814
MESSAGE(STATUS " MPI Fortran compiler: " "${MPI_Fortran_COMPILER}")
815
MESSAGE(STATUS " MPI Fortran flags: " "${MPI_Fortran_COMPILE_FLAGS}")
816
MESSAGE(STATUS " MPI Fortran include dir: " "${MPI_Fortran_INCLUDE_PATH}")
817
MESSAGE(STATUS " MPI Fortran libraries: " "${MPI_Fortran_LIBRARIES}")
818
MESSAGE(STATUS " MPI Fortran link flags: " "${MPI_Fortran_LINK_FLAGS}")
819
MESSAGE(STATUS "------------------------------------------------")
820
MESSAGE(STATUS " MPI C: " "${MPI_C_FOUND}")
821
MESSAGE(STATUS " MPI C compiler: " "${MPI_C_COMPILER}")
822
MESSAGE(STATUS " MPI C flags: " "${MPI_C_COMPILE_FLAGS}")
823
MESSAGE(STATUS " MPI C include dir: " "${MPI_C_INCLUDE_PATH}")
824
MESSAGE(STATUS " MPI C libraries: " "${MPI_C_LIBRARIES}")
825
MESSAGE(STATUS " MPI C flags: " "${MPI_C_LINK_FLAGS}")
826
MESSAGE(STATUS "------------------------------------------------")
827
IF(WITH_Mumps)
828
MESSAGE(STATUS " Mumps: " "${Mumps_FOUND}")
829
MESSAGE(STATUS " Mumps include: " "${Mumps_INCLUDE_DIR}")
830
MESSAGE(STATUS " Mumps libraries: " "${Mumps_LIBRARIES}")
831
MESSAGE(STATUS "------------------------------------------------")
832
ENDIF(WITH_Mumps)
833
IF(WITH_Hypre)
834
MESSAGE(STATUS " Hypre: " "${Hypre_FOUND}")
835
MESSAGE(STATUS " Hypre include: " "${Hypre_INCLUDE_DIR}")
836
MESSAGE(STATUS " Hypre libraries: " "${Hypre_LIBRARIES}")
837
MESSAGE(STATUS "------------------------------------------------")
838
ENDIF(WITH_Hypre)
839
ENDIF(WITH_MPI)
840
841
IF(WITH_Trilinos)
842
MESSAGE(STATUS " Trilinos: " "${Trilinos_FOUND}")
843
MESSAGE(STATUS " Trilinos_DIR: " "${Trilinos_DIR}")
844
MESSAGE(STATUS " Trilinos_LIBRARIES: " "${Trilinos_LIBRARIES}")
845
MESSAGE(STATUS "------------------------------------------------")
846
ENDIF(WITH_Trilinos)
847
848
IF(WITH_CONTRIB)
849
MESSAGE(STATUS " Building contributed solvers")
850
MESSAGE(STATUS "------------------------------------------------")
851
ENDIF(WITH_CONTRIB)
852
853
IF(WITH_ELMERGUITESTER)
854
MESSAGE(STATUS " Building ElmerGUI tester")
855
MESSAGE(STATUS "------------------------------------------------")
856
ENDIF(WITH_ELMERGUITESTER)
857
858
IF(WITH_ELMERGUILOGGER)
859
MESSAGE(STATUS " Building ElmerGUI logger")
860
MESSAGE(STATUS "------------------------------------------------")
861
ENDIF(WITH_ELMERGUILOGGER)
862
863
IF(WITH_ELMERPOST)
864
MESSAGE(WARNING " Building ElmerPost")
865
MESSAGE(STATUS "------------------------------------------------")
866
ADD_SUBDIRECTORY(post)
867
ENDIF(WITH_ELMERPOST)
868
869
IF(HAVE_LUA)
870
MESSAGE(STATUS " Building Lua")
871
MESSAGE(STATUS "------------------------------------------------")
872
ENDIF(HAVE_LUA)
873
874
IF(HAVE_EXTOPTIM)
875
MESSAGE(STATUS " Building with external optimization routines")
876
MESSAGE(STATUS "------------------------------------------------")
877
ENDIF(HAVE_EXTOPTIM)
878
879
IF(NOT HAVE_UMFPACK AND NOT HAVE_MUMPS)
880
MESSAGE(WARNING "Elmer is configured without backend for direct solvers (UMFPACK or MUMPS).\n"
881
"Are you sure this is intended?")
882
ENDIF()
883
884
885
# Packaging
886
if(NOT BYPASS_CPACK)
887
INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/cpack/ElmerCPack.cmake)
888
endif(NOT BYPASS_CPACK)
889
890