Salome HOME
Added new cmake test targets
[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 1)
8 set (CDMATH_VERSION_MINOR 0)
9
10 # Project options
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)
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
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)
84
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")
91
92 # Tests
93 if   (CDMATH_WITH_TESTS)
94   enable_testing ()
95   add_subdirectory (${TESTS_DIR})#contains c++ and python tests
96 endif(CDMATH_WITH_TESTS)
97
98 # Packaging
99 if (CDMATH_WITH_PACKAGE)
100   include (${CDMATH_SOURCE_DIR}/CPackLists.txt)
101 endif(CDMATH_WITH_PACKAGE)
102
103 # Postprocessing
104 if (CDMATH_WITH_PYTHON AND CDMATH_WITH_POSTPRO)
105   add_subdirectory (postprocessing)
106 endif ()
107
108 # Configuration file
109 configure_file(
110     ${PROJECT_SOURCE_DIR}/env_CDMATH.sh
111     @ONLY
112 )
113                                                                                                             
114