+
+#####################
+# Detection of MPI #
+#####################
+if ( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
+ if ( DEFINED ENV{MPI_ROOT_DIR} )
+ set(MPI_HOME $ENV{MPI_ROOT_DIR})
+ else ( DEFINED ENV{MPI_ROOT_DIR} )
+ set(MPI_HOME ${MPI_ROOT_DIR})
+ endif( DEFINED ENV{MPI_ROOT_DIR} )
+endif( DEFINED ENV{MPI_ROOT_DIR} OR DEFINED MPI_ROOT_DIR )
+
+# Definition of SOLVERLAB_WITH_MPI
+if( DEFINED ENV{MPI_HOME} OR MPI_HOME )
+ set(SOLVERLAB_WITH_MPI ON)
+ find_package(MPI)
+ if( ${MPI_LIBRARY} STREQUAL "MPI_LIBRARY-NOTFOUND")
+ set ( MPI_LIBRARY ${MPI_HOME}/lib/libmpi.so )
+ endif(${MPI_LIBRARY} STREQUAL "MPI_LIBRARY-NOTFOUND")
+ message ( STATUS "MPI executable is ${MPIEXEC}" )
+else( DEFINED ENV{MPI_HOME} OR MPI_HOME )
+ set(SOLVERLAB_WITH_MPI OFF)
+endif( DEFINED ENV{MPI_HOME} OR MPI_HOME )
+
+# Definition of MPI4PY_ROOT_DIR
+if( ${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${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})
+ set(MPI4PY_ROOT_DIR ${PETSC_DIR}/${PETSC_ARCH}/lib/mpi4py)
+ endif( DEFINED ENV{MPI4PY_ROOT_DIR})
+endif(${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${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)
+
+############################
+# Definition of HDF5_ROOT #
+############################
+if ( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )
+ if ( DEFINED ENV{HDF5_ROOT_DIR} )
+ set(HDF5_ROOT $ENV{HDF5_ROOT_DIR})
+ else ( DEFINED ENV{HDF5_ROOT_DIR} )
+ set(HDF5_ROOT ${HDF5_ROOT_DIR})
+ endif( DEFINED ENV{HDF5_ROOT_DIR} )
+endif( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )