diff --git a/configure b/configure
index 06f5c8cba1a4874a2259374c883225de1d41cddc..39ee864ec4ae031ad8378972d35e72f1b453a9ca 100755
--- a/configure
+++ b/configure
@@ -853,6 +853,7 @@ Optional Features:
   --enable-parallel       enable parallel version (default=no)
   --enable-triangle       compile Triangle if available (default=yes)
   --enable-jpeg           enable JPEG support (default=yes)
+  --enable-z              enable ZLIB support (default=yes)
   --enable-png            enable PNG support (default=yes)
   --enable-static         GCC only: build a statically linked executable
                           (default=no)
@@ -1357,6 +1358,11 @@ fi;
 if test "${enable_jpeg+set}" = set; then
   enableval="$enable_jpeg"
 
+fi;
+# Check whether --enable-z or --disable-z was given.
+if test "${enable_z+set}" = set; then
+  enableval="$enable_z"
+
 fi;
 # Check whether --enable-png or --disable-png was given.
 if test "${enable_png+set}" = set; then
@@ -3097,8 +3103,8 @@ echo "$as_me: error: Could not find fltk-config. Try --with-fltk-prefix?" >&2;}
   GMSH_LIBS="${GMSH_LIBS} `$FLTKCONFIG --use-gl --use-images --ldflags`"
   INCLS="${INCLS} `$FLTKCONFIG --use-gl --use-images --cxxflags`"
 
-  if test "x$enable_jpeg" != "xno"; then
-        if test "x${JPEG_PREFIX}" != "x"; then
+    if test "x$enable_jpeg" != "xno"; then
+    if test "x${JPEG_PREFIX}" != "x"; then
       LDFLAGS="-L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib ${LDFLAGS}"
     fi
     echo "$as_me:$LINENO: checking for main in -ljpeg" >&5
@@ -3166,8 +3172,9 @@ fi
     fi
   fi
 
-  if test "x$enable_png" != "xno"; then
-        if test "x${Z_PREFIX}" != "x"; then
+    Z=""
+  if test "x$enable_z" != "xno"; then
+    if test "x${Z_PREFIX}" != "x"; then
       LDFLAGS="-L${Z_PREFIX} -L${Z_PREFIX}/lib ${LDFLAGS}"
     fi
     echo "$as_me:$LINENO: checking for main in -lz" >&5
@@ -3224,13 +3231,13 @@ else
   Z="no"
 fi
 
-    if test "x${Z}" = "xyes"; then
-      FLAGS="-DHAVE_LIBZ ${FLAGS}"
-      GMSH_LIBS="${GMSH_LIBS} ${ZLD} -lz"
-            if test "x${PNG_PREFIX}" != "x"; then
-        LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}"
-      fi
-      echo "$as_me:$LINENO: checking for main in -lpng" >&5
+  fi
+
+    if test "x$enable_png" != "xno" -a "x${Z}" = "xyes"; then
+    if test "x${PNG_PREFIX}" != "x"; then
+      LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}"
+    fi
+    echo "$as_me:$LINENO: checking for main in -lpng" >&5
 echo $ECHO_N "checking for main in -lpng... $ECHO_C" >&6
 if test "${ac_cv_lib_png_main+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3284,23 +3291,27 @@ else
   PNG="no"
 fi
 
-      if test "x${PNG}" = "xyes"; then
-        FLAGS="-DHAVE_LIBPNG ${FLAGS}"
-                PNGLD=""
-        ZLD=""
-        if test "x${PNG_PREFIX}" != "x"; then
-          PNGLD="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib"
-          INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include"
-        fi
-        if test "x${Z_PREFIX}" != "x"; then
-          ZLD="-L${Z_PREFIX} -L${Z_PREFIX}/lib"
-          INCLS="${INCLS} -I${Z_PREFIX} -I${Z_PREFIX}/include"
-        fi
-        GMSH_LIBS="${GMSH_LIBS} ${PNGLD} -lpng"
+    if test "x${PNG}" = "xyes"; then
+      FLAGS="-DHAVE_LIBPNG ${FLAGS}"
+      if test "x${PNG_PREFIX}" = "x"; then
+        GMSH_LIBS="${GMSH_LIBS} -lpng"
+      else
+                GMSH_LIBS="${GMSH_LIBS} -L${PNG_PREFIX} -L${PNG_PREFIX}/lib -lpng"
+        INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include"
       fi
     fi
   fi
 
+    if test "x${Z}" = "xyes"; then
+    FLAGS="-DHAVE_LIBZ ${FLAGS}"
+    if test "x${Z_PREFIX}" = "x"; then
+      GMSH_LIBS="${GMSH_LIBS} -lz"
+    else
+            GMSH_LIBS="${GMSH_LIBS} -L${Z_PREFIX} -L${Z_PREFIX}/lib -lz"
+      INCLS="${INCLS} -I${Z_PREFIX} -I${Z_PREFIX}/include"
+    fi
+  fi
+
 else
 
   GMSH_DIRS="${GMSH_DIRS} Box"
