1 cmake_minimum_required (VERSION 3.1)
2 set(CMAKE_CXX_STANDARD 11)
3 set(CMAKE_CXX_STANDARD_REQUIRED ON)
7 set (CDMATH_VERSION_MAJOR 1)
8 set (CDMATH_VERSION_MINOR 0)
10 include(ExternalProject)#For PETSc, MED and MEDCoupling
13 option (CDMATH_WITH_PETSC "Compile CDMATH with PETSc linking." OFF)
14 option (CDMATH_WITH_DOCUMENTATION "Generate documentation with doxygen." OFF)
15 option (CDMATH_WITH_PYTHON "Compile Python interface for CDMATH." OFF)
16 option (CDMATH_WITH_POSTPRO "Install postprocessing Python modules." OFF)
17 option (CDMATH_WITH_PACKAGE "Generate RPM, Debian and tarball packages." OFF)
18 option (CDMATH_WITH_TESTS "Compile unit testing." OFF)
19 set (PETSC_DIR OFF CACHE STRING "PETSc library path" )
20 set (HDF5_ROOT OFF CACHE STRING "HDF5 library path" )#For the compilation of MED with a specific version
21 set (MEDFILE_ROOT_DIR OFF CACHE STRING "MED library path" )
22 set (MEDCOUPLING_ROOT_DIR OFF CACHE STRING "MEDCoupling library path" )
23 set (DOWNLOAD_MED ${CDMATH_SOURCE_DIR}/pre_requis/med-4.0.0.tar.gz CACHE STRING "MED tarball path/url")
24 set (DOWNLOAD_MEDCOUPLING ${CDMATH_SOURCE_DIR}/pre_requis/medCoupling-9.4.0.tar.gz CACHE STRING "MEDCoupling tarball path/url" )
25 set (DOWNLOAD_PETSC ${CDMATH_SOURCE_DIR}/pre_requis/PETSc/petsc-lite-3.13.1.tar.gz CACHE STRING "PETSc tarball path/url" )
26 set (DOWNLOAD_HDF5 ${CDMATH_SOURCE_DIR}/pre_requis/PETSc/hdf5-1.10.3.tar.gz CACHE STRING "HDF5 tarball path/url" )
27 set (DOWNLOAD_SLEPC ${CDMATH_SOURCE_DIR}/pre_requis/PETSc/slepc-3.13.1.tar.gz CACHE STRING "SLEPC tarball path/url" )
31 set (BASE_DIR ${CDMATH_SOURCE_DIR}/base)
32 set (MESH_DIR ${CDMATH_SOURCE_DIR}/mesh)
33 set (LINEARSOLVER_DIR ${CDMATH_SOURCE_DIR}/linearsolver)
34 set (CDMATH_SWIG_DIR ${CDMATH_SOURCE_DIR}/swig)
35 set (CDMATH_POSTPRO_DIR ${CDMATH_SOURCE_DIR}/postprocessing)
36 set (PRE_REQUIS_DIR ${CDMATH_SOURCE_DIR}/pre_requis)
38 set (TESTS_DIR ${CDMATH_SOURCE_DIR}/tests)
39 list (APPEND CMAKE_MODULE_PATH "${CDMATH_SOURCE_DIR}/cmake_files")
42 if (CDMATH_WITH_PETSC OR PETSC_DIR OR DOWNLOAD_PETSC OR DEFINED ENV{PETSC_DIR} )
43 message ( STATUS "Checking variable PETSC_DIR : " $ENV{PETSC_DIR} )
45 if ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR)
47 set(PETSC_DIR $ENV{PETSC_DIR})
50 find_package (PETSc 3.4 REQUIRED)
52 string(REPLACE ";" ":" PETSC_INCLUDES_PATH "${PETSC_INCLUDES}")# use colon instead of semicolon in environment file env_CDMATH.sh
53 message ( STATUS "PETSC found. Version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}" )
55 #Define and search slepc variables
56 set(SLEPC_DIR ${PETSC_DIR}/${PETSC_ARCH})
57 message ( STATUS "Checking variable SLEPC_DIR" )
58 if ( IS_DIRECTORY ${SLEPC_DIR}/include AND EXISTS ${SLEPC_DIR}/lib/libslepc.so)
59 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
60 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
61 message( STATUS "SLEPC found at ${SLEPC_DIR}" )
63 message( FATAL_ERROR "SLEPC not found at ${SLEPC_DIR}" )
66 #HDF5 to be found in petsc external packages
67 if( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
68 set(HDF5_ROOT $ENV{PETSC_DIR}/$ENV{PETSC_ARCH})# define hint for hdf5/med installation in petsc external packages
69 endif( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )
71 else ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
72 message ( STATUS "PETSC_DIR not set, searching petsc in the system" )
74 if ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" AND IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" ) #Case fedora/redhat system install
75 message ( STATUS "PETSC includes found in /usr/include/petsc/" )
76 message ( STATUS "PETSC library found in /usr/lib64" )
78 set(PETSC_INCLUDES /usr/include/petsc /usr/include/petsc/petsc/mpiuni)
79 set(PETSC_LIBRARIES /usr/lib64/libpetsc.so)
81 #set(PETSC_VERSION "3.8") #3.8 for fedora 26 , 3.9 for fedora 29 , 3.10 for fedora 30, , 3.12 for fedora 32
83 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, petsc-devel (>= 3.4)") # This is not fully working yet.
85 message( STATUS "SLEPC includes found in /usr/include/slepc/" )
86 message( STATUS "SLEPC library found in /usr/lib64/slepc/" )
88 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
89 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
91 #HDF5 to be found in the system
92 set (CPACK_DEBIAN_PACKAGE_DEPENDS "libhdf5-dev")
93 set (CPACK_RPM_PACKAGE_REQUIRES "hdf5-devel")
95 #elseif ( IS_DIRECTORY "/usr/lib/petsc/" AND EXISTS "/usr/lib/petsc/lib/libpetsc_real.so" AND IS_DIRECTORY "/usr/lib/slepc/" AND EXISTS "/usr/lib/slepc/lib/libslepc_real.so") #Case ubuntu/debian system install
96 # message ( STATUS "PETSC found in /usr/lib/petsc/ and exists /usr/lib/petsc/lib/libpetsc_real.so")
97 # set(PETSC_DIR /usr/lib/petsc/)
98 # set(PETSC_INCLUDES ${PETSC_DIR}/include ${PETSC_DIR}/include/petsc/mpiuni)
99 # set(PETSC_LIBRARIES ${PETSC_DIR}/libpetsc_real.so)
101 # find_package (PETSc 3.4 REQUIRED)
102 # petsc_get_version ()
103 # set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, petsc-dev (>= 3.4)") # This is not fully working yet.
105 # message ( STATUS "SLEPC found in /usr/lib/slepc/ and exists /usr/lib/slepc/lib/libslepc_real.so")
106 # set(SLEPC_DIR /usr/lib/slepc/)
107 # set(SLEPC_INCLUDES ${SLEPC_DIR}/include )
108 # set(SLEPC_LIBRARIES ${SLEPC_DIR}/libslepc_real.so)
110 #elseif ( IS_DIRECTORY "/usr/local/lib/python2.7/dist-packages/petsc") #Case ubuntu/debian system pip install
112 else ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" AND IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" ) # No petsc in system, do compile petsc along with slepc as an external package
113 message (STATUS "PETSC not found in the system, PETSC (with SLEPC and HDF5) will be downloaded and compiled" )
114 set(PETSC_SRC ${CDMATH_SOURCE_DIR}/pre_requis/PETSc)
115 set(PETSC_DIR ${CMAKE_INSTALL_PREFIX}/share/petsc_install) # Location of the final install
116 set(PETSC_INCLUDES ${PETSC_DIR}/include/ ${PETSC_DIR}/include/petsc/mpiuni)
117 set(PETSC_LIBRARIES ${PETSC_DIR}/lib/libpetsc.so)
119 ExternalProject_Add (PETSc
120 URL ${DOWNLOAD_PETSC}
121 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/PETSc
123 CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${PETSC_DIR} --with-debugging=0 --with-mpi=0 --download-f2cblaslapack=${PETSC_SRC}/f2cblaslapack-3.4.2.q4.tar.gz --with-fc=0 --download-slepc=${DOWNLOAD_SLEPC} --download-hdf5=${DOWNLOAD_HDF5}
124 BUILD_COMMAND make all
125 TEST_COMMAND make check
126 INSTALL_COMMAND make install
127 INSTALL_DIR ${PETSC_DIR}
128 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
129 LOG_DOWNLOAD TRUE # Wrap download in script to log output
130 LOG_UPDATE TRUE # Wrap update in script to log output
131 LOG_CONFIGURE TRUE # Wrap configure in script to log output
132 LOG_BUILD TRUE # Wrap build in script to log output
133 LOG_TEST TRUE # Wrap test in script to log output
134 LOG_INSTALL TRUE # Wrap install in script to log output
138 string(REPLACE ";" ":" PETSC_INCLUDES_PATH "${PETSC_INCLUDES}")# use colon instead of semicolon in environment file env_CDMATH.sh
139 message ( STATUS "PETSC found. Version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}" )
141 #define slepc variables
142 set(SLEPC_DIR ${PETSC_DIR}/${PETSC_ARCH})
143 set(SLEPC_INCLUDES ${SLEPC_DIR}/include)
144 set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so)
146 #HDF5 to be found in petsc external packages
147 if ( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )#hdf5 is not defined in the environment
148 set(HDF5_ROOT $ENV{PETSC_DIR}/$ENV{PETSC_ARCH})# define hint for hdf5/med installation in petsc external packages
149 endif( NOT HDF5_ROOT AND NOT DEFINED ENV{HDF5_ROOT} )
151 endif ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" AND IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" )
152 endif ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
154 if ( ${PETSC_VERSION} VERSION_GREATER 3.5 )
155 add_definitions(-DPETSC_VERSION_GREATER_3_5)
156 endif( ${PETSC_VERSION} VERSION_GREATER 3.5 )
158 endif( CDMATH_WITH_PETSC OR PETSC_DIR OR DOWNLOAD_PETSC OR DEFINED ENV{PETSC_DIR} )
161 if ( NOT HDF5_ROOT AND DEFINED ENV{HDF5_ROOT} )#hdf5 is defined in the environment
162 set(HDF5_ROOT $ENV{HDF5_ROOT})
163 endif( NOT HDF5_ROOT AND DEFINED ENV{HDF5_ROOT} )
166 if( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
168 if ( NOT MEDFILE_ROOT_DIR )
169 set(MEDFILE_ROOT_DIR $ENV{MEDFILE_ROOT_DIR} )
170 endif( NOT MEDFILE_ROOT_DIR )
172 message (STATUS "Seeking MEDFile library in ${MEDFILE_ROOT_DIR}")
173 find_package (MEDFile REQUIRED)
175 else( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
176 find_package (HDF5 REQUIRED)
177 add_library(hdf5 SHARED IMPORTED)
178 set_property(TARGET hdf5 PROPERTY IMPORTED_LOCATION ${HDF5_ROOT}/lib/libhdf5.so)
180 string(FIND "${HDF5_LIBRARIES}" "libhdf5.so" pos)
181 string(SUBSTRING "${HDF5_LIBRARIES}" 0 ${pos} HDF5_LIBRARY_DIR)
184 set(MEDFILE_DEFINITIONS "-D${MACHINE} -DMEDFILE_INSTALL_DOC=OFF")#Comment ne pas compiler la doc ?
185 set(MEDFILE_ROOT_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/med_install) # Location of the final install
187 #extraction of the tarball archive name
188 string(LENGTH "${DOWNLOAD_MED}" tarball_url_length)#length of the name of the tarball
189 string(FIND "${DOWNLOAD_MED}" "/" start_tarball_name REVERSE )# last occurence of "/"
190 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
191 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
192 string(SUBSTRING ${DOWNLOAD_MED} ${start_tarball_name} ${tarball_name_length} MED_TARBALL_NAME)
194 message(STATUS "MED tarball name is ${MED_TARBALL_NAME}")
196 ExternalProject_Add (MED
197 URL ${DOWNLOAD_MED} #location of med tarball
198 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MED_TARBALL_NAME}
200 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
203 INSTALL_COMMAND make install
204 INSTALL_DIR ${MEDFILE_ROOT_DIR}
205 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
206 LOG_DOWNLOAD TRUE # Wrap download in script to log output
207 LOG_UPDATE TRUE # Wrap update in script to log output
208 LOG_CONFIGURE TRUE # Wrap configure in script to log output
209 LOG_BUILD TRUE # Wrap build in script to log output
210 LOG_TEST TRUE # Wrap test in script to log output
211 LOG_INSTALL TRUE # Wrap install in script to log output
214 set(MEDFILE_INCLUDE_DIRS ${MEDFILE_ROOT_DIR}/include)# Nécessaire pour le medloader et les sous-dossiers mesh, et IJKMesh
215 set(MEDFILE_C_LIBRARIES med medC)# Nécessaire pour le medloader
216 endif( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
218 #For the environment file
219 set(MEDFILE_C_LIBRARIES_PATH ${MEDFILE_ROOT_DIR}/lib/libmed.so ${MEDFILE_ROOT_DIR}/lib/libmedC.so)
220 string(REPLACE ";" ":" MEDFILE_C_LIBRARIES_PATH "${MEDFILE_C_LIBRARIES_PATH}")# use colon instead of semicolon in environment file env_CDMATH.sh
222 add_library(med SHARED IMPORTED)
223 set_property(TARGET med PROPERTY IMPORTED_LOCATION ${MEDFILE_ROOT_DIR}/lib/libmed.so)
224 add_library(medC SHARED IMPORTED)
225 set_property(TARGET medC PROPERTY IMPORTED_LOCATION ${MEDFILE_ROOT_DIR}/lib/libmedC.so)
228 if( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
230 if( NOT MEDCOUPLING_ROOT_DIR )
231 set(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} )
232 endif( NOT MEDCOUPLING_ROOT_DIR )
234 message (STATUS "Seeking MEDCoupling library in ${MEDCOUPLING_ROOT_DIR}")
236 if( NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/include/MEDCoupling.hxx)
237 message (FATAL_ERROR "MEDCoupling library not found in ${MEDCOUPLING_ROOT_DIR}")
238 else( NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/include/MEDCoupling.hxx)
239 message (STATUS "MEDCoupling library found in ${MEDCOUPLING_ROOT_DIR}")
240 endif( NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/include/MEDCoupling.hxx)
242 else( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
244 set(MEDCOUPLING_ROOT_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/medCoupling_install) # Location of the final install
246 #extraction of the tarball archive name
247 string(LENGTH ${DOWNLOAD_MEDCOUPLING} tarball_url_length)#length of the tarball
248 string(FIND ${DOWNLOAD_MEDCOUPLING} "/" start_tarball_name REVERSE )# last occurence of "/"
249 MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
250 MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
251 string(SUBSTRING ${DOWNLOAD_MEDCOUPLING} ${start_tarball_name} ${tarball_name_length} MEDCOUPLING_TARBALL_NAME)
252 string(SUBSTRING ${MEDCOUPLING_TARBALL_NAME} 12 ${tarball_name_length} MEDCOUPLING_VERSION_NAME)
254 message(STATUS "MEDCOUPLING tarball name is ${MEDCOUPLING_TARBALL_NAME}")
255 message(STATUS "MEDCOUPLING version is ${MEDCOUPLING_VERSION_NAME}")
257 SET(ENV{HDF5_ROOT} ${HDF5_ROOT})#MEDCoupling install process seems to require an environment variable
259 ExternalProject_Add (MEDCoupling
260 URL ${DOWNLOAD_MEDCOUPLING} #location of medcoupling tarball
261 SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MEDCOUPLING_TARBALL_NAME}
262 # BUILD_IN_SOURCE FALSE
263 CONFIGURE_COMMAND cmake <SOURCE_DIR>/${MEDCOUPLING_TARBALL_NAME} -DCMAKE_INSTALL_PREFIX=${MEDCOUPLING_ROOT_DIR} -DCONFIGURATION_ROOT_DIR=<SOURCE_DIR>/configuration-${MEDCOUPLING_VERSION_NAME} -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}
266 INSTALL_COMMAND make install
267 INSTALL_DIR ${MEDCOUPLING_ROOT_DIR}
268 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/pre_requis
269 LOG_DOWNLOAD TRUE # Wrap download in script to log output
270 LOG_UPDATE TRUE # Wrap update in script to log output
271 LOG_CONFIGURE TRUE # Wrap configure in script to log output
272 LOG_BUILD TRUE # Wrap build in script to log output
273 LOG_TEST TRUE # Wrap test in script to log output
274 LOG_INSTALL TRUE # Wrap install in script to log output
276 endif( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR} )
278 set(MEDCOUPLING_INCLUDE_DIR ${MEDCOUPLING_ROOT_DIR}/include)
280 #For the environment file
281 set(MEDCOUPLING_LIBRARIES_PATH ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so)
282 string(REPLACE ";" ":" MEDCOUPLING_LIBRARIES_PATH "${MEDCOUPLING_LIBRARIES_PATH}")# use colon instead of semicolon in environment file env_CDMATH.sh
284 add_library(medloader SHARED IMPORTED )
285 set_property(TARGET medloader PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so)
286 add_library(medcoupling SHARED IMPORTED )
287 set_property(TARGET medcoupling PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so)
289 if(DEFINED MED AND DEFINED PETSc)
290 ExternalProject_Add_StepDependencies( MED build PETSc )#PETSc doit être compilé avant MED car c'est PETSc qui compile HDF5
291 endif(DEFINED MED AND DEFINED PETSc)
293 if(DEFINED MED AND DEFINED MEDCoupling)
294 ExternalProject_Add_StepDependencies( MEDCoupling build MED )#MED doit être compilé avant MEDCoupling
295 endif(DEFINED MED AND DEFINED MEDCoupling)
297 # Paraview variables for env_CDMATH.sh
298 if (CDMATH_WITH_PYTHON AND CDMATH_WITH_POSTPRO)
299 set (PV_LIB_DIR /usr/lib/python2.7/dist-packages/:/usr/lib64/paraview/)
300 set (PV_PYTHON_DIR /usr/lib/python2.7/dist-packages:/usr/lib64/paraview/site-packages/:/usr/lib64/paraview/site-packages/paraview/:/usr/lib64/paraview/site-packages/vtk/:/usr/lib64/paraview/python2.7/site-packages/:/usr/lib64/paraview/python2.7/site-packages/paraview/:/usr/lib64/paraview/python2.7/site-packages/vtkmodules:/usr/lib64/paraview/python3.7/site-packages/:/usr/lib64/paraview/python3.7/site-packages/paraview/:/usr/lib64/paraview/python3.7/site-packages/vtkmodules)
304 if (CDMATH_WITH_PYTHON)
305 find_package (PYTHON REQUIRED)
306 find_package (SWIG 3.0 REQUIRED)
307 set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, python-dev, python-numpy, swig")
308 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, python-devel, numpy, swig")
309 add_subdirectory (${CDMATH_SWIG_DIR})
312 find_package (XDR REQUIRED)
313 add_subdirectory (${BASE_DIR})
314 add_subdirectory (${MESH_DIR})
316 if (CDMATH_WITH_PETSC)
317 add_subdirectory (${LINEARSOLVER_DIR})
321 if (CDMATH_WITH_DOCUMENTATION)
322 find_package (Doxygen)
323 set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, doxygen, graphviz, mscgen")
324 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, doxygen, graphviz, mscgen")
325 if (NOT DOXYGEN_FOUND)
326 message (FATAL_ERROR "Doxygen is needed to build the documentation. Please install it correctly.")
327 endif (NOT DOXYGEN_FOUND)
328 configure_file (Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
329 add_custom_target (doc COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile
330 SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
331 if ( IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html)
332 install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION share/doc/cdmath)
337 if (CDMATH_WITH_TESTS)
338 set (CMAKE_EXE_LINKER_FLAGS "-pg -fprofile-arcs -ftest-coverage -lgcov")
340 find_package (CPPUNIT REQUIRED)
342 if (CDMATH_WITH_TESTS AND CDMATH_WITH_PYTHON)
344 add_subdirectory (${TESTS_DIR})#contains c++ and python tests
348 if (CDMATH_WITH_PACKAGE)
349 include (CPackLists.txt)
353 if (CDMATH_WITH_PYTHON AND CDMATH_WITH_POSTPRO)
354 add_subdirectory (postprocessing)
359 ${PROJECT_SOURCE_DIR}/env_CDMATH.sh
360 ${CMAKE_INSTALL_PREFIX}/env_CDMATH.sh