Salome HOME
Corrected MPI detection
[tools/solverlab.git] / CMakeLists.txt
index 9e255b092e4f59664b59d70df0843df34f888340..237fb4765d731bf93aaca00fcbd76de72dccb559 100644 (file)
@@ -57,9 +57,9 @@ include(ExternalProject)#For PETSc, MED and MEDCoupling
 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})
@@ -80,7 +80,7 @@ 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
+# Definition of MPI4PY_ROOT_DIR from either the environment or petsc
 if(   ${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${MPI4PY_ROOT_DIR})
   message(STATUS "Defining MPI4PY directory" )
   if(    DEFINED ENV{MPI4PY_ROOT_DIR})
@@ -92,7 +92,7 @@ endif(${SOLVERLAB_WITH_PYTHON} AND ${SOLVERLAB_WITH_MPI} AND NOT ${MPI4PY_ROOT_D
 
 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})
+  SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMPI4PY_ROOT_DIR=${MPI4PY_ROOT_DIR})#Necessary for swig generation of mpi structures
 endif( MPI4PY_ROOT_DIR)
 
 ############################
@@ -347,13 +347,6 @@ endif( DEFINED ENV{HDF5_ROOT_DIR} OR DEFINED HDF5_ROOT_DIR )
       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 )
 
@@ -361,6 +354,11 @@ if   ( ${PETSC_VERSION} VERSION_GREATER 3.5 )
   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)
@@ -646,6 +644,16 @@ if (SOLVERLAB_WITH_DOCUMENTATION)
   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)                                                                                  #
@@ -658,6 +666,9 @@ 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