X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=c50d4143e1f8f83010ee2f104b2430864ee55bda;hb=94ba913663004ada6ee4653d9323db57849a550c;hp=8b9c6da54ff7ce4e7a40cffaf11b0ba1e8d2611e;hpb=6dc33dcd70379d2205a0a4f1ba47ca1d54808b4d;p=tools%2Fsolverlab.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b9c6da..c50d414 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,11 +9,12 @@ set (SOLVERLAB_VERSION_MINOR 7) set (SOLVERLAB_VERSION_SUBMINOR alpha) option (SOLVERLAB_WITH_DOCUMENTATION "Generate SOLVERLAB documentation" ON) -option (SOLVERLAB_WITH_PYTHON "Compile Python interface of SOLVERLAB" ON) +option (SOLVERLAB_WITH_PYTHON "Generate Python interface of SOLVERLAB using SWIG" ON) option (SOLVERLAB_WITH_GUI "Compile a Graphic user Interface for SOLVERLAB" OFF) option (SOLVERLAB_WITH_PACKAGE "Generate RPM, Debian and tarball packages" OFF) option (SOLVERLAB_WITH_COREFLOWS "Generate COREFLOWS module" ON) option (SOLVERLAB_WITH_TESTS "Generate SOLVERLAB example tests" ON) +option (SOLVERLAB_WITH_MPI "Generate a parallel version of SOLVERLAB" OFF) #Path to installed libraries set (PETSC_DIR OFF CACHE STRING "PETSc library path" ) @@ -23,11 +24,12 @@ set (MEDFILE_ROOT_DIR OFF CACHE STRING "MED library path" ) set (MEDCOUPLING_ROOT_DIR OFF CACHE STRING "MEDCoupling library path" ) set (PYTHON_ROOT_DIR OFF CACHE STRING "Python library path" ) set (PARAVIEW_ROOT_DIR OFF CACHE STRING "PARAVIEW library path" ) +set (MPI4PY_ROOT_DIR OFF CACHE STRING "MPI4PY library path" ) #url of tarball librairies -set (DOWNLOAD_PETSC http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.14.2.tar.gz +set (DOWNLOAD_PETSC http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.16.0.tar.gz CACHE STRING "PETSc tarball path/url" ) -set (DOWNLOAD_SLEPC https://slepc.upv.es/download/distrib/slepc-3.14.1.tar.gz +set (DOWNLOAD_SLEPC https://slepc.upv.es/download/distrib/slepc-3.16.0.tar.gz CACHE STRING "SLEPC tarball path/url" ) set (DOWNLOAD_F2CBLASLAPACK https://www.mcs.anl.gov/petsc/mirror/externalpackages/f2cblaslapack-3.4.2.q4.tar.gz CACHE STRING "F2CBLASLAPACK tarball path/url" ) @@ -35,12 +37,14 @@ set (DOWNLOAD_HDF5 https://support.hdfgroup.org/ftp/HDF5/releases/hdf5- CACHE STRING "HDF5 tarball path/url" ) set (DOWNLOAD_MED http://files.salome-platform.org/Salome/other/med-4.1.0.tar.gz CACHE STRING "MED tarball path/url") -set (DOWNLOAD_MEDCOUPLING http://files.salome-platform.org/Salome/other/medCoupling-9.6.0.tar.gz +set (DOWNLOAD_MEDCOUPLING http://files.salome-platform.org/Salome/other/medCoupling-9.7.0.tar.gz CACHE STRING "MEDCoupling tarball path/url" ) set (DOWNLOAD_OPENMPI https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.6.tar.gz CACHE STRING "OPENMPI tarball path/url" ) -set (DOWNLOAD_HYPRE https://github.com/hypre-space/hypre/archive/v2.20.0.zip +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.2.tar.gz + CACHE STRING "MPY4PY tarball path/url" ) set (CMAKE_BUILD_TYPE Release CACHE STRING "Installation mode") @@ -48,16 +52,55 @@ include(ExternalProject)#For PETSc, MED and MEDCoupling list (APPEND CMAKE_MODULE_PATH "${SOLVERLAB_SOURCE_DIR}/cmake_files") -if( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME ) + +##################### +# 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 DEFINED MPI_HOME ) +else( DEFINED ENV{MPI_HOME} OR MPI_HOME ) set(SOLVERLAB_WITH_MPI OFF) -endif( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME ) +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 ) ###################################################### # Detection or compilation of PETSc+SLEPc+HDF5 # @@ -123,7 +166,32 @@ endif( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME ) set(PETSC_INCLUDES /usr/include/petsc /usr/include/petsc/petsc/mpiuni) set(PETSC_LIBRARIES /usr/lib64/libpetsc.so) - set(PETSC_VERSION "3.8") #3.8 for fedora 26 , 3.9 for fedora 29 , 3.10 for fedora 30, , 3.12 for fedora 32 + file(STRINGS /usr/include/petsc/petscversion.h petscversion_file) + FOREACH(line ${petscversion_file}) + string(FIND "${line}" "#define PETSC_VERSION_MAJOR " pos) + IF(NOT ${pos} EQUAL -1) + string(LENGTH ${line} line_length_major)#length of the line + MATH(EXPR petsc_version_major "${line_length_major}-1")#line ends with "x", that counts for 1 character + string(SUBSTRING ${line} ${petsc_version_major} 1 PETSC_VERSION_MAJOR) + break() + ENDIF(NOT ${pos} EQUAL -1) + ENDFOREACH(line ${petscversion_file}) + FOREACH(line ${petscversion_file}) + string(FIND "${line}" "#define PETSC_VERSION_MINOR " pos) + IF(NOT ${pos} EQUAL -1) + string(LENGTH ${line} line_length_minor)#length of the line + if(${line_length_minor} EQUAL ${line_length_major}) + MATH(EXPR petsc_version_minor "${line_length_minor}-1")#line ends with "y", that counts for 1 character + string(SUBSTRING ${line} ${petsc_version_minor} 1 PETSC_VERSION_MINOR) + break() + else(${line_length_minor} EQUAL ${line_length_major}) + MATH(EXPR petsc_version_minor "${line_length_minor}-2")#line ends with "yy", that counts for two characters + string(SUBSTRING ${line} ${petsc_version_minor} 2 PETSC_VERSION_MINOR) + endif(${line_length_minor} EQUAL ${line_length_major}) + ENDIF(NOT ${pos} EQUAL -1) + ENDFOREACH(line ${petscversion_file}) + set(PETSC_VERSION ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}) #3.8 for fedora 26 , 3.9 for fedora 29 , 3.10 for fedora 30 , 3.12 for fedora 32 , 3.14 for fedora 34 , 3.15 for fedora 35 + message(STATUS "PETSc detected, version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}" ) set(CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, petsc-devel (>= 3.4)") # This is not fully working yet. set(PETSC_INSTALL ${PETSC_DIR}) @@ -135,6 +203,32 @@ endif( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME ) set(SLEPC_DIR /usr/) set(SLEPC_INCLUDES ${SLEPC_DIR}/include) set(SLEPC_LIBRARIES ${SLEPC_DIR}/lib/libslepc.so) + file(STRINGS /usr/include/slepc/slepcversion.h slepcversion_file) + FOREACH(line ${slepcversion_file}) + string(FIND "${line}" "#define SLEPC_VERSION_MAJOR " pos) + IF(NOT ${pos} EQUAL -1) + string(LENGTH ${line} line_length_major)#length of the line + MATH(EXPR slepc_version_major "${line_length_major}-1")#line ends with "x", that counts for 1 character + string(SUBSTRING ${line} ${slepc_version_major} 1 SLEPC_VERSION_MAJOR) + break() + ENDIF(NOT ${pos} EQUAL -1) + ENDFOREACH(line ${slepcversion_file}) + FOREACH(line ${slepcversion_file}) + string(FIND "${line}" "#define SLEPC_VERSION_MINOR " pos) + IF(NOT ${pos} EQUAL -1) + string(LENGTH ${line} line_length_minor)#length of the line + if(${line_length_minor} EQUAL ${line_length_major}) + MATH(EXPR slepc_version_minor "${line_length_minor}-1")#line ends with "y", that counts for 1 character + string(SUBSTRING ${line} ${slepc_version_minor} 1 SLEPC_VERSION_MINOR) + break() + else(${line_length_minor} EQUAL ${line_length_major}) + MATH(EXPR slepc_version_minor "${line_length_minor}-2")#line ends with "yy", that counts for two characters + string(SUBSTRING ${line} ${slepc_version_minor} 2 SLEPC_VERSION_MINOR) + endif(${line_length_minor} EQUAL ${line_length_major}) + ENDIF(NOT ${pos} EQUAL -1) + ENDFOREACH(line ${slepcversion_file}) + set(SLEPC_VERSION ${SLEPC_VERSION_MAJOR}.${SLEPC_VERSION_MINOR}) #3.8 for fedora 26 , 3.9 for fedora 29 , 3.10 for fedora 30 , 3.12 for fedora 32 , 3.14 for fedora 34 , 3.15 for fedora 35 + message(STATUS "SLEPc detected, version is ${SLEPC_VERSION_MAJOR}.${SLEPC_VERSION_MINOR}" ) set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, slepc-devel (>= 3.4)") # This is not fully working yet. else ( IS_DIRECTORY "/usr/include/slepc/" AND EXISTS "/usr/lib64/libslepc.so" ) message( FATAL_ERROR "SLEPc not found in the system" ) @@ -193,7 +287,7 @@ endif( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME ) URL ${DOWNLOAD_PETSC} SOURCE_DIR ${PETSC_DIR} BUILD_IN_SOURCE TRUE - CONFIGURE_COMMAND /configure --prefix=${PETSC_INSTALL} --with-debugging=0 --download-f2cblaslapack=${DOWNLOAD_F2CBLASLAPACK} --with-fc=0 --download-slepc=${DOWNLOAD_SLEPC} --download-hdf5=${DOWNLOAD_HDF5} --with-mpi=0 # --download-openmpi=${DOWNLOAD_OPENMPI} --download-hypre=${DOWNLOAD_HYPRE} + CONFIGURE_COMMAND /configure --prefix=${PETSC_INSTALL} --with-debugging=0 --download-f2cblaslapack=${DOWNLOAD_F2CBLASLAPACK} --with-mpi=0 --with-fc=0 --download-slepc=${DOWNLOAD_SLEPC} --download-hdf5=${DOWNLOAD_HDF5} --with-petsc4py=yes --download-slepc-configure-arguments="--with-slepc4py=yes" # --download-openmpi=${DOWNLOAD_OPENMPI} --download-hypre=${DOWNLOAD_HYPRE} --download-mpi4py=${DOWNLOAD_MPI4PY} BUILD_COMMAND make all TEST_COMMAND make check INSTALL_COMMAND make install @@ -254,6 +348,7 @@ endif( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME ) #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 ) @@ -339,7 +434,7 @@ if( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR}) find_package(MEDCoupling CONFIG REQUIRED) # CONFIG is important ! message( STATUS "MEDCoupling found. Version is ${MEDCoupling_VERSION}") -else( DEFINED MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR}) +else( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR}) message(STATUS "MEDCoupling will be downloaded and installed from ${DOWNLOAD_MEDCOUPLING}") set(MEDCOUPLING_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/lib/medcoupling) # Location of the final install SET(ENV{HDF5_ROOT} ${HDF5_ROOT})#MEDCoupling install process seems to require an environment variable @@ -419,9 +514,9 @@ if ( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR}) set( PARAVIEW_LIBRARIES_DIR $ENV{PARAVIEW_ROOT_DIR}/lib) endif( PARAVIEW_ROOT_DIR ) else( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR}) - message(STATUS "PARAVIEW_ROOT_DIR not set. Trying to detect paraview.") + message(STATUS "PARAVIEW_ROOT_DIR not set. Trying to detect paraview in the system.") set( PARAVIEW_INCLUDE_DIR /usr/include/paraview/) - set( PARAVIEW_LIBRARIES_DIR /usr/lib/paraview/:/usr/lib64/paraview/:/usr/lib64/vtk/:/usr/lib/vtk/) + set( PARAVIEW_LIBRARIES_DIR /usr/lib/paraview/:/usr/lib64/paraview/:/usr/lib64/vtk/:/usr/lib/vtk/:/usr/lib/x86_64-linux-gnu) endif( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR}) if ( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} ) @@ -463,13 +558,13 @@ ELSE ( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6 ENDIF( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" ) # Find python -IF ( DEFINED PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR}) - IF ( DEFINED PYTHON_ROOT_DIR ) +IF ( PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR}) + IF ( PYTHON_ROOT_DIR ) set(Python_ROOT_DIR ${PYTHON_ROOT_DIR} ) - ELSE( DEFINED PYTHON_ROOT_DIR ) + ELSE( PYTHON_ROOT_DIR ) set(Python_ROOT_DIR $ENV{PYTHON_ROOT_DIR} ) - ENDIF( DEFINED PYTHON_ROOT_DIR) -ENDIF(DEFINED PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR}) + ENDIF( PYTHON_ROOT_DIR) +ENDIF( PYTHON_ROOT_DIR OR DEFINED ENV{PYTHON_ROOT_DIR}) IF (${CMAKE_VERSION} VERSION_GREATER "3.12.0") find_package(Python ${PYTHON2OR3} REQUIRED COMPONENTS Interpreter Development ) @@ -484,49 +579,97 @@ ELSE (${CMAKE_VERSION} VERSION_GREATER "3.12.0") set(Python_VERSION_MINOR ${PYTHON_VERSION_MINOR}) ENDIF(${CMAKE_VERSION} VERSION_GREATER "3.12.0") -#PyQt5 -IF ( NOT PYQT5_ROOT_DIR ) - set(PYQT5_ROOT_DIR $ENV{PYQT5_ROOT_DIR} ) -ENDIF( NOT PYQT5_ROOT_DIR ) +message(STATUS "Python version found is ${Python_VERSION}") -#Matplotlib -IF ( NOT MATPLOTLIB_ROOT_DIR ) +#Matplotlib root dir +IF ( NOT DEFINED MATPLOTLIB_ROOT_DIR ) set(MATPLOTLIB_ROOT_DIR $ENV{MATPLOTLIB_ROOT_DIR} ) -ENDIF( NOT MATPLOTLIB_ROOT_DIR ) - -#HDF5_ROOT_DIR -IF ( NOT HDF5_ROOT_DIR ) - IF ( ENV{HDF5_ROOT_DIR} ) - set(HDF5_ROOT_DIR $ENV{HDF5_ROOT_DIR} ) - ELSE( ENV{HDF5_ROOT_DIR} ) - set(HDF5_ROOT_DIR ${HDF5_ROOT} ) - ENDIF( ENV{HDF5_ROOT_DIR} ) -ENDIF( NOT HDF5_ROOT_DIR ) +ENDIF( NOT DEFINED MATPLOTLIB_ROOT_DIR ) +#PyQt5 root dir +IF ( NOT DEFINED PYQT5_ROOT_DIR ) + set(PYQT5_ROOT_DIR $ENV{PYQT5_ROOT_DIR} ) +ENDIF( NOT DEFINED PYQT5_ROOT_DIR ) #Paraview library paths set (PV_LIB_DIR /usr/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/paraview/:/usr/lib64/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtk/:${MATPLOTLIB_ROOT_DIR}/lib/:${PARAVIEW_LIBRARIES_DIR}) -set (PV_PYTHON_DIR /usr/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/paraview/:/usr/lib64/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtk/:/usr/lib64/paraview/site-packages/:/usr/lib64/paraview/site-packages/paraview/:/usr/lib64/paraview/site-packages/vtk/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/paraview/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtkmodules:/usr/lib/paraview/site-packages/paraview:/usr/lib/paraview/site-packages/paraview/vtk:${PARAVIEW_ROOT_DIR}/lib/:${PARAVIEW_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/:${PARAVIEW_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtkmodules/:${MATPLOTLIB_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages:${PYQT5_ROOT_DIR}:${PYQT5_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages) - -message(STATUS "Python version found is ${Python_VERSION}") +set (PV_PYTHON_DIR /usr/lib/python${Python_VERSION_MAJOR}/dist-packages/:/usr/lib/python${Python_VERSION_MAJOR}/dist-packages/paraview/:/usr/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/dist-packages/paraview/:/usr/lib64/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtk/:/usr/lib64/paraview/site-packages/:/usr/lib64/paraview/site-packages/paraview/:/usr/lib64/paraview/site-packages/vtk/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/paraview/:/usr/lib64/paraview/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtkmodules:/usr/lib/paraview/site-packages/paraview:/usr/lib/paraview/site-packages/paraview/vtk:${PARAVIEW_ROOT_DIR}/lib/:${PARAVIEW_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/:${PARAVIEW_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/vtkmodules/:${MATPLOTLIB_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages:${PYQT5_ROOT_DIR}:${PYQT5_ROOT_DIR}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages) + +# Detection of python-paraview +string(REPLACE ":" ";" PV_PYTHON_DIR_PATHS "${PV_PYTHON_DIR}")# use semicolon instead of colon in PATH search +find_file(python-paraview simple.py PATHS ${PV_PYTHON_DIR_PATHS}) +if( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" ) + message(WARNING "Python Paraview library not found. Post processing will fail in SOLVERLAB scripts.") + set(PRELOAD_NETCDF_ON_UBUNTU20 OFF) +else( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" ) + if( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" ) + message ( STATUS "Using system Paraview python libraries on Ubuntu 20.04 requires the presence and preload of library netcdf (bug in linkage)." ) + if( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" ) + message ( STATUS "Library netcdf found in the system. Paraview python libraries should be functional." ) + set(PRELOAD_NETCDF_ON_UBUNTU20 ON) + else( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" ) + message ( WARNING "Library netcdf not found in system. Paraview python libraries may not be functional (bug in linkage)." ) + set(PRELOAD_NETCDF_ON_UBUNTU20 OFF) + endif( EXISTS "/usr/lib/x86_64-linux-gnu/libnetcdf.so" ) + else( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" ) + message(STATUS "Python Paraview library found. Post processing will work in SOLVERLAB scripts.") + set(PRELOAD_NETCDF_ON_UBUNTU20 OFF) + endif( ${python-paraview} STREQUAL "/usr/lib/python3/dist-packages/paraview/simple.py" ) +endif( ${python-paraview} STREQUAL "python-paraview-NOTFOUND" ) + +# Find SWIG +IF ( DEFINED SWIG_ROOT_DIR OR DEFINED ENV{SWIG_ROOT_DIR}) + IF ( DEFINED SWIG_ROOT_DIR ) + set(SWIG_EXECUTABLE ${SWIG_ROOT_DIR}/bin/swig ) + ELSE ( DEFINED SWIG_ROOT_DIR ) + set(SWIG_EXECUTABLE $ENV{SWIG_ROOT_DIR}/bin/swig ) + ENDIF( DEFINED SWIG_ROOT_DIR) +ENDIF( DEFINED SWIG_ROOT_DIR OR DEFINED ENV{SWIG_ROOT_DIR}) find_package (SWIG 3.0 REQUIRED) +# Find Doxygen if (SOLVERLAB_WITH_DOCUMENTATION) # + IF ( DEFINED DOXYGEN_ROOT_DIR OR DEFINED ENV{DOXYGEN_ROOT_DIR}) + IF ( DEFINED DOXYGEN_ROOT_DIR ) + set(DOXYGEN_EXECUTABLE ${DOXYGEN_ROOT_DIR}/bin/doxygen ) + ELSE ( DEFINED DOXYGEN_ROOT_DIR ) + set(DOXYGEN_EXECUTABLE $ENV{DOXYGEN_ROOT_DIR}/bin/doxygen ) + ENDIF( DEFINED DOXYGEN_ROOT_DIR) + ENDIF( DEFINED DOXYGEN_ROOT_DIR OR DEFINED ENV{DOXYGEN_ROOT_DIR}) find_package (Doxygen) # set (CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, doxygen, graphviz, mscgen") set (CPACK_RPM_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES}, doxygen, graphviz, mscgen") if (NOT DOXYGEN_FOUND) message (FATAL_ERROR "Doxygen is needed to build the documentation. Please install it correctly.") endif(NOT DOXYGEN_FOUND) -endif() +endif(SOLVERLAB_WITH_DOCUMENTATION) + if (SOLVERLAB_WITH_TESTS) # enable_testing () + IF ( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR}) + IF ( DEFINED CPPUNIT_ROOT_DIR ) + set(CPPUNIT_ROOT_USER ${CPPUNIT_ROOT_DIR} ) + ELSE ( DEFINED CPPUNIT_ROOT_DIR ) + set(CPPUNIT_ROOT_USER $ENV{CPPUNIT_ROOT_DIR} ) + ENDIF( DEFINED CPPUNIT_ROOT_DIR) + ENDIF( DEFINED CPPUNIT_ROOT_DIR OR DEFINED ENV{CPPUNIT_ROOT_DIR}) find_package (CPPUNIT REQUIRED) -endif() +endif(SOLVERLAB_WITH_TESTS) # Enter subdirectories +set(CDMATH_WITH_POSTPRO ${SOLVERLAB_WITH_POSTPRO} ) +set(CDMATH_WITH_PETSC ${SOLVERLAB_WITH_PETSC} ) +set(CDMATH_WITH_DOCUMENTATION ${SOLVERLAB_WITH_DOCUMENTATION} ) +set(CDMATH_WITH_PYTHON ${SOLVERLAB_WITH_PYTHON} ) +set(CDMATH_WITH_PACKAGE ${SOLVERLAB_WITH_PACKAGE} ) +set(CDMATH_WITH_TESTS ${SOLVERLAB_WITH_TESTS} ) add_subdirectory (CDMATH) if(SOLVERLAB_WITH_COREFLOWS) + set(COREFLOWS_WITH_DOCUMENTATION ${SOLVERLAB_WITH_DOCUMENTATION} ) + set(COREFLOWS_WITH_PYTHON ${SOLVERLAB_WITH_PYTHON} ) + set(COREFLOWS_WITH_GUI ${SOLVERLAB_WITH_GUI} ) + set(COREFLOWS_WITH_PACKAGE ${SOLVERLAB_WITH_PACKAGE} ) + set(COREFLOWS_WITH_TESTS ${SOLVERLAB_WITH_TESTS} ) add_subdirectory (CoreFlows) endif(SOLVERLAB_WITH_COREFLOWS) @@ -537,4 +680,3 @@ configure_file( @ONLY ) -