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)
18 #Path to installed libraries
19 set (PETSC_DIR OFF CACHE STRING "PETSc library path" )
20 set (SLEPC_DIR OFF CACHE STRING "SLEPc library path" )
21 set (HDF5_ROOT OFF CACHE STRING "HDF5 library path" )#For the compilation of MED with a specific version of HDF5
22 set (MEDFILE_ROOT_DIR OFF CACHE STRING "MED library path" )
23 set (MEDCOUPLING_ROOT_DIR OFF CACHE STRING "MEDCoupling library path" )
24 set (PYTHON_ROOT_DIR OFF CACHE STRING "Python library path" )
25 set (PARAVIEW_ROOT_DIR OFF CACHE STRING "PARAVIEW library path" )
27 #url of tarball librairies
28 set (DOWNLOAD_PETSC http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.16.0.tar.gz
29 CACHE STRING "PETSc tarball path/url" )
30 set (DOWNLOAD_SLEPC https://slepc.upv.es/download/distrib/slepc-3.16.0.tar.gz
31 CACHE STRING "SLEPC tarball path/url" )
32 set (DOWNLOAD_F2CBLASLAPACK https://www.mcs.anl.gov/petsc/mirror/externalpackages/f2cblaslapack-3.4.2.q4.tar.gz
33 CACHE STRING "F2CBLASLAPACK tarball path/url" )
34 set (DOWNLOAD_HDF5 https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.3/src/hdf5-1.10.3.tar.gz
35 CACHE STRING "HDF5 tarball path/url" )
36 set (DOWNLOAD_MED http://files.salome-platform.org/Salome/other/med-4.1.0.tar.gz
37 CACHE STRING "MED tarball path/url")
38 set (DOWNLOAD_MEDCOUPLING http://files.salome-platform.org/Salome/other/medCoupling-9.7.0.tar.gz
39 CACHE STRING "MEDCoupling tarball path/url" )
40 set (DOWNLOAD_OPENMPI https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.6.tar.gz
41 CACHE STRING "OPENMPI tarball path/url" )
42 set (DOWNLOAD_HYPRE https://github.com/hypre-space/hypre/archive/v2.20.0.zip
43 CACHE STRING "HYPRE tarball path/url" )
45 set (CMAKE_BUILD_TYPE Release CACHE STRING "Installation mode")
47 include(ExternalProject)#For PETSc, MED and MEDCoupling
49 list (APPEND CMAKE_MODULE_PATH "${SOLVERLAB_SOURCE_DIR}/cmake_files")
55 if ( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
56 if ( DEFINED ENV{MPI_ROOT_DIR} )
57 set(MPI_HOME $ENV{MPI_ROOT_DIR})
58 else ( DEFINED ENV{MPI_ROOT_DIR} )
59 set(MPI_HOME ${MPI_ROOT_DIR})
60 endif( DEFINED ENV{MPI_ROOT_DIR} )
61 endif( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
63 if( DEFINED ENV{MPI_HOME} OR MPI_HOME )
64 set(SOLVERLAB_WITH_MPI ON)
66 if( ${MPI_LIBRARY} STREQUAL "MPI_LIBRARY-NOTFOUND")
67 set ( MPI_LIBRARY ${MPI_HOME}/lib/libmpi.so )
68 endif(${MPI_LIBRARY} STREQUAL "MPI_LIBRARY-NOTFOUND")
69 message ( STATUS "MPI executable is ${MPIEXEC}" )
70 else( DEFINED ENV{MPI_HOME} OR MPI_HOME )
71 set(SOLVERLAB_WITH_MPI OFF)
72 endif( DEFINED ENV{MPI_HOME} OR MPI_HOME )
74 ############################
75 # Definition of HDF5_HOME #
76 ############################
77 if ( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )
78 if ( DEFINED ENV{HDF5_ROOT_DIR} )
79 set(HDF5_ROOT $ENV{HDF5_ROOT_DIR})
80 else ( DEFINED ENV{HDF5_ROOT_DIR} )
81 set(HDF5_ROOT ${HDF5_ROOT_DIR})
82 endif( DEFINED ENV{HDF5_ROOT_DIR} )
83 endif( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )
85 ######################################################
86 # Detection or compilation of PETSc+SLEPc+HDF5 #
87 ######################################################
88 if ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR)
90 set(PETSC_DIR $ENV{PETSC_DIR})
91 message ( STATUS "Checking variable PETSC_DIR : " $ENV{PETSC_DIR} )
93 message ( STATUS "Checking variable PETSC_DIR : " ${PETSC_DIR} )
96 find_package (PETSc 3.4 REQUIRED)
99 message ( STATUS "PETSc found. Version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}" )
100 message ( STATUS "PETSc compiler is ${PETSC_COMPILER}" )
101 message ( STATUS "PETSc executable is ${PETSC_MPIEXEC}")
103 set(PETSC_INSTALL ${PETSC_DIR})
105 #Define and search slepc variables
107 if ( DEFINED ENV{SLEPC_DIR} )
108 set(SLEPC_DIR $ENV{SLEPC_DIR})
109 else ( DEFINED ENV{SLEPC_DIR} )
110 set(SLEPC_DIR ${PETSC_DIR}/${PETSC_ARCH})
111 endif( DEFINED ENV{SLEPC_DIR} )
112 endif( NOT SLEPC_DIR)
114 message ( STATUS "Checking variable SLEPC_DIR" )
115 if ( IS_DIRECTORY ${SLEPC_DIR}/include AND EXISTS ${SLEPC_DIR}/lib/libslepc.so)
116 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
117 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
118 message( STATUS "SLEPc found at ${SLEPC_DIR}" )
120 message( FATAL_ERROR "SLEPc not found at ${SLEPC_DIR}" )
123 #define hdf5 variables
124 if ( NOT HDF5_ROOT )#hdf5 is not defined in cmake arguments
125 if ( DEFINED ENV{HDF5_ROOT} )#hdf5 is defined in the environment
126 set(HDF5_ROOT $ENV{HDF5_ROOT})
127 else( DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
128 #HDF5 to be found in petsc external packages
129 set(HDF5_ROOT ${PETSC_DIR}/${PETSC_ARCH})# define hint for hdf5/med installation in petsc external packages
130 endif( DEFINED ENV{HDF5_ROOT} )
131 endif( NOT HDF5_ROOT )
133 find_package(HDF5 COMPONENTS CXX HL)
135 set(HDF5_LIBRARY_DIR ${HDF5_ROOT}/lib)
136 set(HDF5_INCLUDE_DIRS ${HDF5_ROOT}/include)
137 endif( NOT HDF5_FOUND)
139 else ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
140 message ( STATUS "PETSC_DIR not set, searching PETSc and SLEPc in the system" )
142 if ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" ) #Case fedora/redhat system install
143 message ( STATUS "PETSC includes found in /usr/include/petsc/" )
144 message ( STATUS "PETSC library found in /usr/lib64" )
146 set(PETSC_INCLUDES /usr/include/petsc /usr/include/petsc/petsc/mpiuni)
147 set(PETSC_LIBRARIES /usr/lib64/libpetsc.so)
149 file(STRINGS /usr/include/petsc/petscversion.h petscversion_file)
150 FOREACH(line ${petscversion_file})
151 string(FIND "${line}" "#define PETSC_VERSION_MAJOR " pos)
152 IF(NOT ${pos} EQUAL -1)
153 string(LENGTH ${line} line_length_major)#length of the line
154 MATH(EXPR petsc_version_major "${line_length_major}-1")#line ends with "x", that counts for 1 character
155 string(SUBSTRING ${line} ${petsc_version_major} 1 PETSC_VERSION_MAJOR)
157 ENDIF(NOT ${pos} EQUAL -1)
158 ENDFOREACH(line ${petscversion_file})
159 FOREACH(line ${petscversion_file})
160 string(FIND "${line}" "#define PETSC_VERSION_MINOR " pos)
161 IF(NOT ${pos} EQUAL -1)
162 string(LENGTH ${line} line_length_minor)#length of the line
163 if(${line_length_minor} EQUAL ${line_length_major})
164 MATH(EXPR petsc_version_minor "${line_length_minor}-1")#line ends with "y", that counts for 1 character
165 string(SUBSTRING ${line} ${petsc_version_minor} 1 PETSC_VERSION_MINOR)
167 else(${line_length_minor} EQUAL ${line_length_major})
168 MATH(EXPR petsc_version_minor "${line_length_minor}-2")#line ends with "yy", that counts for two characters
169 string(SUBSTRING ${line} ${petsc_version_minor} 2 PETSC_VERSION_MINOR)
170 endif(${line_length_minor} EQUAL ${line_length_major})
171 ENDIF(NOT ${pos} EQUAL -1)
172 ENDFOREACH(line ${petscversion_file})
173 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
174 message(STATUS "PETSc detected, version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}" )
176 set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, petsc-devel (>= 3.4)") # This is not fully working yet.
177 set(PETSC_INSTALL ${PETSC_DIR})
179 #Define and search slepc variables
180 if ( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
181 message( STATUS "SLEPc includes found in /usr/include/slepc/" )
182 message( STATUS "SLEPc library found in /usr/lib64/slepc/" )
184 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
185 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
186 file(STRINGS /usr/include/slepc/slepcversion.h slepcversion_file)
187 FOREACH(line ${slepcversion_file})
188 string(FIND "${line}" "#define SLEPC_VERSION_MAJOR " pos)
189 IF(NOT ${pos} EQUAL -1)
190 string(LENGTH ${line} line_length_major)#length of the line
191 MATH(EXPR slepc_version_major "${line_length_major}-1")#line ends with "x", that counts for 1 character
192 string(SUBSTRING ${line} ${slepc_version_major} 1 SLEPC_VERSION_MAJOR)
194 ENDIF(NOT ${pos} EQUAL -1)
195 ENDFOREACH(line ${slepcversion_file})
196 FOREACH(line ${slepcversion_file})
197 string(FIND "${line}" "#define SLEPC_VERSION_MINOR " pos)
198 IF(NOT ${pos} EQUAL -1)
199 string(LENGTH ${line} line_length_minor)#length of the line
200 if(${line_length_minor} EQUAL ${line_length_major})
201 MATH(EXPR slepc_version_minor "${line_length_minor}-1")#line ends with "y", that counts for 1 character
202 string(SUBSTRING ${line} ${slepc_version_minor} 1 SLEPC_VERSION_MINOR)
204 else(${line_length_minor} EQUAL ${line_length_major})
205 MATH(EXPR slepc_version_minor "${line_length_minor}-2")#line ends with "yy", that counts for two characters
206 string(SUBSTRING ${line} ${slepc_version_minor} 2 SLEPC_VERSION_MINOR)
207 endif(${line_length_minor} EQUAL ${line_length_major})
208 ENDIF(NOT ${pos} EQUAL -1)
209 ENDFOREACH(line ${slepcversion_file})
210 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
211 message(STATUS "SLEPc detected, version is ${SLEPC_VERSION_MAJOR}.${SLEPC_VERSION_MINOR}" )
212 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, slepc-devel (>= 3.4)") # This is not fully working yet.
213 else ( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
214 message( FATAL_ERROR "SLEPc not found in the system" )
215 endif( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
217 #HDF5 to be found in the system
218 if ( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
219 find_package(HDF5 REQUIRED)
220 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libhdf5-dev")
221 set(CPACK_RPM_PACKAGE_REQUIRES "hdf5-devel")
222 endif( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )
224 #elseif ( IS_DIRECTORY "/usr/lib/petsc/include" AND EXISTS "/usr/lib/petsc/lib/libpetsc_real.so" ) #Case ubuntu/debian system install
225 # message ( STATUS "PETSc includes found in /usr/lib/petsc/include")
226 # message ( STATUS "PETSc library found in /usr/lib/petsc/lib/libpetsc_real.so")
227 # set(PETSC_DIR /usr/lib/petsc/)
228 # set(PETSC_INCLUDES ${PETSC_DIR}/include ${PETSC_DIR}/include/petsc/mpiuni)
229 # set(PETSC_LIBRARIES ${PETSC_DIR}/lib/libpetsc_real.so)
231 # find_package (PETSc 3.4 REQUIRED)
232 # petsc_get_version ()
233 # set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, petsc-dev (>= 3.4)") # This is not fully working yet.
235 # Define and search slepc variables
236 # if ( IS_DIRECTORY "/usr/lib/slepc/include" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so" )
237 # message( STATUS "SLEPc includes found in /usr/lib/slepc/include" )
238 # message( STATUS "SLEPc library found in /usr/lib/slepc/lib/libslepc_real.so" )
239 # set(SLEPC_DIR /usr/lib/slepc/)
240 # set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
241 # set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc_real.so)
242 # set (CPACK_DEBIAN_PACKAGE_REQUIRES "${CPACK_DEBIAN_PACKAGE_REQUIRES}, slepc-devel (>= 3.4)") # This is not fully working yet.
243 # else ( IS_DIRECTORY "/usr/lib/slepc/include" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so" )
244 # message( FATAL_ERROR "SLEPc not found in the system" )
245 # endif( IS_DIRECTORY "/usr/lib/slepc/include" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so" )
247 #elseif ( IS_DIRECTORY "/usr/local/lib/python2.7/dist-packages/petsc") #Case ubuntu/debian system pip install
249 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
250 message (STATUS "PETSC not found in the system")
251 message (STATUS "PETSC will be downloaded and compiled from ${DOWNLOAD_PETSC}" )
252 message (STATUS "SLEPC will be downloaded and compiled from ${DOWNLOAD_SLEPC}" )
253 message (STATUS "HDF5 will be downloaded and compiled from ${DOWNLOAD_HDF5}" )
255 #extract petsc tarball name
256 string(LENGTH "${DOWNLOAD_PETSC}" tarball_url_length)#length of the tarball
257 string(FIND "${DOWNLOAD_PETSC}" "/" start_tarball_name REVERSE )# last occurence of "/"
258 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
259 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
260 string(SUBSTRING ${DOWNLOAD_PETSC} ${start_tarball_name} ${tarball_name_length} PETSC_TARBALL_NAME)
262 set(PETSC_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${PETSC_TARBALL_NAME}) # Location of the final install
263 set(PETSC_ARCH arch-linux-c-opt)
264 set(PETSC_INSTALL ${CMAKE_INSTALL_PREFIX}/lib/petsc)#folder to copy petsc libraries and include files
266 ExternalProject_Add (PETSc
267 URL ${DOWNLOAD_PETSC}
268 SOURCE_DIR ${PETSC_DIR}
270 CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${PETSC_INSTALL} --with-debugging=0 --download-f2cblaslapack=${DOWNLOAD_F2CBLASLAPACK} --with-fc=0 --download-slepc=${DOWNLOAD_SLEPC} --download-hdf5=${DOWNLOAD_HDF5} --with-mpi=0 # --download-openmpi=${DOWNLOAD_OPENMPI} --download-hypre=${DOWNLOAD_HYPRE}
271 BUILD_COMMAND make all
272 TEST_COMMAND make check
273 INSTALL_COMMAND make install
274 INSTALL_DIR ${PETSC_DIR}
275 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
276 LOG_DOWNLOAD TRUE # Wrap download in script to log output
277 LOG_UPDATE TRUE # Wrap update in script to log output
278 LOG_CONFIGURE TRUE # Wrap configure in script to log output
279 LOG_BUILD TRUE # Wrap build in script to log output
280 LOG_TEST TRUE # Wrap test in script to log output
281 LOG_INSTALL TRUE # Wrap install in script to log output
284 message( STATUS "PETSc, SLEPc and HDF5 will be installed at ${PETSC_INSTALL}")
286 string(LENGTH "${PETSC_TARBALL_NAME}" tarball_name_length)#length of the tarball
287 string(FIND "${PETSC_TARBALL_NAME}" "-" start_version_name REVERSE )# last occurence of "-"
288 MATH(EXPR start_version_name "${start_version_name}+1")#start after the occurence of "/"
289 string(SUBSTRING ${PETSC_TARBALL_NAME} ${start_version_name} ${tarball_name_length} PETSC_VERSION)
290 message( STATUS "PETSc version ${PETSC_VERSION} will be installed" )
292 set(PETSC_INCLUDES ${PETSC_DIR}/${PETSC_ARCH}/include ${PETSC_DIR}/include)
293 set(PETSC_LIBRARIES ${PETSC_DIR}/${PETSC_ARCH}/lib/libpetsc.so)
295 #extract slepc tarball name
296 string(LENGTH "${DOWNLOAD_SLEPC}" tarball_url_length)#length of the tarball
297 string(FIND "${DOWNLOAD_SLEPC}" "/" start_tarball_name REVERSE )# last occurence of "/"
298 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
299 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
300 string(SUBSTRING ${DOWNLOAD_SLEPC} ${start_tarball_name} ${tarball_name_length} SLEPC_TARBALL_NAME)
302 #extract slepc version
303 string(LENGTH "${SLEPC_TARBALL_NAME}" tarball_name_length)#length of the tarball
304 string(FIND "${SLEPC_TARBALL_NAME}" "-" start_version_name REVERSE )# last occurence of "-"
305 MATH(EXPR start_version_name "${start_version_name}+1")#start after the occurence of "/"
306 string(SUBSTRING ${SLEPC_TARBALL_NAME} ${start_version_name} ${tarball_name_length} SLEPC_VERSION)
307 message( STATUS "SLEPc version ${SLEPC_VERSION} will be installed" )
309 #define slepc variables
310 set(SLEPC_DIR ${PETSC_INSTALL})
311 set(SLEPC_INCLUDES ${SLEPC_DIR}/include ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/${SLEPC_TARBALL_NAME}/include )
312 set(SLEPC_LIBRARIES ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/${SLEPC_TARBALL_NAME}/installed-arch-linux2-c-opt/lib/libslepc.so)
313 message( STATUS "SLEPc includes ${SLEPC_INCLUDES}")
315 #define hdf5 variables
316 if ( NOT HDF5_ROOT )#hdf5 is not defined in cmake arguments
317 if ( DEFINED ENV{HDF5_ROOT} )#hdf5 is defined in the environment
318 set(HDF5_ROOT $ENV{HDF5_ROOT})
319 else( DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
320 set(HDF5_ROOT ${PETSC_INSTALL})#HDF5 to be found in petsc installation
321 endif( DEFINED ENV{HDF5_ROOT} )
322 endif( NOT HDF5_ROOT )
323 set(HDF5_LIBRARY_DIR ${HDF5_ROOT}/lib)
324 set(HDF5_INCLUDE_DIRS ${HDF5_ROOT}/include)
326 #define MPI variables
327 #set(SOLVERLAB_WITH_MPI ON)
328 #set(MPI_HOME ${PETSC_INSTALL} )
329 #set(MPI_LIBRARY ${PETSC_INSTALL}/lib/libmpi.so)
330 #set(MPIEXEC ${PETSC_INSTALL}/bin/mpiexec)
332 endif ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" )
333 endif ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
335 if ( ${PETSC_VERSION} VERSION_GREATER 3.5 )
336 add_definitions(-DPETSC_VERSION_GREATER_3_5)
337 endif( ${PETSC_VERSION} VERSION_GREATER 3.5 )
339 string(REPLACE ";" ":" PETSC_INCLUDES_INSTALL "${PETSC_INCLUDES}")# use colon instead of semicolon in environment file env_SOLVERLAB.sh
341 add_library(petsc SHARED IMPORTED)
342 set_property(TARGET petsc PROPERTY IMPORTED_LOCATION ${PETSC_LIBRARIES})
343 add_library(slepc SHARED IMPORTED)
344 set_property(TARGET slepc PROPERTY IMPORTED_LOCATION ${SLEPC_LIBRARIES})
346 ######################################################
347 # Detection or compilation of MEDFile #
348 ######################################################
349 if( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
351 if ( NOT MEDFILE_ROOT_DIR )
352 set(MEDFILE_ROOT_DIR $ENV{MEDFILE_ROOT_DIR} )
353 endif( NOT MEDFILE_ROOT_DIR )
355 find_package (MEDFile REQUIRED)
357 else( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
359 message(STATUS "MED will be downloaded and installed from ${DOWNLOAD_MED}")
361 set(MEDFILE_DEFINITIONS "-D${MACHINE} -DMEDFILE_INSTALL_DOC=OFF")#Comment ne pas compiler la doc ?
362 set(MEDFILE_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/lib/med) # Location of the final install
364 #extraction of the tarball archive name
365 string(LENGTH "${DOWNLOAD_MED}" tarball_url_length)#length of the name of the tarball
366 string(FIND "${DOWNLOAD_MED}" "/" start_tarball_name REVERSE )# last occurence of "/"
367 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
368 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
369 string(SUBSTRING ${DOWNLOAD_MED} ${start_tarball_name} ${tarball_name_length} MED_TARBALL_NAME)
371 ExternalProject_Add (MED
372 URL ${DOWNLOAD_MED} #location of med tarball
373 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MED_TARBALL_NAME}
375 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
377 INSTALL_COMMAND make install
378 INSTALL_DIR ${MEDFILE_ROOT_DIR}
379 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
380 LOG_DOWNLOAD TRUE # Wrap download in script to log output
381 LOG_UPDATE TRUE # Wrap update in script to log output
382 LOG_CONFIGURE TRUE # Wrap configure in script to log output
383 LOG_BUILD TRUE # Wrap build in script to log output
384 LOG_TEST TRUE # Wrap test in script to log output
385 LOG_INSTALL TRUE # Wrap install in script to log output
388 set(MEDFILE_INCLUDE_DIRS ${MEDFILE_ROOT_DIR}/include)# Nécessaire pour le medloader et les sous-dossiers mesh, et IJKMesh
389 set(MEDFILE_LIBRARIES ${MEDFILE_ROOT_DIR}/lib)# Nécessaire pour le env_SOLVERLAB.sh
390 set(MEDFILE_C_LIBRARIES med medC)# Nécessaire pour le medloader
392 endif( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
394 add_library(med SHARED IMPORTED)
395 set_property(TARGET med PROPERTY IMPORTED_LOCATION ${MEDFILE_ROOT_DIR}/lib/libmed.so)
396 add_library(medC SHARED IMPORTED)
397 set_property(TARGET medC PROPERTY IMPORTED_LOCATION ${MEDFILE_ROOT_DIR}/lib/libmedC.so)
399 string(REPLACE ";" ":" MEDFILE_LIBRARIES_INSTALL "${MEDFILE_LIBRARIES}")# use colon instead of semicolon in environment file env_SOLVERLAB.sh
401 ######################################################
402 # Detection or compilation of MEDCoupling #
403 ######################################################
404 if( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
406 if ( NOT MEDCOUPLING_ROOT_DIR )
407 set(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} )
408 endif( NOT MEDCOUPLING_ROOT_DIR )
410 message (STATUS "Seeking MEDCoupling library in ${MEDCOUPLING_ROOT_DIR}")
412 set(MEDCoupling_DIR ${MEDCOUPLING_ROOT_DIR}/cmake_files)
413 find_package(MEDCoupling CONFIG REQUIRED) # CONFIG is important !
414 message( STATUS "MEDCoupling found. Version is ${MEDCoupling_VERSION}")
416 else( DEFINED MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
417 message(STATUS "MEDCoupling will be downloaded and installed from ${DOWNLOAD_MEDCOUPLING}")
418 set(MEDCOUPLING_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/lib/medcoupling) # Location of the final install
419 SET(ENV{HDF5_ROOT} ${HDF5_ROOT})#MEDCoupling install process seems to require an environment variable
421 #extraction of the tarball archive name
422 string(LENGTH "${DOWNLOAD_MEDCOUPLING}" tarball_url_length)#length of the tarball
423 string(FIND "${DOWNLOAD_MEDCOUPLING}" "/" start_tarball_name REVERSE )# last occurence of "/"
424 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
425 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
426 string(SUBSTRING ${DOWNLOAD_MEDCOUPLING} ${start_tarball_name} ${tarball_name_length} MEDCOUPLING_TARBALL_NAME)
427 string(SUBSTRING ${MEDCOUPLING_TARBALL_NAME} 12 ${tarball_name_length} MEDCoupling_VERSION)
429 message(STATUS "MEDCoupling will be installed at ${MEDCOUPLING_ROOT_DIR}")
431 ExternalProject_Add (MEDCoupling
432 URL ${DOWNLOAD_MEDCOUPLING} #location of medcoupling tarball
433 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MEDCOUPLING_TARBALL_NAME}
435 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
437 INSTALL_COMMAND make install
438 INSTALL_DIR ${MEDCOUPLING_ROOT_DIR}
439 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
440 LOG_DOWNLOAD TRUE # Wrap download in script to log output
441 LOG_UPDATE TRUE # Wrap update in script to log output
442 LOG_CONFIGURE TRUE # Wrap configure in script to log output
443 LOG_BUILD TRUE # Wrap build in script to log output
444 LOG_TEST TRUE # Wrap test in script to log output
445 LOG_INSTALL TRUE # Wrap install in script to log output
448 add_library(medloader SHARED IMPORTED )
449 set_property(TARGET medloader PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so)
451 SET(MEDCOUPLING_USE_64BIT_IDS ON)
453 endif( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR} )
455 set(MEDCOUPLING_INCLUDE_DIR ${MEDCOUPLING_ROOT_DIR}/include)
456 set(MEDCOUPLING_LIBRARIES ${MEDCOUPLING_ROOT_DIR}/lib )#for environment file env_SOLVERLAB.sh
458 add_library(medcoupling SHARED IMPORTED )
459 set_property(TARGET medcoupling PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so)
461 if ( ${MEDCoupling_VERSION} VERSION_GREATER 9.4 )
462 add_definitions(-DMEDCoupling_VERSION_VERSION_GREATER_9_4)
463 endif( ${MEDCoupling_VERSION} VERSION_GREATER 9.4 )
465 if (TARGET MED AND TARGET PETSc)
466 ExternalProject_Add_StepDependencies( MED build PETSc )#PETSc doit être compilé avant MED car c'est PETSc qui compile HDF5
467 endif(TARGET MED AND TARGET PETSc)
469 if (TARGET MED AND TARGET MEDCoupling)
470 ExternalProject_Add_StepDependencies( MEDCoupling build MED )#MED doit être compilé avant MEDCoupling
471 endif(TARGET MED AND TARGET MEDCoupling)
473 if (TARGET PETSc AND TARGET MEDCoupling)
474 ExternalProject_Add_StepDependencies( MEDCoupling build PETSc )#PETSc doit être compilé avant MEDCoupling (car il contient hdf5)
475 endif(TARGET PETSc AND TARGET MEDCoupling)
477 IF(MEDCOUPLING_USE_64BIT_IDS)
478 SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMEDCOUPLING_USE_64BIT_IDS)
479 ENDIF(MEDCOUPLING_USE_64BIT_IDS)
485 # Paraview variables to choose python version and for env_SOLVERLAB.sh
486 if ( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
487 if ( PARAVIEW_ROOT_DIR )
488 set( PARAVIEW_INCLUDE_DIR ${PARAVIEW_ROOT_DIR}/include)
489 set( PARAVIEW_LIBRARIES_DIR ${PARAVIEW_ROOT_DIR}/lib)
490 else( PARAVIEW_ROOT_DIR )
491 set( PARAVIEW_ROOT_DIR $ENV{PARAVIEW_ROOT_DIR} )
492 set( PARAVIEW_INCLUDE_DIR $ENV{PARAVIEW_ROOT_DIR}/include)
493 set( PARAVIEW_LIBRARIES_DIR $ENV{PARAVIEW_ROOT_DIR}/lib)
494 endif( PARAVIEW_ROOT_DIR )
495 else( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
496 message(STATUS "PARAVIEW_ROOT_DIR not set. Trying to detect paraview in the system.")
497 set( PARAVIEW_INCLUDE_DIR /usr/include/paraview/)
498 set( PARAVIEW_LIBRARIES_DIR /usr/lib/paraview/:/usr/lib64/paraview/:/usr/lib64/vtk/:/usr/lib/vtk/:/usr/lib/x86_64-linux-gnu)
499 endif( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
501 if ( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
502 if ( NOT DEFINED PARAVIEW_VERSION )
503 set( PARAVIEW_VERSION $ENV{PARAVIEW_VERSION})
504 endif( NOT DEFINED PARAVIEW_VERSION )
505 message(STATUS "ParaView version is ${PARAVIEW_VERSION}" )
506 else( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
507 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 )
508 find_file( vtkConfig_file vtkPVConfig.h HINTS ${PARAVIEW_INCLUDE_DIR} PATH_SUFFIXES ${PARAVIEW_SUFFIXES})
510 #extraction of the paraview version"
511 IF ( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
512 message(WARNING "Could not find ParaView configuration file vtkPVConfig.h in folder ${PARAVIEW_INCLUDE_DIR} and subdirectories ${PARAVIEW_SUFFIXES}. Postprocessing may not work")
513 set( PARAVIEW_VERSION "5.8")
514 ELSE ( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
515 message( STATUS "Found vtkPVConfig.h in ${vtkConfig_file}")
516 file(STRINGS ${vtkConfig_file} vtkConfig)
517 FOREACH(line ${vtkConfig})
518 string(FIND "${line}" "#define PARAVIEW_VERSION_FULL " pos)
519 IF(NOT ${pos} EQUAL -1)
520 string(LENGTH ${line} line_length)#length of the tarball
521 MATH(EXPR start_pv_version "${line_length}-6")#line ends with "x.y.z", that counts for 7 characters
522 string(SUBSTRING ${line} ${start_pv_version} 5 PARAVIEW_VERSION)
524 ENDIF(NOT ${pos} EQUAL -1)
525 ENDFOREACH(line ${vtkConfig})
526 message(STATUS "ParaView detected, version is ${PARAVIEW_VERSION}" )
527 ENDIF( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
528 endif( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
530 #Choose python 2 or 3
531 IF ( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )#Use python 3, use VERSION_GREATER_EQUAL if cmake >=3.7
533 message(STATUS "PARAVIEW_VERSION greater than 5.6. We need python3 for postprocessing scripts.")
534 ELSE ( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )#Use python 2
536 message(STATUS "PARAVIEW_VERSION smaller than 5.6. We need python2 for postprocessing scripts.")
537 ENDIF( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )
540 IF ( PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR})
541 IF ( PYTHON_ROOT_DIR )
542 set(Python_ROOT_DIR ${PYTHON_ROOT_DIR} )
543 ELSE( PYTHON_ROOT_DIR )
544 set(Python_ROOT_DIR $ENV{PYTHON_ROOT_DIR} )
545 ENDIF( PYTHON_ROOT_DIR)
546 ENDIF( PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR})
548 IF (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
549 find_package(Python ${PYTHON2OR3} REQUIRED COMPONENTS Interpreter Development )
550 SET(PYTHON_EXECUTABLE ${Python_EXECUTABLE})
551 ELSE (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
552 find_package(PythonInterp ${PYTHON2OR3} REQUIRED )
553 find_package(PythonLibs ${PYTHON2OR3} REQUIRED )
554 set(Python_LIBRARIES ${PYTHON_LIBRARIES})
555 set(Python_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS})
556 set(Python_VERSION ${PYTHON_VERSION_STRING})
557 set(Python_VERSION_MAJOR ${PYTHON_VERSION_MAJOR})
558 set(Python_VERSION_MINOR ${PYTHON_VERSION_MINOR})
559 ENDIF(${CMAKE_VERSION} VERSION_GREATER "3.12.0")
561 message(STATUS "Python version found is ${Python_VERSION}")
563 #Paraview library paths
564 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})
565 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)
567 # Detection of python-paraview
568 string(REPLACE ":" ";" PV_PYTHON_DIR_PATHS "${PV_PYTHON_DIR}")# use semicolon instead of colon in PATH search
569 find_file(python-paraview simple.py PATHS ${PV_PYTHON_DIR_PATHS})
570 if( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" )
571 message(WARNING "Python Paraview library not found. Post processing will fail in SOLVERLAB scripts.")
572 set(PRELOAD_NETCDF_ON_UBUNTU20 OFF)
573 else( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" )
574 if( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" )
575 message ( STATUS "Using system Paraview python libraries on Ubuntu 20.04 requires the presence and preload of library netcdf (bug in linkage)." )
576 if( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" )
577 message ( STATUS "Library netcdf found in the system. Paraview python libraries should be functional." )
578 set(PRELOAD_NETCDF_ON_UBUNTU20 ON)
579 else( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" )
580 message ( WARNING "Library netcdf not found in system. Paraview python libraries may not be functional (bug in linkage)." )
581 set(PRELOAD_NETCDF_ON_UBUNTU20 OFF)
582 endif( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" )
583 else( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" )
584 message(STATUS "Python Paraview library found. Post processing will work in SOLVERLAB scripts.")
585 set(PRELOAD_NETCDF_ON_UBUNTU20 OFF)
586 endif( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" )
587 endif( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" )
590 IF ( NOT DEFINED PYQT5_ROOT_DIR )
591 set(PYQT5_ROOT_DIR $ENV{PYQT5_ROOT_DIR} )
592 ENDIF( NOT DEFINED PYQT5_ROOT_DIR )
595 IF ( NOT DEFINED MATPLOTLIB_ROOT_DIR )
596 set(MATPLOTLIB_ROOT_DIR $ENV{MATPLOTLIB_ROOT_DIR} )
597 ENDIF( NOT DEFINED MATPLOTLIB_ROOT_DIR )
599 #define HDF5_ROOT_DIR
600 IF ( NOT HDF5_ROOT_DIR )
601 IF ( ENV{HDF5_ROOT_DIR} )
602 set(HDF5_ROOT_DIR $ENV{HDF5_ROOT_DIR} )
603 ELSE( ENV{HDF5_ROOT_DIR} )
604 set(HDF5_ROOT_DIR ${HDF5_ROOT} )
605 ENDIF( ENV{HDF5_ROOT_DIR} )
606 ENDIF( NOT HDF5_ROOT_DIR )
609 IF ( DEFINED SWIG_ROOT_DIR OR DEFINED ENV{SWIG_ROOT_DIR})
610 IF ( DEFINED SWIG_ROOT_DIR )
611 set(SWIG_EXECUTABLE ${SWIG_ROOT_DIR}/bin/swig )
612 ELSE ( DEFINED SWIG_ROOT_DIR )
613 set(SWIG_EXECUTABLE $ENV{SWIG_ROOT_DIR}/bin/swig )
614 ENDIF( DEFINED SWIG_ROOT_DIR)
615 ENDIF( DEFINED SWIG_ROOT_DIR OR DEFINED ENV{SWIG_ROOT_DIR})
616 find_package (SWIG 3.0 REQUIRED)
619 if (SOLVERLAB_WITH_DOCUMENTATION) #
620 IF ( DEFINED DOXYGEN_ROOT_DIR OR DEFINED ENV{DOXYGEN_ROOT_DIR})
621 IF ( DEFINED DOXYGEN_ROOT_DIR )
622 set(DOXYGEN_EXECUTABLE ${DOXYGEN_ROOT_DIR}/bin/doxygen )
623 ELSE ( DEFINED DOXYGEN_ROOT_DIR )
624 set(DOXYGEN_EXECUTABLE $ENV{DOXYGEN_ROOT_DIR}/bin/doxygen )
625 ENDIF( DEFINED DOXYGEN_ROOT_DIR)
626 ENDIF( DEFINED DOXYGEN_ROOT_DIR OR DEFINED ENV{DOXYGEN_ROOT_DIR})
627 find_package (Doxygen) #
628 set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, doxygen, graphviz, mscgen")
629 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, doxygen, graphviz, mscgen")
630 if (NOT DOXYGEN_FOUND)
631 message (FATAL_ERROR "Doxygen is needed to build the documentation. Please install it correctly.")
632 endif(NOT DOXYGEN_FOUND)
633 endif(SOLVERLAB_WITH_DOCUMENTATION)
635 if (SOLVERLAB_WITH_TESTS) #
637 IF ( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR})
638 IF ( DEFINED CPPUNIT_ROOT_DIR )
639 set(CPPUNIT_ROOT_USER ${CPPUNIT_ROOT_DIR} )
640 ELSE ( DEFINED CPPUNIT_ROOT_DIR )
641 set(CPPUNIT_ROOT_USER $ENV{CPPUNIT_ROOT_DIR} )
642 ENDIF( DEFINED CPPUNIT_ROOT_DIR)
643 ENDIF( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR})
644 find_package (CPPUNIT REQUIRED)
645 endif(SOLVERLAB_WITH_TESTS)
647 # Enter subdirectories
648 add_subdirectory (CDMATH)
649 if(SOLVERLAB_WITH_COREFLOWS)
650 set(COREFLOWS_WITH_DOCUMENTATION ${SOLVERLAB_WITH_DOCUMENTATION} )
651 set(COREFLOWS_WITH_PYTHON ${SOLVERLAB_WITH_PYTHON} )
652 set(COREFLOWS_WITH_GUI ${SOLVERLAB_WITH_GUI} )
653 set(COREFLOWS_WITH_PACKAGE ${SOLVERLAB_WITH_PACKAGE} )
654 set(COREFLOWS_WITH_TESTS ${SOLVERLAB_WITH_TESTS} )
655 add_subdirectory (CoreFlows)
656 endif(SOLVERLAB_WITH_COREFLOWS)
660 ${PROJECT_SOURCE_DIR}/env_SOLVERLAB.sh
661 ${CMAKE_INSTALL_PREFIX}/env_SOLVERLAB.sh