Salome HOME
Corrected minor errors
[tools/solverlab.git] / CMakeLists.txt
index 076e609d4356b136bc9cd529f5ddef725f038e52..5c85481e576df44be82265a3af10347919ef8580 100644 (file)
@@ -4,8 +4,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 # Project name
 project (SOLVERLAB C CXX)
-set (SOLVERLAB_VERSION_MAJOR 0)
-set (SOLVERLAB_VERSION_MINOR 1)
+set (SOLVERLAB_VERSION_MAJOR 9)
+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)
@@ -21,11 +22,12 @@ set (HDF5_ROOT            OFF CACHE STRING "HDF5 library path" )#For the compila
 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" )
 
 #url of tarball librairies
-set (DOWNLOAD_PETSC         http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.14.0.tar.gz 
+set (DOWNLOAD_PETSC         http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.14.2.tar.gz 
      CACHE STRING           "PETSc tarball path/url" )
-set (DOWNLOAD_SLEPC         https://slepc.upv.es/download/distrib/slepc-3.14.0.tar.gz
+set (DOWNLOAD_SLEPC         https://slepc.upv.es/download/distrib/slepc-3.14.1.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" )
@@ -33,14 +35,29 @@ 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.4.0.tar.gz
+set (DOWNLOAD_MEDCOUPLING   http://files.salome-platform.org/Salome/other/medCoupling-9.6.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
+     CACHE STRING           "HYPRE tarball path/url" )
 
 set (CMAKE_BUILD_TYPE Release CACHE STRING "Installation mode")
 
+include(ExternalProject)#For PETSc, MED and MEDCoupling
+
 list (APPEND CMAKE_MODULE_PATH "${SOLVERLAB_SOURCE_DIR}/cmake_files")
 
-include(ExternalProject)#For PETSc, MED and MEDCoupling
+if( DEFINED ENV{MPI_HOME} OR DEFINED 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 )
+  set(SOLVERLAB_WITH_MPI OFF)
+endif( DEFINED ENV{MPI_HOME} OR DEFINED MPI_HOME )
 
 ######################################################
 # Detection or compilation of PETSc+SLEPc+HDF5       #
@@ -57,6 +74,9 @@ include(ExternalProject)#For PETSc, MED and MEDCoupling
     petsc_get_version ()
 
     message ( STATUS "PETSc found. Version is ${PETSC_VERSION_MAJOR}.${PETSC_VERSION_MINOR}.${PETSC_VERSION_SUBMINOR}" )
+    message ( STATUS "PETSc compiler is ${PETSC_COMPILER}" )
+    message ( STATUS "PETSc executable is ${PETSC_MPIEXEC}")
+
     set(PETSC_INSTALL ${PETSC_DIR})
 
     #Define and search slepc variables
@@ -168,7 +188,7 @@ include(ExternalProject)#For PETSc, MED and MEDCoupling
       URL               ${DOWNLOAD_PETSC}   
       SOURCE_DIR        ${PETSC_DIR}
       BUILD_IN_SOURCE   TRUE
-      CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${PETSC_INSTALL} --with-debugging=0 --with-mpi=0 --download-f2cblaslapack=${DOWNLOAD_F2CBLASLAPACK} --with-fc=0 --download-slepc=${DOWNLOAD_SLEPC} --download-hdf5=${DOWNLOAD_HDF5}
+      CONFIGURE_COMMAND <SOURCE_DIR>/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}
       BUILD_COMMAND     make all
       TEST_COMMAND      make check
       INSTALL_COMMAND   make install
@@ -195,8 +215,8 @@ include(ExternalProject)#For PETSc, MED and MEDCoupling
 
       #define slepc variables
       set(SLEPC_DIR ${PETSC_INSTALL})
-      set(SLEPC_INCLUDES ${SLEPC_DIR}/include  ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/slepc-3.13.4/include ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/slepc-3.13.4/installed-arch-linux2-c-opt/include)
-      set(SLEPC_LIBRARIES ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/slepc-3.13.4/installed-arch-linux2-c-opt/lib/libslepc.so)
+      set(SLEPC_INCLUDES ${SLEPC_DIR}/include  ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/slepc-3.14.1/include ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/slepc-3.14.1/installed-arch-linux2-c-opt/include)
+      set(SLEPC_LIBRARIES ${PETSC_DIR}/${PETSC_ARCH}/externalpackages/slepc-3.14.1/installed-arch-linux2-c-opt/lib/libslepc.so)
       message( STATUS "SLEPc includes ${SLEPC_INCLUDES}")
 
       #define hdf5 variables
@@ -210,12 +230,18 @@ include(ExternalProject)#For PETSc, MED and MEDCoupling
       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)
+
     endif ( IS_DIRECTORY "/usr/include/petsc/" AND EXISTS "/usr/lib64/libpetsc.so" )
   endif ( DEFINED ENV{PETSC_DIR} OR PETSC_DIR )
 
-  if   ( ${PETSC_VERSION} VERSION_GREATER 3.5 )
-    add_definitions(-DPETSC_VERSION_GREATER_3_5)
-  endif( ${PETSC_VERSION} VERSION_GREATER 3.5 )
+if   ( ${PETSC_VERSION} VERSION_GREATER 3.5 )
+  add_definitions(-DPETSC_VERSION_GREATER_3_5)
+endif( ${PETSC_VERSION} VERSION_GREATER 3.5 )
 
 string(REPLACE ";" ":"  PETSC_INCLUDES_INSTALL "${PETSC_INCLUDES}")# use colon instead of semicolon in environment file env_SOLVERLAB.sh
 
@@ -234,7 +260,6 @@ if( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
   endif( NOT MEDFILE_ROOT_DIR )
 
   find_package (MEDFile REQUIRED)
-  message (STATUS "MEDFile found in ${MEDFILE_ROOT_DIR}")
 
 else( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
 
@@ -254,7 +279,7 @@ else( MEDFILE_ROOT_DIR OR DEFINED ENV{MEDFILE_ROOT_DIR})
         URL               ${DOWNLOAD_MED}  #location of med tarball
         SOURCE_DIR        ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MED_TARBALL_NAME}
         BUILD_IN_SOURCE   TRUE
-        CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${MEDFILE_ROOT_DIR}  --with-hdf5=${HDF5_ROOT} --with-hdf5-include=${HDF5_ROOT}/include --with-hdf5-lib=${HDF5_LIBRARY_DIR} --with-hdf5-bin=${HDF5_ROOT}/bin  --with-swig=yes 
+        CONFIGURE_COMMAND <SOURCE_DIR>/configure --prefix=${MEDFILE_ROOT_DIR}  --with-hdf5=${HDF5_ROOT} --with-hdf5-include=${HDF5_ROOT}/include --with-hdf5-lib=${HDF5_LIBRARY_DIR} --with-hdf5-bin=${HDF5_ROOT}/bin  --with-swig=yes --disable-fortran #CC=${PETSC_INSTALL}/bin/mpicc
         BUILD_COMMAND     make
         INSTALL_COMMAND   make install
         INSTALL_DIR       ${MEDFILE_ROOT_DIR}
@@ -297,7 +322,20 @@ if( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
     message (STATUS "MEDCoupling library found in ${MEDCOUPLING_ROOT_DIR}")
   endif( NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so OR NOT EXISTS ${MEDCOUPLING_ROOT_DIR}/include/MEDCoupling.hxx)
 
-else( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
+  add_library(medloader   SHARED IMPORTED )
+  set_property(TARGET medloader   PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so)
+  add_library(interpkernel   SHARED IMPORTED )
+  set_property(TARGET interpkernel   PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libinterpkernel.so)
+  add_library(medcouplingremapper   SHARED IMPORTED )
+  set_property(TARGET medcouplingremapper   PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedcouplingremapper.so)
+  add_library(medcouplingcpp   SHARED IMPORTED )
+  set_property(TARGET medcouplingcpp   PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedcouplingcpp.so)
+
+  set(MEDCoupling_DIR  ${MEDCOUPLING_ROOT_DIR}/cmake_files)
+  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})
   message(STATUS "MEDCoupling will be downloaded and installed from ${DOWNLOAD_MEDCOUPLING}")
   set(MEDCOUPLING_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/share/medcoupling) # Location of the final install
   SET(ENV{HDF5_ROOT} ${HDF5_ROOT})#MEDCoupling install process seems to require an environment variable
@@ -308,15 +346,15 @@ else( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
   MATH(EXPR start_tarball_name "${start_tarball_name}+1")#start after the occurence of "/"
   MATH(EXPR tarball_name_length "${tarball_url_length}-${start_tarball_name}-7")#name ends before .tar.gz that counts for 7 characters
   string(SUBSTRING ${DOWNLOAD_MEDCOUPLING} ${start_tarball_name} ${tarball_name_length} MEDCOUPLING_TARBALL_NAME)
-  string(SUBSTRING ${MEDCOUPLING_TARBALL_NAME} 12 ${tarball_name_length} MEDCOUPLING_VERSION_NAME)
+  string(SUBSTRING ${MEDCOUPLING_TARBALL_NAME} 12 ${tarball_name_length} MEDCoupling_VERSION)
 
-  message(STATUS "MEDCoupling version is ${MEDCOUPLING_VERSION_NAME}")
+  message(STATUS "MEDCoupling version will be ${MEDCoupling_VERSION}")
 
   ExternalProject_Add (MEDCoupling
         URL               ${DOWNLOAD_MEDCOUPLING}  #location of medcoupling tarball
         SOURCE_DIR        ${CMAKE_CURRENT_BINARY_DIR}/pre_requis/${MEDCOUPLING_TARBALL_NAME}
-#        BUILD_IN_SOURCE   FALSE
-        CONFIGURE_COMMAND cmake <SOURCE_DIR>/${MEDCOUPLING_TARBALL_NAME} -DCMAKE_INSTALL_PREFIX=${MEDCOUPLING_ROOT_DIR} -DCONFIGURATION_ROOT_DIR=<SOURCE_DIR>/configuration-${MEDCOUPLING_VERSION_NAME} -DMEDFILE_ROOT_DIR=${MEDFILE_ROOT_DIR} -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF -DMEDCOUPLING_ENABLE_RENUMBER=OFF -DMEDCOUPLING_BUILD_DOC=OFF -DHDF5_ROOT_DIR=${HDF5_ROOT}
+        BUILD_IN_SOURCE   TRUE
+        CONFIGURE_COMMAND cmake <SOURCE_DIR>/${MEDCOUPLING_TARBALL_NAME} -DCMAKE_INSTALL_PREFIX=${MEDCOUPLING_ROOT_DIR} -DCONFIGURATION_ROOT_DIR=<SOURCE_DIR>/configuration-${MEDCoupling_VERSION} -DMEDFILE_ROOT_DIR=${MEDFILE_ROOT_DIR} -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF -DMEDCOUPLING_ENABLE_RENUMBER=OFF -DMEDCOUPLING_BUILD_DOC=OFF -DHDF5_ROOT_DIR=${HDF5_ROOT} -DMEDCOUPLING_USE_64BIT_IDS=ON -DMEDCOUPLING_ENABLE_PYTHON=ON#-DSALOME_USE_MPI=ON
         BUILD_COMMAND     make
         INSTALL_COMMAND   make install
         INSTALL_DIR       ${MEDCOUPLING_ROOT_DIR}
@@ -329,16 +367,21 @@ else( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR})
         LOG_INSTALL       TRUE           # Wrap install in script to log output
   )
 
+  add_library(medloader   SHARED IMPORTED )
+  set_property(TARGET medloader   PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so)
+
 endif( MEDCOUPLING_ROOT_DIR OR DEFINED ENV{MEDCOUPLING_ROOT_DIR} )
 
 set(MEDCOUPLING_INCLUDE_DIR ${MEDCOUPLING_ROOT_DIR}/include)
 set(MEDCOUPLING_LIBRARIES   ${MEDCOUPLING_ROOT_DIR}/lib    )#for environment file env_SOLVERLAB.sh 
 
-add_library(medloader   SHARED IMPORTED )
-set_property(TARGET medloader   PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedloader.so)
 add_library(medcoupling SHARED IMPORTED )
 set_property(TARGET medcoupling PROPERTY IMPORTED_LOCATION ${MEDCOUPLING_ROOT_DIR}/lib/libmedcoupling.so)
 
+if   ( ${MEDCoupling_VERSION} VERSION_GREATER 9.4 )
+  add_definitions(-DMEDCoupling_VERSION_VERSION_GREATER_9_4)
+endif( ${MEDCoupling_VERSION} VERSION_GREATER 9.4 )
+
 if   (TARGET MED AND TARGET PETSc)
   ExternalProject_Add_StepDependencies( MED build PETSc )#PETSc doit être compilé avant MED car c'est PETSc qui compile HDF5
 endif(TARGET MED AND TARGET PETSc)
@@ -350,26 +393,30 @@ endif(TARGET MED AND TARGET MEDCoupling)
 if   (TARGET PETSc AND TARGET MEDCoupling)
   ExternalProject_Add_StepDependencies( MEDCoupling build PETSc )#PETSc doit être compilé avant MEDCoupling (car il contient hdf5)
 endif(TARGET PETSc AND TARGET MEDCoupling)
+
+IF(MEDCOUPLING_USE_64BIT_IDS)
+  SET(CMAKE_SWIG_FLAGS ${CMAKE_SWIG_FLAGS} -DMEDCOUPLING_USE_64BIT_IDS)
+ENDIF(MEDCOUPLING_USE_64BIT_IDS)
  
 ####################
 # Final operations #
 ####################                                  
 
 # Paraview variables to choose python version and for env_SOLVERLAB.sh  
-if  ( DEFINED PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
-  if  ( DEFINED PARAVIEW_ROOT_DIR )
+if  ( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
+  if  ( PARAVIEW_ROOT_DIR )
     set( PARAVIEW_INCLUDE_DIR   ${PARAVIEW_ROOT_DIR}/include)
     set( PARAVIEW_LIBRARIES_DIR ${PARAVIEW_ROOT_DIR}/lib)
-  else( DEFINED PARAVIEW_ROOT_DIR )
+  else( PARAVIEW_ROOT_DIR )
     set( PARAVIEW_ROOT_DIR      $ENV{PARAVIEW_ROOT_DIR} )
     set( PARAVIEW_INCLUDE_DIR   $ENV{PARAVIEW_ROOT_DIR}/include)
     set( PARAVIEW_LIBRARIES_DIR $ENV{PARAVIEW_ROOT_DIR}/lib)
-  endif( DEFINED PARAVIEW_ROOT_DIR )
-else( DEFINED PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
+  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.")
   set( PARAVIEW_INCLUDE_DIR /usr/include/paraview/)
   set( PARAVIEW_LIBRARIES_DIR /usr/lib/paraview/:/usr/lib64/paraview/:/usr/lib64/vtk/:/usr/lib/vtk/)
-endif( DEFINED PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
+endif( PARAVIEW_ROOT_DIR OR DEFINED ENV{PARAVIEW_ROOT_DIR})
 
 if  ( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
   if   ( NOT DEFINED PARAVIEW_VERSION )
@@ -400,7 +447,7 @@ else( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
   ENDIF( ${vtkConfig_file} STREQUAL "vtkConfig_file-NOTFOUND" )
 endif( DEFINED PARAVIEW_VERSION OR DEFINED ENV{PARAVIEW_VERSION} )
 
-  
+#Choose python 2 or 3  
 IF   ( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6" )#Use python 3, use VERSION_GREATER_EQUAL if cmake >=3.7
   SET(PYTHON2OR3 "3")
   message(STATUS "PARAVIEW_VERSION greater than 5.6. We need python3 for postprocessing scripts.")
@@ -413,9 +460,9 @@ ENDIF( ${PARAVIEW_VERSION} STRGREATER "5.6" OR ${PARAVIEW_VERSION} STREQUAL "5.6
 IF  ( PYTHON_ROOT_DIR OR ENV{PYTHON_ROOT_DIR})
   IF  ( PYTHON_ROOT_DIR )
     set(Python_ROOT_DIR ${PYTHON_ROOT_DIR} ) 
-  ELSE( PYTHON_ROOT_DIR })
+  ELSE( PYTHON_ROOT_DIR )
     set(Python_ROOT_DIR $ENV{PYTHON_ROOT_DIR} ) 
-  ENDIF( PYTHON_ROOT_DIR })
+  ENDIF( PYTHON_ROOT_DIR)
 ENDIF(PYTHON_ROOT_DIR OR ENV{PYTHON_ROOT_DIR})
 
 IF   (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
@@ -431,24 +478,24 @@ ELSE (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
   set(Python_VERSION_MINOR ${PYTHON_VERSION_MINOR})
 ENDIF(${CMAKE_VERSION} VERSION_GREATER "3.12.0")
 
-IF  ( PYQT5_ROOT_DIR OR ENV{PYQT5_ROOT_DIR})
-  IF  ( PYQT5_ROOT_DIR )
-    set(PYQT5_ROOT_DIR ${PYQT5_ROOT_DIR} )
-  ELSE( PYQT5_ROOT_DIR })
+#PyQt5
+IF  ( NOT PYQT5_ROOT_DIR )
     set(PYQT5_ROOT_DIR $ENV{PYQT5_ROOT_DIR} )
-  ENDIF( PYQT5_ROOT_DIR })
-ENDIF(PYQT5_ROOT_DIR OR ENV{PYQT5_ROOT_DIR})
+ENDIF( NOT PYQT5_ROOT_DIR )
 
 #Matplotlib
-IF  ( MATPLOTLIB_ROOT_DIR OR ENV{MATPLOTLIB_ROOT_DIR})
-  IF  ( MATPLOTLIB_ROOT_DIR )
-    set(PYQT5_ROOT_DIR ${PYQT5_ROOT_DIR} )
-  ELSE( MATPLOTLIB_ROOT_DIR })
+IF   ( NOT MATPLOTLIB_ROOT_DIR )
     set(MATPLOTLIB_ROOT_DIR $ENV{MATPLOTLIB_ROOT_DIR} )
-  ENDIF( MATPLOTLIB_ROOT_DIR })
-ENDIF(MATPLOTLIB_ROOT_DIR OR ENV{MATPLOTLIB_ROOT_DIR})
-
-set(HDF5_ROOT_DIR $ENV{HDF5_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 )
 
 
 #Paraview library paths