diff --git a/configure.in b/configure.in
index 3b9cf2154f10f8d09ec9b80692374544708c3039..a9bacd213b0f12dfa0198b2377d6ac76650ed1a6 100644
--- a/configure.in
+++ b/configure.in
@@ -128,6 +128,9 @@ AC_ARG_ENABLE(cgns,
 AC_ARG_ENABLE(occ,
               AC_HELP_STRING([--enable-occ],
                              [enable OpenCascade support (default=no)]))
+AC_ARG_ENABLE(hdf5,
+              AC_HELP_STRING([--enable-hdf5],
+                             [enable HDF5 support (default=no)]))
 AC_ARG_ENABLE(med,
               AC_HELP_STRING([--enable-med],
                              [enable MED support (default=yes)]))
@@ -158,6 +161,7 @@ if test "x$enable_minimal" = "xyes"; then
   enable_chaco=no;
   enable_med=no;
   enable_cgns=no;
+  enable_hdf5=no;
   enable_zlib=no;
   if test "x$enable_post" != "xyes"; then
     enable_post=no;
@@ -658,27 +662,32 @@ if test "x$enable_fm" != "xno"; then
   fi
 fi
 
-dnl Check for HDF5 (required by MED, needs zlib)
-if test "x${ZLIB}" = "xyes"; then
-  if test "x$enable_med" != "xno"; then
-    if test "x${HDF5_PREFIX}" != "x"; then
-      LDFLAGS="-L${HDF5_PREFIX}/lib ${LDFLAGS}"
-    fi
-    AC_CHECK_LIB(hdf5,main,HDF5="yes",HDF5="no")
+dnl Check for HDF5 (required by MED, needs zlib, and optional for cgns)
+if test "x${HDF5_PREFIX}" != "x" -a "x$enable_hdf5" != "xno"; then
+  enable_hdf5=yes
+fi
+if test "x${ZLIB}" = "xyes" -a "x$enable_med" != "xno"; then
+  enable_hdf5=yes
+fi
+if test "x$enable_hdf5" = "xyes"; then
+  if test "x${HDF5_PREFIX}" != "x"; then
+    LDFLAGS="-L${HDF5_PREFIX}/lib ${LDFLAGS}"
+  fi
+  AC_CHECK_LIB(hdf5,main,HDF5="yes",HDF5="no")
+  if test "x${HDF5}" = "xyes"; then
+    LIBS="-lhdf5 ${LIBS}"  # Necessary for CGNS with HDF5
   fi
 fi
 
 dnl Check for CGNS
-if test "x${CGNS_PREFIX}" != "x"; then
-  if test "x$enable_cgns" != "xno"; then
-    enable_cgns="yes"
-  fi
+if test "x${CGNS_PREFIX}" != "x" -a "x$enable_cgns" != "xno"; then
+  enable_cgns="yes"
 fi
 if test "x$enable_cgns" = "xyes"; then
   if test "x${CGNS_PREFIX}" != "x"; then
     LDFLAGS="-L${CGNS_PREFIX}/lib ${LDFLAGS}"
   fi
-  AC_CHECK_LIB(cgns,main,CGNS="yes",CGNS="no",-lhdf5)
+  AC_CHECK_LIB(cgns,main,CGNS="yes",CGNS="no")
   if test "x${CGNS}" = "xyes"; then
     if test "x${CGNS_PREFIX}" = "x"; then
       GMSH_LIBS="${GMSH_LIBS} -lcgns"