1 cmake_minimum_required (VERSION 3.1)
2 set(CMAKE_CXX_STANDARD 11)
3 set(CMAKE_CXX_STANDARD_REQUIRED ON)
6 project (SOLVERLAB C CXX)
7 set (SOLVERLAB_VERSION_MAJOR 9)
8 set (SOLVERLAB_VERSION_MINOR 7)
9 set (SOLVERLAB_VERSION_SUBMINOR alpha)
11 option (SOLVERLAB_WITH_DOCUMENTATION "Generate SOLVERLAB documentation" ON)
12 option (SOLVERLAB_WITH_PYTHON "Generate Python interface of SOLVERLAB using SWIG" ON)
13 option (SOLVERLAB_WITH_GUI "Compile a Graphic user Interface for SOLVERLAB" OFF)
14 option (SOLVERLAB_WITH_PACKAGE "Generate RPM, Debian and tarball packages" OFF)
15 option (SOLVERLAB_WITH_COREFLOWS "Generate COREFLOWS module" ON)
16 option (SOLVERLAB_WITH_TESTS "Generate SOLVERLAB example tests" ON)
17 option (SOLVERLAB_WITH_MPI "Generate a parallel version of SOLVERLAB" OFF)
19 #Path to installed libraries
20 set (PETSC_DIR OFF CACHE STRING "PETSc library path" )
21 set (SLEPC_DIR OFF CACHE STRING "SLEPc library path" )
22 set (HDF5_ROOT OFF CACHE STRING "HDF5 library path" )#For the compilation of MED with a specific version of HDF5
23 set (MEDFILE_ROOT_DIR OFF CACHE STRING "MED library path" )
24 set (MEDCOUPLING_ROOT_DIR OFF CACHE STRING "MEDCoupling library path" )
25 set (PYTHON_ROOT_DIR OFF CACHE STRING "Python library path" )
26 set (PARAVIEW_ROOT_DIR OFF CACHE STRING "PARAVIEW library path" )
27 set (MPI4PY_ROOT_DIR OFF CACHE STRING "MPI4PY library path" )
29 #url of tarball librairies
30 set (DOWNLOAD_PETSC http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.16.0.tar.gz
31 CACHE STRING "PETSc tarball path/url" )
32 set (DOWNLOAD_SLEPC https://slepc.upv.es/download/distrib/slepc-3.16.0.tar.gz
33 CACHE STRING "SLEPC tarball path/url" )
34 set (DOWNLOAD_F2CBLASLAPACK https://www.mcs.anl.gov/petsc/mirror/externalpackages/f2cblaslapack-3.4.2.q4.tar.gz
35 CACHE STRING "F2CBLASLAPACK tarball path/url" )
36 set (DOWNLOAD_HDF5 https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.3/src/hdf5-1.10.3.tar.gz
37 CACHE STRING "HDF5 tarball path/url" )
38 set (DOWNLOAD_MED http://files.salome-platform.org/Salome/other/med-4.1.0.tar.gz
39 CACHE STRING "MED tarball path/url")
40 set (DOWNLOAD_MEDCOUPLING http://files.salome-platform.org/Salome/other/medCoupling-9.7.0.tar.gz
41 CACHE STRING "MEDCoupling tarball path/url" )
42 set (DOWNLOAD_OPENMPI https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.6.tar.gz
43 CACHE STRING "OPENMPI tarball path/url" )
44 set (DOWNLOAD_HYPRE https://github.com/hypre-space/hypre/archive/v2.23.0.zip
45 CACHE STRING "HYPRE tarball path/url" )
46 set (DOWNLOAD_MPI4PY https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-3.1.1.tar.gz
47 CACHE STRING "MPY4PY tarball path/url" )
49 set (CMAKE_BUILD_TYPE Release CACHE STRING "Installation mode")
51 include(ExternalProject)#For PETSc, MED and MEDCoupling
53 list (APPEND CMAKE_MODULE_PATH "${SOLVERLAB_SOURCE_DIR}/cmake_files")
59 if ( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
60 if ( DEFINED ENV{MPI_ROOT_DIR} )
61 set(MPI_HOME $ENV{MPI_ROOT_DIR})
62 else ( DEFINED ENV{MPI_ROOT_DIR} )
63 set(MPI_HOME ${MPI_ROOT_DIR})
64 endif( DEFINED ENV{MPI_ROOT_DIR} )
65 endif( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
67 # Definition of SOLVERLAB_WITH_MPI
68 if( DEFINED ENV{MPI_HOME} OR MPI_HOME )
69 set(SOLVERLAB_WITH_MPI ON)
71 if( ${MPI_LIBRARY} STREQUAL "MPI_LIBRARY-NOTFOUND")
72 set ( MPI_LIBRARY ${MPI_HOME}/lib/libmpi.so )
73 endif(${MPI_LIBRARY} STREQUAL "MPI_LIBRARY-NOTFOUND")
74 message ( STATUS "MPI executable is ${MPIEXEC}" )
75 else( DEFINED ENV{MPI_HOME} OR MPI_HOME )
76 set(SOLVERLAB_WITH_MPI OFF)
77 endif( DEFINED ENV{MPI_HOME} OR MPI_HOME )
79 # Definition of MPI4PY_ROOT_DIR
80 if( ${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${MPI4PY_ROOT_DIR})
81 if( DEFINED $ENV{MPI4PY_ROOT_DIR})
82 set(MPI4PY_ROOT_DIR $ENV{MPI4PY_ROOT_DIR})
83 else( DEFINED $ENV{MPI4PY_ROOT_DIR})
84 set(MPI4PY_ROOT_DIR ${PETSC_DIR}/${PETSC_ARCH}/lib/mpi4py)
85 endif( DEFINED $ENV{MPI4PY_ROOT_DIR})
86 endif(${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${MPI4PY_ROOT_DIR})
89 message(STATUS "MPI4PY directory is ${MPI4PY_ROOT_DIR}" )
90 SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMPI4PY_ROOT_DIR=${MPI4PY_ROOT_DIR})
91 endif( $MPI4PY_ROOT_DIR)
93 ############################
94 # Definition of HDF5_ROOT #
95 ############################
96 if ( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )
97 if ( DEFINED ENV{HDF5_ROOT_DIR} )
98 set(HDF5_ROOT $ENV{HDF5_ROOT_DIR})
99 else ( DEFINED ENV{HDF5_ROOT_DIR} )
100 set(HDF5_ROOT ${HDF5_ROOT_DIR})
101 endif( DEFINED ENV{HDF5_ROOT_DIR} )
102 endif( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )
104 ######################################################
105 # Detection or compilation of PETSc+SLEPc+HDF5 #
106 ######################################################
107 if ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR)
109 set(PETSC_DIR $ENV{PETSC_DIR})
110 message ( STATUS "Checking variable PETSC_DIR : " $ENV{PETSC_DIR} )
112 message ( STATUS "Checking variable PETSC_DIR : " ${PETSC_DIR} )
115 find_package (PETSc 3.4 REQUIRED)
118 message ( STATUS "PETSc found. Version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}" )
119 message ( STATUS "PETSc compiler is ${PETSC_COMPILER}" )
120 message ( STATUS "PETSc executable is ${PETSC_MPIEXEC}")
122 set(PETSC_INSTALL ${PETSC_DIR})
124 #Define and search slepc variables
126 if ( DEFINED ENV{SLEPC_DIR} )
127 set(SLEPC_DIR $ENV{SLEPC_DIR})
128 else ( DEFINED ENV{SLEPC_DIR} )
129 set(SLEPC_DIR ${PETSC_DIR}/${PETSC_ARCH})
130 endif( DEFINED ENV{SLEPC_DIR} )
131 endif( NOT SLEPC_DIR)
133 message ( STATUS "Checking variable SLEPC_DIR" )
134 if ( IS_DIRECTORY ${SLEPC_DIR}/include AND EXISTS ${SLEPC_DIR}/lib/libslepc.so)
135 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
136 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
137 message( STATUS "SLEPc found at ${SLEPC_DIR}" )
139 message( FATAL_ERROR "SLEPc not found at ${SLEPC_DIR}" )
142 #define hdf5 variables
143 if ( NOT HDF5_ROOT )#hdf5 is not defined in cmake arguments
144 if ( DEFINED ENV{HDF5_ROOT} )#hdf5 is defined in the environment
145 set(HDF5_ROOT $ENV{HDF5_ROOT})
146 else( DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
147 #HDF5 to be found in petsc external packages
148 set(HDF5_ROOT ${PETSC_DIR}/${PETSC_ARCH})# define hint for hdf5/med installation in petsc external packages
149 endif( DEFINED ENV{HDF5_ROOT} )
150 endif( NOT HDF5_ROOT )
152 find_package(HDF5 COMPONENTS CXX HL)
154 set(HDF5_LIBRARY_DIR ${HDF5_ROOT}/lib)
155 set(HDF5_INCLUDE_DIRS ${HDF5_ROOT}/include)
156 endif( NOT HDF5_FOUND)
158 else ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
159 message ( STATUS "PETSC_DIR not set, searching PETSc and SLEPc in the system" )
161 if ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" ) #Case fedora/redhat system install
162 message ( STATUS "PETSC includes found in /usr/include/petsc/" )
163 message ( STATUS "PETSC library found in /usr/lib64" )
165 set(PETSC_INCLUDES /usr/include/petsc /usr/include/petsc/petsc/mpiuni)
166 set(PETSC_LIBRARIES /usr/lib64/libpetsc.so)
168 file(STRINGS /usr/include/petsc/petscversion.h petscversion_file)
169 FOREACH(line ${petscversion_file})
170 string(FIND "${line}" "#define PETSC_VERSION_MAJOR " pos)
171 IF(NOT ${pos} EQUAL -1)
172 string(LENGTH ${line} line_length_major)#length of the line
173 MATH(EXPR petsc_version_major "${line_length_major}-1")#line ends with "x", that counts for 1 character
174 string(SUBSTRING ${line} ${petsc_version_major} 1 PETSC_VERSION_MAJOR)
176 ENDIF(NOT ${pos} EQUAL -1)
177 ENDFOREACH(line ${petscversion_file})
178 FOREACH(line ${petscversion_file})
179 string(FIND "${line}" "#define PETSC_VERSION_MINOR " pos)
180 IF(NOT ${pos} EQUAL -1)
181 string(LENGTH ${line} line_length_minor)#length of the line
182 if(${line_length_minor} EQUAL ${line_length_major})
183 MATH(EXPR petsc_version_minor "${line_length_minor}-1")#line ends with "y", that counts for 1 character
184 string(SUBSTRING ${line} ${petsc_version_minor} 1 PETSC_VERSION_MINOR)
186 else(${line_length_minor} EQUAL ${line_length_major})
187 MATH(EXPR petsc_version_minor "${line_length_minor}-2")#line ends with "yy", that counts for two characters
188 string(SUBSTRING ${line} ${petsc_version_minor} 2 PETSC_VERSION_MINOR)
189 endif(${line_length_minor} EQUAL ${line_length_major})
190 ENDIF(NOT ${pos} EQUAL -1)
191 ENDFOREACH(line ${petscversion_file})
192 set(PETSC_VERSION ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}) #3.8 for fedora 26 , 3.9 for fedora 29 , 3.10 for fedora 30 , 3.12 for fedora 32 , 3.14 for fedora 34 , 3.15 for fedora 35
193 message(STATUS "PETSc detected, version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}" )
195 set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, petsc-devel (>= 3.4)") # This is not fully working yet.
196 set(PETSC_INSTALL ${PETSC_DIR})
198 #Define and search slepc variables
199 if ( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
200 message( STATUS "SLEPc includes found in /usr/include/slepc/" )
201 message( STATUS "SLEPc library found in /usr/lib64/slepc/" )
203 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
204 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
205 file(STRINGS /usr/include/slepc/slepcversion.h slepcversion_file)
206 FOREACH(line ${slepcversion_file})
207 string(FIND "${line}" "#define SLEPC_VERSION_MAJOR " pos)
208 IF(NOT ${pos} EQUAL -1)
209 string(LENGTH ${line} line_length_major)#length of the line
210 MATH(EXPR slepc_version_major "${line_length_major}-1")#line ends with "x", that counts for 1 character
211 string(SUBSTRING ${line} ${slepc_version_major} 1 SLEPC_VERSION_MAJOR)
213 ENDIF(NOT ${pos} EQUAL -1)
214 ENDFOREACH(line ${slepcversion_file})
215 FOREACH(line ${slepcversion_file})
216 string(FIND "${line}" "#define SLEPC_VERSION_MINOR " pos)
217 IF(NOT ${pos} EQUAL -1)
218 string(LENGTH ${line} line_length_minor)#length of the line
219 if(${line_length_minor} EQUAL ${line_length_major})
220 MATH(EXPR slepc_version_minor "${line_length_minor}-1")#line ends with "y", that counts for 1 character
221 string(SUBSTRING ${line} ${slepc_version_minor} 1 SLEPC_VERSION_MINOR)
223 else(${line_length_minor} EQUAL ${line_length_major})
224 MATH(EXPR slepc_version_minor "${line_length_minor}-2")#line ends with "yy", that counts for two characters
225 string(SUBSTRING ${line} ${slepc_version_minor} 2 SLEPC_VERSION_MINOR)
226 endif(${line_length_minor} EQUAL ${line_length_major})
227 ENDIF(NOT ${pos} EQUAL -1)
228 ENDFOREACH(line ${slepcversion_file})
229 set(SLEPC_VERSION ${SLEPC_VERSION_MAJOR}.${SLEPC_VERSION_MINOR}) #3.8 for fedora 26 , 3.9 for fedora 29 , 3.10 for fedora 30 , 3.12 for fedora 32 , 3.14 for fedora 34 , 3.15 for fedora 35
230 message(STATUS "SLEPc detected, version is ${SLEPC_VERSION_MAJOR}.${SLEPC_VERSION_MINOR}" )
231 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, slepc-devel (>= 3.4)") # This is not fully working yet.
232 else ( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
233 message( FATAL_ERROR "SLEPc not found in the system" )
234 endif( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
236 #HDF5 to be found in the system
237 if ( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
238 find_package(HDF5 REQUIRED)
239 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libhdf5-dev")
240 set(CPACK_RPM_PACKAGE_REQUIRES "hdf5-devel")
241 endif( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )
243 #elseif ( IS_DIRECTORY "/usr/lib/petsc/include" AND EXISTS "/usr/lib/petsc/lib/libpetsc_real.so" ) #Case ubuntu/debian system install
244 # message ( STATUS "PETSc includes found in /usr/lib/petsc/include")
245 # message ( STATUS "PETSc library found in /usr/lib/petsc/lib/libpetsc_real.so")
246 # set(PETSC_DIR /usr/lib/petsc/)
247 # set(PETSC_INCLUDES ${PETSC_DIR}/include ${PETSC_DIR}/include/petsc/mpiuni)
248 # set(PETSC_LIBRARIES ${PETSC_DIR}/lib/libpetsc_real.so)
250 # find_package (PETSc 3.4 REQUIRED)
251 # petsc_get_version ()
252 # set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, petsc-dev (>= 3.4)") # This is not fully working yet.
254 # Define and search slepc variables
255 # if ( IS_DIRECTORY "/usr/lib/slepc/include" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so" )
256 # message( STATUS "SLEPc includes found in /usr/lib/slepc/include" )
257 # message( STATUS "SLEPc library found in /usr/lib/slepc/lib/libslepc_real.so" )
258 # set(SLEPC_DIR /usr/lib/slepc/)
259 # set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
260 # set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc_real.so)
261 # set (CPACK_DEBIAN_PACKAGE_REQUIRES "${CPACK_DEBIAN_PACKAGE_REQUIRES}, slepc-devel (>= 3.4)") # This is not fully working yet.
262 # else ( IS_DIRECTORY "/usr/lib/slepc/include" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so" )
263 # message( FATAL_ERROR "SLEPc not found in the system" )
264 # endif( IS_DIRECTORY "/usr/lib/slepc/include" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so" )
266 #elseif ( IS_DIRECTORY "/usr/local/lib/python2.7/dist-packages/petsc") #Case ubuntu/debian system pip install
268 else ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" ) # No petsc in system, do compile petsc along with slepc as an external package
269 message (STATUS "PETSC not found in the system")
270 message (STATUS "PETSC will be downloaded and compiled from ${DOWNLOAD_PETSC}" )
271 message (STATUS "SLEPC will be downloaded and compiled from ${DOWNLOAD_SLEPC}" )
272 message (STATUS "HDF5 will be downloaded and compiled from ${DOWNLOAD_HDF5}" )
274 #extract petsc tarball name
275 string(LENGTH "${DOWNLOAD_PETSC}" tarball_url_length)#length of the tarball
276 string(FIND "${DOWNLOAD_PETSC}" "/" start_tarball_name REVERSE )# last occurence of "/"
277 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
278 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
279 string(SUBSTRING ${DOWNLOAD_PETSC} ${start_tarball_name} ${tarball_name_length} PETSC_TARBALL_NAME)
281 set(PETSC_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${PETSC_TARBALL_NAME}) # Location of the final install
282 set(PETSC_ARCH arch-linux-c-opt)
283 set(PETSC_INSTALL ${CMAKE_INSTALL_PREFIX}/lib/petsc)#folder to copy petsc libraries and include files
285 ExternalProject_Add (PETSc
286 URL ${DOWNLOAD_PETSC}
287 SOURCE_DIR ${PETSC_DIR}
289 CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${PETSC_INSTALL} --with-debugging=0 --download-f2cblaslapack=${DOWNLOAD_F2CBLASLAPACK} --with-mpi=0 --with-fc=0 --download-slepc=${DOWNLOAD_SLEPC} --download-hdf5=${DOWNLOAD_HDF5} --with-petsc4py=yes --download-slepc-configure-arguments="--with-slepc4py=yes" # --download-openmpi=${DOWNLOAD_OPENMPI} --download-hypre=${DOWNLOAD_HYPRE} --download-mpi4py=${DOWNLOAD_MPI4PY}
290 BUILD_COMMAND make all
291 TEST_COMMAND make check
292 INSTALL_COMMAND make install
293 INSTALL_DIR ${PETSC_DIR}
294 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
295 LOG_DOWNLOAD TRUE # Wrap download in script to log output
296 LOG_UPDATE TRUE # Wrap update in script to log output
297 LOG_CONFIGURE TRUE # Wrap configure in script to log output
298 LOG_BUILD TRUE # Wrap build in script to log output
299 LOG_TEST TRUE # Wrap test in script to log output
300 LOG_INSTALL TRUE # Wrap install in script to log output
303 message( STATUS "PETSc, SLEPc and HDF5 will be installed at ${PETSC_INSTALL}")
305 string(LENGTH "${PETSC_TARBALL_NAME}" tarball_name_length)#length of the tarball
306 string(FIND "${PETSC_TARBALL_NAME}" "-" start_version_name REVERSE )# last occurence of "-"
307 MATH(EXPR start_version_name "${start_version_name}+1")#start after the occurence of "/"
308 string(SUBSTRING ${PETSC_TARBALL_NAME} ${start_version_name} ${tarball_name_length} PETSC_VERSION)
309 message( STATUS "PETSc version ${PETSC_VERSION} will be installed" )
311 set(PETSC_INCLUDES ${PETSC_DIR}/${PETSC_ARCH}/include ${PETSC_DIR}/include)
312 set(PETSC_LIBRARIES ${PETSC_DIR}/${PETSC_ARCH}/lib/libpetsc.so)
314 #extract slepc tarball name
315 string(LENGTH "${DOWNLOAD_SLEPC}" tarball_url_length)#length of the tarball
316 string(FIND "${DOWNLOAD_SLEPC}" "/" start_tarball_name REVERSE )# last occurence of "/"
317 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
318 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
319 string(SUBSTRING ${DOWNLOAD_SLEPC} ${start_tarball_name} ${tarball_name_length} SLEPC_TARBALL_NAME)
321 #extract slepc version
322 string(LENGTH "${SLEPC_TARBALL_NAME}" tarball_name_length)#length of the tarball
323 string(FIND "${SLEPC_TARBALL_NAME}" "-" start_version_name REVERSE )# last occurence of "-"
324 MATH(EXPR start_version_name "${start_version_name}+1")#start after the occurence of "/"
325 string(SUBSTRING ${SLEPC_TARBALL_NAME} ${start_version_name} ${tarball_name_length} SLEPC_VERSION)
326 message( STATUS "SLEPc version ${SLEPC_VERSION} will be installed" )
328 #define slepc variables
329 set(SLEPC_DIR ${PETSC_INSTALL})
330 set(SLEPC_INCLUDES ${SLEPC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/${SLEPC_TARBALL_NAME}/include )
331 set(SLEPC_LIBRARIES ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/${SLEPC_TARBALL_NAME}/installed-arch-linux2-c-opt/lib/libslepc.so)
332 message( STATUS "SLEPc includes ${SLEPC_INCLUDES}")
334 #define hdf5 variables
335 if ( NOT HDF5_ROOT )#hdf5 is not defined in cmake arguments
336 if ( DEFINED ENV{HDF5_ROOT} )#hdf5 is defined in the environment
337 set(HDF5_ROOT $ENV{HDF5_ROOT})
338 else( DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
339 set(HDF5_ROOT ${PETSC_INSTALL})#HDF5 to be found in petsc installation
340 endif( DEFINED ENV{HDF5_ROOT} )
341 endif( NOT HDF5_ROOT )
342 set(HDF5_LIBRARY_DIR ${HDF5_ROOT}/lib)
343 set(HDF5_INCLUDE_DIRS ${HDF5_ROOT}/include)
345 #define MPI variables
346 #set(SOLVERLAB_WITH_MPI ON)
347 #set(MPI_HOME ${PETSC_INSTALL} )
348 #set(MPI_LIBRARY ${PETSC_INSTALL}/lib/libmpi.so)
349 #set(MPIEXEC ${PETSC_INSTALL}/bin/mpiexec)
350 #set(MPI4PY_ROOT_DIR ${PETSC_INSTALL}/lib/mpi4py )
352 endif ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" )
353 endif ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
355 if ( ${PETSC_VERSION} VERSION_GREATER 3.5 )
356 add_definitions(-DPETSC_VERSION_GREATER_3_5)
357 endif( ${PETSC_VERSION} VERSION_GREATER 3.5 )
359 string(REPLACE ";" ":" PETSC_INCLUDES_INSTALL "${PETSC_INCLUDES}")# use colon instead of semicolon in environment file env_SOLVERLAB.sh
361 add_library(petsc SHARED IMPORTED)
362 set_property(TARGET petsc PROPERTY IMPORTED_LOCATION ${PETSC_LIBRARIES})
363 add_library(slepc SHARED IMPORTED)
364 set_property(TARGET slepc PROPERTY IMPORTED_LOCATION ${SLEPC_LIBRARIES})
366 ######################################################
367 # Detection or compilation of MEDFile #
368 ######################################################
369 if( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
371 if ( NOT MEDFILE_ROOT_DIR )
372 set(MEDFILE_ROOT_DIR $ENV{MEDFILE_ROOT_DIR} )
373 endif( NOT MEDFILE_ROOT_DIR )
375 find_package (MEDFile REQUIRED)
377 else( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
379 message(STATUS "MED will be downloaded and installed from ${DOWNLOAD_MED}")
381 set(MEDFILE_DEFINITIONS "-D${MACHINE} -DMEDFILE_INSTALL_DOC=OFF")#Comment ne pas compiler la doc ?
382 set(MEDFILE_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/lib/med) # Location of the final install
384 #extraction of the tarball archive name
385 string(LENGTH "${DOWNLOAD_MED}" tarball_url_length)#length of the name of the tarball
386 string(FIND "${DOWNLOAD_MED}" "/" start_tarball_name REVERSE )# last occurence of "/"
387 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
388 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
389 string(SUBSTRING ${DOWNLOAD_MED} ${start_tarball_name} ${tarball_name_length} MED_TARBALL_NAME)
391 ExternalProject_Add (MED
392 URL ${DOWNLOAD_MED} #location of med tarball
393 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MED_TARBALL_NAME}
395 CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${MEDFILE_ROOT_DIR} --with-hdf5=${HDF5_ROOT} --with-hdf5-include=${HDF5_ROOT}/include --with-hdf5-lib=${HDF5_LIBRARY_DIR} --with-hdf5-bin=${HDF5_ROOT}/bin --with-swig=yes --disable-fortran #CC=${PETSC_INSTALL}/bin/mpicc
397 INSTALL_COMMAND make install
398 INSTALL_DIR ${MEDFILE_ROOT_DIR}
399 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
400 LOG_DOWNLOAD TRUE # Wrap download in script to log output
401 LOG_UPDATE TRUE # Wrap update in script to log output
402 LOG_CONFIGURE TRUE # Wrap configure in script to log output
403 LOG_BUILD TRUE # Wrap build in script to log output
404 LOG_TEST TRUE # Wrap test in script to log output
405 LOG_INSTALL TRUE # Wrap install in script to log output
408 set(MEDFILE_INCLUDE_DIRS ${MEDFILE_ROOT_DIR}/include)# Nécessaire pour le medloader et les sous-dossiers mesh, et IJKMesh
409 set(MEDFILE_LIBRARIES ${MEDFILE_ROOT_DIR}/lib)# Nécessaire pour le env_SOLVERLAB.sh
410 set(MEDFILE_C_LIBRARIES med medC)# Nécessaire pour le medloader
412 endif( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
414 add_library(med SHARED IMPORTED)
415 set_property(TARGET med PROPERTY IMPORTED_LOCATION ${MEDFILE_ROOT_DIR}/lib/libmed.so)
416 add_library(medC SHARED IMPORTED)
417 set_property(TARGET medC PROPERTY IMPORTED_LOCATION ${MEDFILE_ROOT_DIR}/lib/libmedC.so)
419 string(REPLACE ";" ":" MEDFILE_LIBRARIES_INSTALL "${MEDFILE_LIBRARIES}")# use colon instead of semicolon in environment file env_SOLVERLAB.sh
421 ######################################################
422 # Detection or compilation of MEDCoupling #
423 ######################################################
424 if( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
426 if ( NOT MEDCOUPLING_ROOT_DIR )
427 set(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} )
428 endif( NOT MEDCOUPLING_ROOT_DIR )
430 message (STATUS "Seeking MEDCoupling library in ${MEDCOUPLING_ROOT_DIR}")
432 set(MEDCoupling_DIR ${MEDCOUPLING_ROOT_DIR}/cmake_files)
433 find_package(MEDCoupling CONFIG REQUIRED) # CONFIG is important !
434 message( STATUS "MEDCoupling found. Version is ${MEDCoupling_VERSION}")
436 else( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
437 message(STATUS "MEDCoupling will be downloaded and installed from ${DOWNLOAD_MEDCOUPLING}")
438 set(MEDCOUPLING_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/lib/medcoupling) # Location of the final install
439 SET(ENV{HDF5_ROOT} ${HDF5_ROOT})#MEDCoupling install process seems to require an environment variable
441 #extraction of the tarball archive name
442 string(LENGTH "${DOWNLOAD_MEDCOUPLING}" tarball_url_length)#length of the tarball
443 string(FIND "${DOWNLOAD_MEDCOUPLING}" "/" start_tarball_name REVERSE )# last occurence of "/"
444 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
445 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
446 string(SUBSTRING ${DOWNLOAD_MEDCOUPLING} ${start_tarball_name} ${tarball_name_length} MEDCOUPLING_TARBALL_NAME)
447 string(SUBSTRING ${MEDCOUPLING_TARBALL_NAME} 12 ${tarball_name_length} MEDCoupling_VERSION)
449 message(STATUS "MEDCoupling will be installed at ${MEDCOUPLING_ROOT_DIR}")
451 ExternalProject_Add (MEDCoupling
452 URL ${DOWNLOAD_MEDCOUPLING} #location of medcoupling tarball
453 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MEDCOUPLING_TARBALL_NAME}
455 CONFIGURE_COMMAND cmake <SOURCE_DIR>/${MEDCOUPLING_TARBALL_NAME} -DCMAKE_INSTALL_PREFIX=${MEDCOUPLING_ROOT_DIR} -DCONFIGURATION_ROOT_DIR=<SOURCE_DIR>/configuration-${MEDCoupling_VERSION} -DMEDFILE_ROOT_DIR=${MEDFILE_ROOT_DIR} -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF -DMEDCOUPLING_ENABLE_RENUMBER=OFF -DMEDCOUPLING_BUILD_DOC=OFF -DHDF5_ROOT_DIR=${HDF5_ROOT} -DMEDCOUPLING_USE_64BIT_IDS=ON #-DSALOME_USE_MPI=ON
457 INSTALL_COMMAND make install
458 INSTALL_DIR ${MEDCOUPLING_ROOT_DIR}
459 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
460 LOG_DOWNLOAD TRUE # Wrap download in script to log output
461 LOG_UPDATE TRUE # Wrap update in script to log output
462 LOG_CONFIGURE TRUE # Wrap configure in script to log output
463 LOG_BUILD TRUE # Wrap build in script to log output
464 LOG_TEST TRUE # Wrap test in script to log output
465 LOG_INSTALL TRUE # Wrap install in script to log output
468 add_library(medloader SHARED IMPORTED )
469 set_property(TARGET medloader PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so)
471 SET(MEDCOUPLING_USE_64BIT_IDS ON)
473 endif( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR} )
475 set(MEDCOUPLING_INCLUDE_DIR ${MEDCOUPLING_ROOT_DIR}/include)
476 set(MEDCOUPLING_LIBRARIES ${MEDCOUPLING_ROOT_DIR}/lib )#for environment file env_SOLVERLAB.sh
478 add_library(medcoupling SHARED IMPORTED )
479 set_property(TARGET medcoupling PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so)
481 if ( ${MEDCoupling_VERSION} VERSION_GREATER 9.4 )
482 add_definitions(-DMEDCoupling_VERSION_VERSION_GREATER_9_4)
483 endif( ${MEDCoupling_VERSION} VERSION_GREATER 9.4 )
485 if (TARGET MED AND TARGET PETSc)
486 ExternalProject_Add_StepDependencies( MED build PETSc )#PETSc doit être compilé avant MED car c'est PETSc qui compile HDF5
487 endif(TARGET MED AND TARGET PETSc)
489 if (TARGET MED AND TARGET MEDCoupling)
490 ExternalProject_Add_StepDependencies( MEDCoupling build MED )#MED doit être compilé avant MEDCoupling
491 endif(TARGET MED AND TARGET MEDCoupling)
493 if (TARGET PETSc AND TARGET MEDCoupling)
494 ExternalProject_Add_StepDependencies( MEDCoupling build PETSc )#PETSc doit être compilé avant MEDCoupling (car il contient hdf5)
495 endif(TARGET PETSc AND TARGET MEDCoupling)
497 IF(MEDCOUPLING_USE_64BIT_IDS)
498 SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMEDCOUPLING_USE_64BIT_IDS)
499 ENDIF(MEDCOUPLING_USE_64BIT_IDS)
505 # Paraview variables to choose python version and for env_SOLVERLAB.sh
506 if ( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
507 if ( PARAVIEW_ROOT_DIR )
508 set( PARAVIEW_INCLUDE_DIR ${PARAVIEW_ROOT_DIR}/include)
509 set( PARAVIEW_LIBRARIES_DIR ${PARAVIEW_ROOT_DIR}/lib)
510 else( PARAVIEW_ROOT_DIR )
511 set( PARAVIEW_ROOT_DIR $ENV{PARAVIEW_ROOT_DIR} )
512 set( PARAVIEW_INCLUDE_DIR $ENV{PARAVIEW_ROOT_DIR}/include)
513 set( PARAVIEW_LIBRARIES_DIR $ENV{PARAVIEW_ROOT_DIR}/lib)
514 endif( PARAVIEW_ROOT_DIR )
515 else( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
516 message(STATUS "PARAVIEW_ROOT_DIR not set. Trying to detect paraview in the system.")
517 set( PARAVIEW_INCLUDE_DIR /usr/include/paraview/)
518 set( PARAVIEW_LIBRARIES_DIR /usr/lib/paraview/:/usr/lib64/paraview/:/usr/lib64/vtk/:/usr/lib/vtk/:/usr/lib/x86_64-linux-gnu)
519 endif( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
521 if ( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
522 if ( NOT DEFINED PARAVIEW_VERSION )
523 set( PARAVIEW_VERSION $ENV{PARAVIEW_VERSION})
524 endif( NOT DEFINED PARAVIEW_VERSION )
525 message(STATUS "ParaView version is ${PARAVIEW_VERSION}" )
526 else( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
527 set( PARAVIEW_SUFFIXES paraview-5.0 paraview-5.1 paraview-5.2 paraview-5.3 paraview-5.4 paraview-5.5 paraview-5.6 paraview-5.7 paraview-5.8 paraview-5.9 )
528 find_file( vtkConfig_file vtkPVConfig.h HINTS ${PARAVIEW_INCLUDE_DIR} PATH_SUFFIXES ${PARAVIEW_SUFFIXES})
530 #extraction of the paraview version"
531 IF ( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
532 message(WARNING "Could not find ParaView configuration file vtkPVConfig.h in folder ${PARAVIEW_INCLUDE_DIR} and subdirectories ${PARAVIEW_SUFFIXES}. Postprocessing may not work")
533 set( PARAVIEW_VERSION "5.8")
534 ELSE ( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
535 message( STATUS "Found vtkPVConfig.h in ${vtkConfig_file}")
536 file(STRINGS ${vtkConfig_file} vtkConfig)
537 FOREACH(line ${vtkConfig})
538 string(FIND "${line}" "#define PARAVIEW_VERSION_FULL " pos)
539 IF(NOT ${pos} EQUAL -1)
540 string(LENGTH ${line} line_length)#length of the tarball
541 MATH(EXPR start_pv_version "${line_length}-6")#line ends with "x.y.z", that counts for 7 characters
542 string(SUBSTRING ${line} ${start_pv_version} 5 PARAVIEW_VERSION)
544 ENDIF(NOT ${pos} EQUAL -1)
545 ENDFOREACH(line ${vtkConfig})
546 message(STATUS "ParaView detected, version is ${PARAVIEW_VERSION}" )
547 ENDIF( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
548 endif( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
550 #Choose python 2 or 3
551 IF ( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )#Use python 3, use VERSION_GREATER_EQUAL if cmake >=3.7
553 message(STATUS "PARAVIEW_VERSION greater than 5.6. We need python3 for postprocessing scripts.")
554 ELSE ( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )#Use python 2
556 message(STATUS "PARAVIEW_VERSION smaller than 5.6. We need python2 for postprocessing scripts.")
557 ENDIF( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )
560 IF ( PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR})
561 IF ( PYTHON_ROOT_DIR )
562 set(Python_ROOT_DIR ${PYTHON_ROOT_DIR} )
563 ELSE( PYTHON_ROOT_DIR )
564 set(Python_ROOT_DIR $ENV{PYTHON_ROOT_DIR} )
565 ENDIF( PYTHON_ROOT_DIR)
566 ENDIF( PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR})
568 IF (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
569 find_package(Python ${PYTHON2OR3} REQUIRED COMPONENTS Interpreter Development )
570 SET(PYTHON_EXECUTABLE ${Python_EXECUTABLE})
571 ELSE (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
572 find_package(PythonInterp ${PYTHON2OR3} REQUIRED )
573 find_package(PythonLibs ${PYTHON2OR3} REQUIRED )
574 set(Python_LIBRARIES ${PYTHON_LIBRARIES})
575 set(Python_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS})
576 set(Python_VERSION ${PYTHON_VERSION_STRING})
577 set(Python_VERSION_MAJOR ${PYTHON_VERSION_MAJOR})
578 set(Python_VERSION_MINOR ${PYTHON_VERSION_MINOR})
579 ENDIF(${CMAKE_VERSION} VERSION_GREATER "3.12.0")
581 message(STATUS "Python version found is ${Python_VERSION}")
584 IF ( NOT DEFINED MATPLOTLIB_ROOT_DIR )
585 set(MATPLOTLIB_ROOT_DIR $ENV{MATPLOTLIB_ROOT_DIR} )
586 ENDIF( NOT DEFINED MATPLOTLIB_ROOT_DIR )
589 IF ( NOT DEFINED PYQT5_ROOT_DIR )
590 set(PYQT5_ROOT_DIR $ENV{PYQT5_ROOT_DIR} )
591 ENDIF( NOT DEFINED PYQT5_ROOT_DIR )
593 #Paraview library paths
594 set (PV_LIB_DIR /usr/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/paraview/:/usr/lib64/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtk/:${MATPLOTLIB_ROOT_DIR}/lib/:${PARAVIEW_LIBRARIES_DIR})
595 set (PV_PYTHON_DIR /usr/lib/python${Python_VERSION_MAJOR}/dist-packages/:/usr/lib/python${Python_VERSION_MAJOR}/dist-packages/paraview/:/usr/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/paraview/:/usr/lib64/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtk/:/usr/lib64/paraview/site-packages/:/usr/lib64/paraview/site-packages/paraview/:/usr/lib64/paraview/site-packages/vtk/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/paraview/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtkmodules:/usr/lib/paraview/site-packages/paraview:/usr/lib/paraview/site-packages/paraview/vtk:${PARAVIEW_ROOT_DIR}/lib/:${PARAVIEW_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/:${PARAVIEW_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtkmodules/:${MATPLOTLIB_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages:${PYQT5_ROOT_DIR}:${PYQT5_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages)
597 # Detection of python-paraview
598 string(REPLACE ":" ";" PV_PYTHON_DIR_PATHS "${PV_PYTHON_DIR}")# use semicolon instead of colon in PATH search
599 find_file(python-paraview simple.py PATHS ${PV_PYTHON_DIR_PATHS})
600 if( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" )
601 message(WARNING "Python Paraview library not found. Post processing will fail in SOLVERLAB scripts.")
602 set(PRELOAD_NETCDF_ON_UBUNTU20 OFF)
603 else( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" )
604 if( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" )
605 message ( STATUS "Using system Paraview python libraries on Ubuntu 20.04 requires the presence and preload of library netcdf (bug in linkage)." )
606 if( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" )
607 message ( STATUS "Library netcdf found in the system. Paraview python libraries should be functional." )
608 set(PRELOAD_NETCDF_ON_UBUNTU20 ON)
609 else( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" )
610 message ( WARNING "Library netcdf not found in system. Paraview python libraries may not be functional (bug in linkage)." )
611 set(PRELOAD_NETCDF_ON_UBUNTU20 OFF)
612 endif( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" )
613 else( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" )
614 message(STATUS "Python Paraview library found. Post processing will work in SOLVERLAB scripts.")
615 set(PRELOAD_NETCDF_ON_UBUNTU20 OFF)
616 endif( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" )
617 endif( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" )
620 IF ( DEFINED SWIG_ROOT_DIR OR DEFINED ENV{SWIG_ROOT_DIR})
621 IF ( DEFINED SWIG_ROOT_DIR )
622 set(SWIG_EXECUTABLE ${SWIG_ROOT_DIR}/bin/swig )
623 ELSE ( DEFINED SWIG_ROOT_DIR )
624 set(SWIG_EXECUTABLE $ENV{SWIG_ROOT_DIR}/bin/swig )
625 ENDIF( DEFINED SWIG_ROOT_DIR)
626 ENDIF( DEFINED SWIG_ROOT_DIR OR DEFINED ENV{SWIG_ROOT_DIR})
627 find_package (SWIG 3.0 REQUIRED)
630 if (SOLVERLAB_WITH_DOCUMENTATION) #
631 IF ( DEFINED DOXYGEN_ROOT_DIR OR DEFINED ENV{DOXYGEN_ROOT_DIR})
632 IF ( DEFINED DOXYGEN_ROOT_DIR )
633 set(DOXYGEN_EXECUTABLE ${DOXYGEN_ROOT_DIR}/bin/doxygen )
634 ELSE ( DEFINED DOXYGEN_ROOT_DIR )
635 set(DOXYGEN_EXECUTABLE $ENV{DOXYGEN_ROOT_DIR}/bin/doxygen )
636 ENDIF( DEFINED DOXYGEN_ROOT_DIR)
637 ENDIF( DEFINED DOXYGEN_ROOT_DIR OR DEFINED ENV{DOXYGEN_ROOT_DIR})
638 find_package (Doxygen) #
639 set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, doxygen, graphviz, mscgen")
640 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, doxygen, graphviz, mscgen")
641 if (NOT DOXYGEN_FOUND)
642 message (FATAL_ERROR "Doxygen is needed to build the documentation. Please install it correctly.")
643 endif(NOT DOXYGEN_FOUND)
644 endif(SOLVERLAB_WITH_DOCUMENTATION)
646 if (SOLVERLAB_WITH_TESTS) #
648 IF ( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR})
649 IF ( DEFINED CPPUNIT_ROOT_DIR )
650 set(CPPUNIT_ROOT_USER ${CPPUNIT_ROOT_DIR} )
651 ELSE ( DEFINED CPPUNIT_ROOT_DIR )
652 set(CPPUNIT_ROOT_USER $ENV{CPPUNIT_ROOT_DIR} )
653 ENDIF( DEFINED CPPUNIT_ROOT_DIR)
654 ENDIF( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR})
655 find_package (CPPUNIT REQUIRED)
656 endif(SOLVERLAB_WITH_TESTS)
658 # Enter subdirectories
659 set(CDMATH_WITH_POSTPRO ${SOLVERLAB_WITH_POSTPRO} )
660 set(CDMATH_WITH_PETSC ${SOLVERLAB_WITH_PETSC} )
661 set(CDMATH_WITH_DOCUMENTATION ${SOLVERLAB_WITH_DOCUMENTATION} )
662 set(CDMATH_WITH_PYTHON ${SOLVERLAB_WITH_PYTHON} )
663 set(CDMATH_WITH_PACKAGE ${SOLVERLAB_WITH_PACKAGE} )
664 set(CDMATH_WITH_TESTS ${SOLVERLAB_WITH_TESTS} )
665 add_subdirectory (CDMATH)
666 if(SOLVERLAB_WITH_COREFLOWS)
667 set(COREFLOWS_WITH_DOCUMENTATION ${SOLVERLAB_WITH_DOCUMENTATION} )
668 set(COREFLOWS_WITH_PYTHON ${SOLVERLAB_WITH_PYTHON} )
669 set(COREFLOWS_WITH_GUI ${SOLVERLAB_WITH_GUI} )
670 set(COREFLOWS_WITH_PACKAGE ${SOLVERLAB_WITH_PACKAGE} )
671 set(COREFLOWS_WITH_TESTS ${SOLVERLAB_WITH_TESTS} )
672 add_subdirectory (CoreFlows)
673 endif(SOLVERLAB_WITH_COREFLOWS)
677 ${PROJECT_SOURCE_DIR}/env_SOLVERLAB.sh
678 ${CMAKE_INSTALL_PREFIX}/env_SOLVERLAB.sh