diff --git a/configure.in b/configure.in
index d15717e73cc682d60239729838c0763b6aa246f6..c36d90e822c071e189b1c6daccc86dd31d764543 100644
--- a/configure.in
+++ b/configure.in
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.44 2003-11-18 05:29:24 geuzaine Exp $
+dnl $Id: configure.in,v 1.45 2003-11-20 18:01:22 geuzaine Exp $
 dnl
 dnl Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 dnl
@@ -69,6 +69,9 @@ AC_ARG_ENABLE(triangle,
 AC_ARG_ENABLE(jpeg,
               AC_HELP_STRING([--enable-jpeg],
                              [enable JPEG support (default=yes)]))
+AC_ARG_ENABLE(z,
+              AC_HELP_STRING([--enable-z],
+                             [enable ZLIB support (default=yes)]))
 AC_ARG_ENABLE(png,
               AC_HELP_STRING([--enable-png],
                              [enable PNG support (default=yes)]))
@@ -136,8 +139,8 @@ if test "x$enable_gui" != "xno"; then
   GMSH_LIBS="${GMSH_LIBS} `$FLTKCONFIG --use-gl --use-images --ldflags`"
   INCLS="${INCLS} `$FLTKCONFIG --use-gl --use-images --cxxflags`"
 
+  dnl Check for libjpeg
   if test "x$enable_jpeg" != "xno"; then
-    dnl Check if libjpeg is available to enable/disable gl2jpg
     if test "x${JPEG_PREFIX}" != "x"; then
       LDFLAGS="-L${JPEG_PREFIX} -L${JPEG_PREFIX}/lib ${LDFLAGS}"
     fi
@@ -154,38 +157,45 @@ if test "x$enable_gui" != "xno"; then
     fi 
   fi
 
-  if test "x$enable_png" != "xno"; then
-    dnl Check if libz is available (prerequisite for libpng)
+  dnl Check for libz
+  Z=""
+  if test "x$enable_z" != "xno"; then
     if test "x${Z_PREFIX}" != "x"; then
       LDFLAGS="-L${Z_PREFIX} -L${Z_PREFIX}/lib ${LDFLAGS}"
     fi
     AC_CHECK_LIB(z,main,Z="yes",Z="no")
-    if test "x${Z}" = "xyes"; then
-      FLAGS="-DHAVE_LIBZ ${FLAGS}"
-      GMSH_LIBS="${GMSH_LIBS} ${ZLD} -lz"
-      dnl Check if libpng is available to enable/disable gl2png
-      if test "x${PNG_PREFIX}" != "x"; then
-        LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}"
-      fi
-      AC_CHECK_LIB(png,main,PNG="yes",PNG="no")
-      if test "x${PNG}" = "xyes"; then
-        FLAGS="-DHAVE_LIBPNG ${FLAGS}"
-        dnl Find the libs/includes even if the libs are _not_ properly installed (ugly hack!)
-        PNGLD=""
-        ZLD=""
-        if test "x${PNG_PREFIX}" != "x"; then
-          PNGLD="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib"
-          INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include"
-        fi
-        if test "x${Z_PREFIX}" != "x"; then
-          ZLD="-L${Z_PREFIX} -L${Z_PREFIX}/lib"
-          INCLS="${INCLS} -I${Z_PREFIX} -I${Z_PREFIX}/include"
-        fi
-        GMSH_LIBS="${GMSH_LIBS} ${PNGLD} -lpng"
+  fi
+
+  dnl Check for libpng (only if libz is available)
+  if test "x$enable_png" != "xno" -a "x${Z}" = "xyes"; then
+    if test "x${PNG_PREFIX}" != "x"; then
+      LDFLAGS="-L${PNG_PREFIX} -L${PNG_PREFIX}/lib ${LDFLAGS}"
+    fi
+    AC_CHECK_LIB(png,main,PNG="yes",PNG="no")
+    if test "x${PNG}" = "xyes"; then
+      FLAGS="-DHAVE_LIBPNG ${FLAGS}"
+      if test "x${PNG_PREFIX}" = "x"; then
+        GMSH_LIBS="${GMSH_LIBS} -lpng"
+      else
+        dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!)
+        GMSH_LIBS="${GMSH_LIBS} -L${PNG_PREFIX} -L${PNG_PREFIX}/lib -lpng"
+        INCLS="${INCLS} -I${PNG_PREFIX} -I${PNG_PREFIX}/include"
       fi
     fi 
   fi
 
+  dnl Complete zlib link line (zlib must be linked in after libpng)
+  if test "x${Z}" = "xyes"; then
+    FLAGS="-DHAVE_LIBZ ${FLAGS}"
+    if test "x${Z_PREFIX}" = "x"; then
+      GMSH_LIBS="${GMSH_LIBS} -lz"
+    else
+      dnl Find the libs/includes even if libjpeg is _not_ properly installed (ugly hack!)
+      GMSH_LIBS="${GMSH_LIBS} -L${Z_PREFIX} -L${Z_PREFIX}/lib -lz"
+      INCLS="${INCLS} -I${Z_PREFIX} -I${Z_PREFIX}/include"
+    fi
+  fi 
+
 else
 
   GMSH_DIRS="${GMSH_DIRS} Box"