Salome HOME
Copyright update 2021
[modules/kernel.git] / salome_adm / unix / config_files / check_hdf5.m4
index 2f2da10b5532f1bf89c7e5ce8eafa72ddcff586c..946b7a099f059836397633ee6170a92bd44ff2d2 100644 (file)
@@ -1,3 +1,25 @@
+dnl Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl
+dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+dnl
+dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+dnl
+
 AC_DEFUN([CHECK_HDF5],[
 AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_PROG_CPP])dnl
@@ -5,7 +27,7 @@ AC_REQUIRE([AC_PROG_CPP])dnl
 AC_CHECKING(for HDF5)
 
 AC_ARG_WITH(hdf5,
-    [  --with-hdf5=DIR                 root directory path to hdf5 installation ],
+    [AC_HELP_STRING([--with-hdf5=DIR],[root directory path to hdf5 installation])],
     [HDF5HOME="$withval"
       AC_MSG_RESULT("select $withval as path to hdf5")
     ])
@@ -13,6 +35,7 @@ AC_ARG_WITH(hdf5,
 AC_SUBST(HDF5_INCLUDES)
 AC_SUBST(HDF5_LIBS)
 AC_SUBST(HDF5_MT_LIBS)
+AC_SUBST(HDF5HOME)
 
 HDF5_INCLUDES=""
 HDF5_LIBS=""
@@ -22,19 +45,49 @@ hdf5_ok=no
 
 LOCAL_INCLUDES=""
 LOCAL_LIBS=""
+LOCAL_RLIBS=""
 
 if test -z $HDF5HOME
 then
    AC_MSG_WARN(undefined HDF5HOME variable which specify hdf5 installation directory)
+   AC_MSG_NOTICE(Trying native Hdf5...)
+   dnl For Parallel HDF5 test
+   HDF5HOME="/usr" 
 else
    LOCAL_INCLUDES="-I$HDF5HOME/include"
-   LOCAL_LIBS="-L$HDF5HOME/lib"
+   if test "x$HDF5HOME" = "x/usr"
+   then
+      AC_MSG_NOTICE(Trying native Hdf5...)
+      LOCAL_LIBS=""
+   else
+      AC_MSG_NOTICE(Trying Hdf5 from $HDF5HOME ...)
+      LOCAL_LIBS="-L$HDF5HOME/lib"
+      LOCAL_RLIBS="-Wl,-R$HDF5HOME/lib"
+   fi
+fi
+
+if  test "x$hdf5_ok" = "xno"
+then
+  if  test -e "$HDF5HOME/include/hdf5.h" 
+  then
+    AC_MSG_CHECKING(if hdf5 is parallel and thus needs mpi)
+    hdf5_parallel=`grep "#define H5_HAVE_PARALLEL" $HDF5HOME/include/H5pubconf.h | awk '{i=3 ; print $i}'`
+    if test "x$hdf5_parallel" = "x1"
+    then
+      LOCAL_INCLUDES="-DOMPI_SKIP_MPICXX $MPI_INCLUDES $LOCAL_INCLUDES"
+      AC_MSG_RESULT(yes)
+    else
+      AC_MSG_RESULT(no,hdf5 seems serial)
+    fi
+  else
+    AC_MSG_WARN(File $HDF5HOME/include/hdf5.h not present)
+  fi
 fi
 
 dnl hdf5 headers
 
 CPPFLAGS_old="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES"
+CPPFLAGS="$CPPFLAGS $MPI_INCLUDES $LOCAL_INCLUDES"
 AC_CHECK_HEADER(hdf5.h,hdf5_ok=yes ,hdf5_ok=no)
 CPPFLAGS="$CPPFLAGS_old"
 
@@ -45,7 +98,7 @@ then
 dnl hdf5 library
 
   LIBS_old="$LIBS"
-  LIBS="$LIBS $LOCAL_LIBS"
+  LIBS="$LIBS $MPI_LIBS $LOCAL_LIBS"
   AC_CHECK_LIB(hdf5,H5open,hdf5_ok=yes,hdf5_ok=no)
   LIBS="$LIBS_old"
 
@@ -53,9 +106,14 @@ fi
 
 if  test "x$hdf5_ok" = "xyes"
 then
-  HDF5_INCLUDES="$LOCAL_INCLUDES"
-  HDF5_LIBS="$LOCAL_LIBS -lhdf5"
-  HDF5_MT_LIBS="$LOCAL_LIBS -lhdf5"
+  HDF5_INCLUDES="$MPI_INCLUDES $LOCAL_INCLUDES"
+  HDF5_LIBS="$MPI_LIBS $LOCAL_LIBS -lhdf5 $LOCAL_RLIBS"
+  HDF5_MT_LIBS="$MPI_LIBS $LOCAL_LIBS -lhdf5 $LOCAL_RLIBS"
+fi
+
+if  test "x$hdf5_ok" = "xyes"
+then
+  HDF5_INCLUDES="$HDF5_INCLUDES -DH5_USE_16_API"
 fi
 
 AC_MSG_RESULT(for hdf5: $hdf5_ok)