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 9)
8 set (CDMATH_VERSION_MINOR 8)
10 # CDMATH project options (deprecated, see SOLVERLAB options)
11 set (CDMATH_WITH_PETSC CACHE STRING ON "Compile CDMATH with PETSc linking")
12 set (CDMATH_WITH_DOCUMENTATION ON CACHE STRING "Generate documentation with doxygen")
13 set (CDMATH_WITH_PYTHON ON CACHE STRING "Compile Python interface for CDMATH")
14 set (CDMATH_WITH_POSTPRO ON CACHE STRING "Install postprocessing Python modules")
15 set (CDMATH_WITH_PACKAGE OFF CACHE STRING "Generate RPM, Debian and tarball packages")
16 set (CDMATH_WITH_TESTS ON CACHE STRING "Compile unit testing")
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 (F2CBLASLAPACK_DIR OFF CACHE STRING "F2CBLASLAPACK 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" )
26 #url of tarball librairies
27 set (DOWNLOAD_PETSC http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.13.tar.gz
28 CACHE STRING "PETSc tarball path/url" )
29 set (DOWNLOAD_SLEPC https://slepc.upv.es/download/distrib/slepc-3.13.4.tar.gz
30 CACHE STRING "SLEPC tarball path/url" )
31 set (DOWNLOAD_F2CBLASLAPACK ${CDMATH_SOURCE_DIR}/pre_requis/PETSc/f2cblaslapack-3.4.2.q4.tar.gz
32 CACHE STRING "F2CBLASLAPACK tarball path/url" )
33 set (DOWNLOAD_HDF5 ${CDMATH_SOURCE_DIR}/pre_requis/PETSc/hdf5-1.10.3.tar.gz
34 CACHE STRING "HDF5 tarball path/url" )
35 set (DOWNLOAD_MED http://files.salome-platform.org/Salome/other/med-4.1.0.tar.gz
36 CACHE STRING "MED tarball path/url")
37 set (DOWNLOAD_MEDCOUPLING http://files.salome-platform.org/Salome/other/medCoupling-9.4.0.tar.gz
38 CACHE STRING "MEDCoupling tarball path/url" )
42 set (BASE_DIR ${CDMATH_SOURCE_DIR}/base)
43 set (MESH_DIR ${CDMATH_SOURCE_DIR}/mesh)
44 set (LINEARSOLVER_DIR ${CDMATH_SOURCE_DIR}/linearsolver)
45 set (CDMATH_SWIG_DIR ${CDMATH_SOURCE_DIR}/swig)
46 set (CDMATH_POSTPRO_DIR ${CDMATH_SOURCE_DIR}/postprocessing)
48 set (TESTS_DIR ${CDMATH_SOURCE_DIR}/tests)
50 ###Define CDMATH_INCLUDES and CDMATH_LIBRARIES for the compilation of CoreFlows
52 ${MEDFILE_INCLUDE_DIRS} ${MEDCOUPLING_INCLUDE_DIR}
53 ${BASE_DIR}/inc ${MESH_DIR}/inc ${LINEARSOLVER_DIR}/inc
57 medC medloader medcoupling
58 base mesh linearsolver
62 if (CDMATH_WITH_PYTHON)
63 set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, python-dev, python-numpy, swig")
64 set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, python-devel, numpy, swig")
65 add_subdirectory (${CDMATH_SWIG_DIR})
66 endif(CDMATH_WITH_PYTHON)
68 add_subdirectory (${BASE_DIR})
69 add_subdirectory (${MESH_DIR})
71 if (CDMATH_WITH_PETSC)
72 add_subdirectory (${LINEARSOLVER_DIR})
73 endif(CDMATH_WITH_PETSC)
76 if (CDMATH_WITH_DOCUMENTATION)
77 configure_file (Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
78 add_custom_target (docCDMATH COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
79 if ( IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html)
80 install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION share/doc/cdmath-dev-doc)
81 endif( IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html)
82 endif(CDMATH_WITH_DOCUMENTATION)
84 #Debug option : todo = sort flags
85 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg -fprofile-arcs -ftest-coverage -lgcov")
86 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
87 SET(CMAKE_EXE_LINKER_FLAGS "-pg -fprofile-arcs -ftest-coverage -lgcov")
88 SET(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage")
89 endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
92 if (CDMATH_WITH_TESTS)
94 add_subdirectory (${TESTS_DIR})#contains c++ and python tests
95 endif(CDMATH_WITH_TESTS)
98 if (CDMATH_WITH_PACKAGE)
99 include (${CDMATH_SOURCE_DIR}/CPackLists.txt)
100 endif(CDMATH_WITH_PACKAGE)
103 if (CDMATH_WITH_PYTHON AND CDMATH_WITH_POSTPRO)
104 add_subdirectory (postprocessing)
109 ${PROJECT_SOURCE_DIR}/env_CDMATH.sh