set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
+IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
+ CMAKE_POLICY(SET CMP0057 NEW)
+ENDIF()
+
# Project name
project (SOLVERLAB C CXX)
set (SOLVERLAB_VERSION_MAJOR 9)
-set (SOLVERLAB_VERSION_MINOR 7)
-set (SOLVERLAB_VERSION_SUBMINOR alpha)
+set (SOLVERLAB_VERSION_MINOR 8)
+set (SOLVERLAB_VERSION_SUBMINOR 0)
option (SOLVERLAB_WITH_DOCUMENTATION "Generate SOLVERLAB documentation" ON)
option (SOLVERLAB_WITH_PYTHON "Generate Python interface of SOLVERLAB using SWIG" ON)
CACHE STRING "OPENMPI tarball path/url" )
set (DOWNLOAD_HYPRE https://github.com/hypre-space/hypre/archive/v2.23.0.zip
CACHE STRING "HYPRE tarball path/url" )
-set (DOWNLOAD_MPI4PY https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-3.1.1.tar.gz
+set (DOWNLOAD_MPI4PY https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-3.1.2.tar.gz
CACHE STRING "MPY4PY tarball path/url" )
set (CMAKE_BUILD_TYPE Release CACHE STRING "Installation mode")
list (APPEND CMAKE_MODULE_PATH "${SOLVERLAB_SOURCE_DIR}/cmake_files")
-#####################
-# Detection of MPI #
-#####################
+#############################
+# Detection of MPI + MPI4PY #
+#############################
if ( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
if ( DEFINED ENV{MPI_ROOT_DIR} )
set(MPI_HOME $ENV{MPI_ROOT_DIR})
set(SOLVERLAB_WITH_MPI OFF)
endif( DEFINED ENV{MPI_HOME} OR MPI_HOME )
-# Definition of MPI4PY_ROOT_DIR
+# Definition of MPI4PY_ROOT_DIR from either the environment or petsc
if( ${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${MPI4PY_ROOT_DIR})
- if( DEFINED $ENV{MPI4PY_ROOT_DIR})
+ message(STATUS "Defining MPI4PY directory" )
+ if( DEFINED ENV{MPI4PY_ROOT_DIR})
set(MPI4PY_ROOT_DIR $ENV{MPI4PY_ROOT_DIR})
- else( DEFINED $ENV{MPI4PY_ROOT_DIR})
+ else( DEFINED ENV{MPI4PY_ROOT_DIR})
set(MPI4PY_ROOT_DIR ${PETSC_DIR}/${PETSC_ARCH}/lib/mpi4py)
- endif( DEFINED $ENV{MPI4PY_ROOT_DIR})
+ endif( DEFINED ENV{MPI4PY_ROOT_DIR})
endif(${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${MPI4PY_ROOT_DIR})
-if( $MPI4PY_ROOT_DIR)
+if( MPI4PY_ROOT_DIR)
message(STATUS "MPI4PY directory is ${MPI4PY_ROOT_DIR}" )
- SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMPI4PY_ROOT_DIR=${MPI4PY_ROOT_DIR})
-endif( $MPI4PY_ROOT_DIR)
+ SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMPI4PY_ROOT_DIR=${MPI4PY_ROOT_DIR})#Necessary for swig generation of mpi structures
+endif( MPI4PY_ROOT_DIR)
############################
# Definition of HDF5_ROOT #
set(HDF5_LIBRARY_DIR ${HDF5_ROOT}/lib)
set(HDF5_INCLUDE_DIRS ${HDF5_ROOT}/include)
- #define MPI variables
- #set(SOLVERLAB_WITH_MPI ON)
- #set(MPI_HOME ${PETSC_INSTALL} )
- #set(MPI_LIBRARY ${PETSC_INSTALL}/lib/libmpi.so)
- #set(MPIEXEC ${PETSC_INSTALL}/bin/mpiexec)
- #set(MPI4PY_ROOT_DIR ${PETSC_INSTALL}/lib/mpi4py )
-
endif ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" )
endif ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
add_definitions(-DPETSC_VERSION_GREATER_3_5)
endif( ${PETSC_VERSION} VERSION_GREATER 3.5 )
+if ( ${SOLVERLAB_WITH_PYTHON} )
+ set(SLEPC4PY_ROOT_DIR ${PETSC_DIR}/${PETSC_ARCH}/lib/slepc4py)# or use FindSLEPC4PY
+ set(PETSC4PY_ROOT_DIR ${PETSC_DIR}/${PETSC_ARCH}/lib/petsc4py)# or use FindPETSC4PY
+endif( ${SOLVERLAB_WITH_PYTHON} )
+
string(REPLACE ";" ":" PETSC_INCLUDES_INSTALL "${PETSC_INCLUDES}")# use colon instead of semicolon in environment file env_SOLVERLAB.sh
add_library(petsc SHARED IMPORTED)
if (NOT DOXYGEN_FOUND)
message (FATAL_ERROR "Doxygen is needed to build the documentation. Please install it correctly.")
endif(NOT DOXYGEN_FOUND)
+
+ configure_file (Doxyfile.in ${PROJECT_BINARY_DIR}/Doxyfile @ONLY IMMEDIATE)
+ add_custom_target (doc COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/Doxyfile SOURCES ${PROJECT_BINARY_DIR}/Doxyfile) #
+ install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html DESTINATION share/doc/solverlab-dev-doc OPTIONAL) #
+
+ if ( SOLVERLAB_WITH_GUI OR COREFLOWS_WITH_GUI )
+ find_package(Sphinx)
+ add_custom_target (docGUI COMMAND ${SPHINX_EXECUTABLE} -M html "${PROJECT_SOURCE_DIR}/CoreFlows/gui/doc" "${PROJECT_BINARY_DIR}/CoreFlows/gui/doc" SOURCES ${PROJECT_SOURCE_DIR}/CoreFlows/gui/doc) #
+ install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/Utilities/html DESTINATION share/doc/solverlab-gui-doc OPTIONAL) #
+ endif( SOLVERLAB_WITH_GUI OR COREFLOWS_WITH_GUI )
endif(SOLVERLAB_WITH_DOCUMENTATION)
if (SOLVERLAB_WITH_TESTS) #
ENDIF( DEFINED CPPUNIT_ROOT_DIR)
ENDIF( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR})
find_package (CPPUNIT REQUIRED)
+
+ add_custom_target (cpp COMMAND ctest -R .exe)# may be replace ctest -R with ctest -L
+ add_custom_target (mpi COMMAND ctest -R Proc)# may be replace ctest -R with ctest -L
endif(SOLVERLAB_WITH_TESTS)
# Enter subdirectories