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)
11 option (CDMATH_WITH_PETSC "Compile CDMATH with PETSc linking." ON)
12 option (CDMATH_WITH_DOCUMENTATION "Generate documentation with doxygen." ON)
13 option (CDMATH_WITH_PYTHON "Compile Python interface for CDMATH." ON)
14 option (CDMATH_WITH_POSTPRO "Install postprocessing Python modules." ON)
15 option (CDMATH_WITH_PACKAGE "Generate RPM, Debian and tarball packages." OFF)
16 option (CDMATH_WITH_TESTS "Compile unit testing." 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 (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
79 SOURCES ${PROJECT_BINARY_DIR}/Doxyfile)
80 if ( IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html)
81 install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION share/doc/cdmath-dev-doc)
82 endif( IS_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html)
83 endif(CDMATH_WITH_DOCUMENTATION)
85 #Debug option : todo = sort flags
86 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg -fprofile-arcs -ftest-coverage -lgcov")
87 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
88 SET(CMAKE_EXE_LINKER_FLAGS "-pg -fprofile-arcs -ftest-coverage -lgcov")
89 SET(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage")
90 endif(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
93 if (CDMATH_WITH_TESTS)
95 add_subdirectory (${TESTS_DIR})#contains c++ and python tests
96 endif(CDMATH_WITH_TESTS)
99 if (CDMATH_WITH_PACKAGE)
100 include (${CDMATH_SOURCE_DIR}/CPackLists.txt)
101 endif(CDMATH_WITH_PACKAGE)
104 if (CDMATH_WITH_PYTHON AND CDMATH_WITH_POSTPRO)
105 add_subdirectory (postprocessing)
110 ${PROJECT_SOURCE_DIR}/env_CDMATH.sh