]> SALOME platform Git repositories - tools/solverlab.git/blob - CDMATH/CMakeLists.txt
Salome HOME
Updated GUI documentation
[tools/solverlab.git] / CDMATH / CMakeLists.txt
1 cmake_minimum_required (VERSION 3.1)
2 set(CMAKE_CXX_STANDARD 11)
3 set(CMAKE_CXX_STANDARD_REQUIRED ON)
4
5 # Project name
6 project (CDMATH)
7 set (CDMATH_VERSION_MAJOR 9)
8 set (CDMATH_VERSION_MINOR 8)
9
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")
17
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" )
25
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" )
39
40
41 # Base directories
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)
47
48 set (TESTS_DIR ${CDMATH_SOURCE_DIR}/tests)
49
50 ###Define CDMATH_INCLUDES and CDMATH_LIBRARIES for the compilation of CoreFlows
51 set(CDMATH_INCLUDES 
52         ${MEDFILE_INCLUDE_DIRS} ${MEDCOUPLING_INCLUDE_DIR}
53         ${BASE_DIR}/inc ${MESH_DIR}/inc ${LINEARSOLVER_DIR}/inc 
54         PARENT_SCOPE    )
55
56 set (CDMATH_LIBRARIES
57         medC medloader  medcoupling
58         base mesh       linearsolver
59         PARENT_SCOPE    )
60  
61 # Swig interface
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)
67
68 add_subdirectory (${BASE_DIR})
69 add_subdirectory (${MESH_DIR})
70
71 if   (CDMATH_WITH_PETSC)
72     add_subdirectory (${LINEARSOLVER_DIR})
73 endif(CDMATH_WITH_PETSC)
74
75 # Documentation
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)
83
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")
90
91 # Tests
92 if   (CDMATH_WITH_TESTS)
93   enable_testing ()
94   add_subdirectory (${TESTS_DIR})#contains c++ and python tests
95 endif(CDMATH_WITH_TESTS)
96
97 # Packaging
98 if (CDMATH_WITH_PACKAGE)
99   include (${CDMATH_SOURCE_DIR}/CPackLists.txt)
100 endif(CDMATH_WITH_PACKAGE)
101
102 # Postprocessing
103 if (CDMATH_WITH_PYTHON AND CDMATH_WITH_POSTPRO)
104   add_subdirectory (postprocessing)
105 endif ()
106
107 # Configuration file
108 configure_file(
109     ${PROJECT_SOURCE_DIR}/env_CDMATH.sh
110     @ONLY
111 )
112                                                                                                             
113