zlib 1.2.4.4
diff --git a/ChangeLog b/ChangeLog
index 898c197..3a2b2e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,17 @@
 
                 ChangeLog file for zlib
 
+Changes in 1.2.4.4 (18 Apr 2010)
+- Fix CROSS_PREFIX executable testing, CHOST extract, mingw* [Tšršk]
+- Undefine _LARGEFILE64_SOURCE in zconf.h if it is zero, but not if empty
+- Try to use bash or ksh regardless of functionality of /bin/sh
+- Fix configure incompatibility with NetBSD sh
+- Remove attempt to run under bash or ksh since have better NetBSD fix
+- Fix win32/Makefile.gcc for MinGW [Bar-Lev]
+- Add diagnostic messages when using CROSS_PREFIX in configure
+- Added --sharedlibdir option to configure [Weigelt]
+- Use hidden visibility attribute when available [Frysinger]
+
 Changes in 1.2.4.3 (10 Apr 2010)
 - Only use CROSS_PREFIX in configure for ar and ranlib if they exist
 - Use CROSS_PREFIX for nm [Bar-Lev]
diff --git a/Makefile.in b/Makefile.in
index aca5924..f932d9f 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -32,7 +32,7 @@
 
 STATICLIB=libz.a
 SHAREDLIB=libz.so
-SHAREDLIBV=libz.so.1.2.4.3
+SHAREDLIBV=libz.so.1.2.4.4
 SHAREDLIBM=libz.so.1
 LIBS=$(STATICLIB) $(SHAREDLIBV)
 
@@ -47,6 +47,7 @@
 prefix = /usr/local
 exec_prefix = ${prefix}
 libdir = ${exec_prefix}/lib
+sharedlibdir = ${libdir}
 includedir = ${prefix}/include
 mandir = ${prefix}/share/man
 man3dir = ${mandir}/man3
@@ -163,12 +164,14 @@
 install-libs: $(LIBS)
 	-@if [ ! -d $(DESTDIR)$(exec_prefix)  ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi
 	-@if [ ! -d $(DESTDIR)$(libdir)       ]; then mkdir -p $(DESTDIR)$(libdir); fi
+	-@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi
 	-@if [ ! -d $(DESTDIR)$(man3dir)      ]; then mkdir -p $(DESTDIR)$(man3dir); fi
 	-@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
-	cp $(LIBS) $(DESTDIR)$(libdir)
+	cp $(STATICLIB) $(DESTDIR)$(libdir)
+	cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)
 	cd $(DESTDIR)$(libdir); chmod u=rw,go=r $(STATICLIB)
 	-@(cd $(DESTDIR)$(libdir); $(RANLIB) libz.a || true) >/dev/null 2>&1
-	-@cd $(DESTDIR)$(libdir); if test "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
+	-@cd $(DESTDIR)$(sharedlibdir); if test "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
 	  chmod 755 $(SHAREDLIBV); \
 	  rm -f $(SHAREDLIB) $(SHAREDLIBM); \
 	  ln -s $(SHAREDLIBV) $(SHAREDLIB); \
diff --git a/README b/README
index 68ff992..d909ba6 100644
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
 ZLIB DATA COMPRESSION LIBRARY
 
-zlib 1.2.4.3 is a general purpose data compression library.  All the code is
+zlib 1.2.4.4 is a general purpose data compression library.  All the code is
 thread safe.  The data format used by the zlib library is described by RFCs
 (Request for Comments) 1950 to 1952 in the files
 http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
@@ -31,7 +31,7 @@
 issue of Dr.  Dobb's Journal; a copy of the article is available at
 http://marknelson.us/1997/01/01/zlib-engine/ .
 
-The changes made in version 1.2.4.3 are documented in the file ChangeLog.
+The changes made in version 1.2.4.4 are documented in the file ChangeLog.
 
 Unsupported third party contributions are provided in directory contrib/ .
 
diff --git a/configure b/configure
index 7ff484b..e729c6c 100755
--- a/configure
+++ b/configure
@@ -13,37 +13,8 @@
 # If you have problems, try without defining CC and CFLAGS before reporting
 # an error.
 
-# make sure we are running under a compatible shell (stolen from ffmpeg and libnfo,
-# except their's wasn't portable enough due to ! usage, so this is better)
-if test "0$ZLIB_CONFIGURE_EXEC" -lt 1; then
-  unset foo
-  try=0
-  (: ${foo%%bar}) 2>/dev/null
-  if test "$?" -ne 0; then
-    try=1
-  else
-    (: ${foo?}) 2>/dev/null
-    if test "$?" -eq 0; then
-      try=1
-    fi
-  fi
-  if test "$try" -eq 1; then
-    ZLIB_CONFIGURE_EXEC=1
-    export ZLIB_CONFIGURE_EXEC
-    type "bash" > /dev/null 2>&1 && exec bash "$0" "$@"
-    type "ksh" > /dev/null 2>&1 && exec ksh "$0" "$@"
-    if test -x /usr/xpg4/bin/sh; then
-      exec /usr/xpg4/bin/sh "$0" "$@"
-    fi
-#    echo "No compatible shell script interpreter found."
-#    exit 1
-# we could give up here, but go ahead and give their old sh a try
-  fi
-  unset try
-fi
-
 if [ -n "${CHOST}" ]; then
-    uname="$(echo "${CHOST}" | sed 's/.*-.*-\(.*\)-.*/\1/')"
+    uname="$(echo "${CHOST}" | sed -e 's/.*-.*-\(.*\)-.*$/\1/' -e 's/.*-\(.*\)-.*/\1/' -e 's/.*-\(.*\)$/\1/')"
     CROSS_PREFIX="${CHOST}-"
 fi
 
@@ -53,24 +24,28 @@
 VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`
 VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
 VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
-if [ -x "${CROSS_PREFIX}ar" ]; then
+if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
     AR=${AR-"${CROSS_PREFIX}ar"}
+    test -n "${CROSS_PREFIX}" && echo Using ${AR}
 else
     AR=${AR-"ar"}
+    test -n "${CROSS_PREFIX}" && echo Using ${AR}
 fi
 AR_RC="${AR} rc"
-if [ -x "${CROSS_PREFIX}ranlib" ]; then
+if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
     RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
+    test -n "${CROSS_PREFIX}" && echo Using ${RANLIB}
 else
     RANLIB=${RANLIB-"ranlib"}
 fi
-if [ -x "${CROSS_PREFIX}nm" ]; then
+if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
     NM=${NM-"${CROSS_PREFIX}nm"}
+    test -n "${CROSS_PREFIX}" && echo Using ${NM}
 else
     NM=${NM-"nm"}
 fi
 LDCONFIG=${LDCONFIG-"ldconfig"}
-LDSHAREDLIBC="${LDSHAREDLIBC-"-lc"}"
+LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
 prefix=${prefix-/usr/local}
 exec_prefix=${exec_prefix-'${prefix}'}
 libdir=${libdir-'${exec_prefix}/lib'}
@@ -90,11 +65,13 @@
     -h* | --help)
       echo 'usage:'
       echo '  configure [--zprefix] [--prefix=PREFIX]  [--eprefix=EXPREFIX]'
-      echo '    [--static] [--64] [--libdir=LIBDIR] [--includedir=INCLUDEDIR]'
+      echo '    [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]'
+      echo '    [--includedir=INCLUDEDIR]'
         exit 0 ;;
     -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
     -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
     -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
+    --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;
     -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
     -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
     -p* | --prefix) prefix="$2"; shift; shift ;;
@@ -117,7 +94,7 @@
 int hello() {return getchar();}
 EOF
 
-test -z "$CC" && echo Checking for gcc...
+test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc...
 cc=${CC-${CROSS_PREFIX}gcc}
 cflags=${CFLAGS-"-O3"}
 # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
@@ -127,8 +104,8 @@
 
 if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
   CC="$cc"
-  SFLAGS="${CFLAGS-"-O3"} -fPIC"
-  CFLAGS="${CFLAGS-"-O3"}"
+  SFLAGS="${CFLAGS--O3} -fPIC"
+  CFLAGS="${CFLAGS--O3}"
   if test $build64 -eq 1; then
     CFLAGS="${CFLAGS} -m64"
     SFLAGS="${SFLAGS} -m64"
@@ -143,7 +120,7 @@
   Linux* | linux* | GNU | GNU/* | *BSD | DragonFly) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;
   CYGWIN* | Cygwin* | cygwin* | OS/2*)
         EXE='.exe' ;;
-  MINGW*)
+  MINGW*|mingw*)
         LDSHARED=${LDSHARED-"$cc -shared"}
         LDSHAREDLIBC=""
         EXE='.exe' ;;
@@ -527,6 +504,23 @@
   fi
 fi
 
+cat > $test.c <<EOF
+int foo __attribute__ ((visibility ("hidden")));
+int main()
+{
+  return 0;
+}
+EOF
+if test "`($CC -c -fvisibility=hidden $CFLAGS $test.c) 2>&1`" = ""; then
+  CFLAGS="$CFLAGS -fvisibility=hidden"
+  SFLAGS="$SFLAGS -fvisibility=hidden"
+  echo "Checking for attribute(visibility) support... Yes."
+else
+  CFLAGS="$CFLAGS -DNO_VIZ"
+  SFLAGS="$SFLAGS -DNO_VIZ"
+  echo "Checking for attribute(visibility) support... No."
+fi
+
 CPP=${CPP-"$CC -E"}
 case $CFLAGS in
   *ASMV*)
@@ -560,6 +554,7 @@
 /^prefix *=/s#=.*#=$prefix#
 /^exec_prefix *=/s#=.*#=$exec_prefix#
 /^libdir *=/s#=.*#=$libdir#
+/^sharedlibdir *=/s#=.*#=$sharedlibdir#
 /^includedir *=/s#=.*#=$includedir#
 /^mandir *=/s#=.*#=$mandir#
 /^all: */s#:.*#: $ALL#
@@ -581,6 +576,7 @@
 /^prefix *=/s#=.*#=$prefix#
 /^exec_prefix *=/s#=.*#=$exec_prefix#
 /^libdir *=/s#=.*#=$libdir#
+/^sharedlibdir *=/s#=.*#=$sharedlibdir#
 /^includedir *=/s#=.*#=$includedir#
 /^mandir *=/s#=.*#=$mandir#
 /^LDFLAGS *=/s#=.*#=$LDFLAGS#
diff --git a/contrib/delphi/ZLib.pas b/contrib/delphi/ZLib.pas
index 6ed89ce..c1094c6 100644
--- a/contrib/delphi/ZLib.pas
+++ b/contrib/delphi/ZLib.pas
@@ -152,7 +152,7 @@
   const OutBuf: Pointer; BufSize: Integer);
 
 const
-  zlib_version = '1.2.4.3';
+  zlib_version = '1.2.4.4';
 
 type
   EZlibError = class(Exception);
diff --git a/contrib/dotzlib/DotZLib/UnitTests.cs b/contrib/dotzlib/DotZLib/UnitTests.cs
index 0668c9f..fe1061f 100644
--- a/contrib/dotzlib/DotZLib/UnitTests.cs
+++ b/contrib/dotzlib/DotZLib/UnitTests.cs
@@ -156,7 +156,7 @@
         public void Info_Version()

         {

             Info info = new Info();

-            Assert.AreEqual("1.2.4.3", Info.Version);

+            Assert.AreEqual("1.2.4.4", Info.Version);

             Assert.AreEqual(32, info.SizeOfUInt);

             Assert.AreEqual(32, info.SizeOfULong);

             Assert.AreEqual(32, info.SizeOfPointer);

diff --git a/contrib/infback9/inftree9.c b/contrib/infback9/inftree9.c
index a67f21d..1847d22 100644
--- a/contrib/infback9/inftree9.c
+++ b/contrib/infback9/inftree9.c
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate9_copyright[] =
-   " inflate9 1.2.4.3 Copyright 1995-2010 Mark Adler ";
+   " inflate9 1.2.4.4 Copyright 1995-2010 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -64,7 +64,7 @@
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         128, 128, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129,
         130, 130, 130, 130, 131, 131, 131, 131, 132, 132, 132, 132,
-        133, 133, 133, 133, 144, 195, 66};
+        133, 133, 133, 133, 144, 74, 65};
     static const unsigned short dbase[32] = { /* Distance codes 0..31 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49,
         65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073,
diff --git a/contrib/pascal/zlibpas.pas b/contrib/pascal/zlibpas.pas
index 28383bc..0b2153d 100644
--- a/contrib/pascal/zlibpas.pas
+++ b/contrib/pascal/zlibpas.pas
@@ -10,7 +10,7 @@
 interface
 
 const
-  ZLIB_VERSION = '1.2.4.3';
+  ZLIB_VERSION = '1.2.4.4';
 
 type
   alloc_func = function(opaque: Pointer; items, size: Integer): Pointer;
diff --git a/contrib/vstudio/vc10/zlib.rc b/contrib/vstudio/vc10/zlib.rc
index 6d8cd3c..6127143 100644
--- a/contrib/vstudio/vc10/zlib.rc
+++ b/contrib/vstudio/vc10/zlib.rc
@@ -2,8 +2,8 @@
 

 #define IDR_VERSION1  1

 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE

-  FILEVERSION	 1,2,4,3

-  PRODUCTVERSION 1,2,4,3

+  FILEVERSION	 1,2,4,4

+  PRODUCTVERSION 1,2,4,4

   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK

   FILEFLAGS	0

   FILEOS	VOS_DOS_WINDOWS32

@@ -17,7 +17,7 @@
 

     BEGIN

       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"

-      VALUE "FileVersion",	"1.2.4.3\0"

+      VALUE "FileVersion",	"1.2.4.4\0"

       VALUE "InternalName",	"zlib\0"

       VALUE "OriginalFilename",	"zlib.dll\0"

       VALUE "ProductName",	"ZLib.DLL\0"

diff --git a/contrib/vstudio/vc9/zlib.rc b/contrib/vstudio/vc9/zlib.rc
index 6d8cd3c..6127143 100644
--- a/contrib/vstudio/vc9/zlib.rc
+++ b/contrib/vstudio/vc9/zlib.rc
@@ -2,8 +2,8 @@
 

 #define IDR_VERSION1  1

 IDR_VERSION1	VERSIONINFO	MOVEABLE IMPURE LOADONCALL DISCARDABLE

-  FILEVERSION	 1,2,4,3

-  PRODUCTVERSION 1,2,4,3

+  FILEVERSION	 1,2,4,4

+  PRODUCTVERSION 1,2,4,4

   FILEFLAGSMASK	VS_FFI_FILEFLAGSMASK

   FILEFLAGS	0

   FILEOS	VOS_DOS_WINDOWS32

@@ -17,7 +17,7 @@
 

     BEGIN

       VALUE "FileDescription", "zlib data compression and ZIP file I/O library\0"

-      VALUE "FileVersion",	"1.2.4.3\0"

+      VALUE "FileVersion",	"1.2.4.4\0"

       VALUE "InternalName",	"zlib\0"

       VALUE "OriginalFilename",	"zlib.dll\0"

       VALUE "ProductName",	"ZLib.DLL\0"

diff --git a/deflate.c b/deflate.c
index efb26bf..b4ed49d 100644
--- a/deflate.c
+++ b/deflate.c
@@ -52,7 +52,7 @@
 #include "deflate.h"
 
 const char deflate_copyright[] =
-   " deflate 1.2.4.3 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
+   " deflate 1.2.4.4 Copyright 1995-2010 Jean-loup Gailly and Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
diff --git a/inftrees.c b/inftrees.c
index 430b174..ed32632 100644
--- a/inftrees.c
+++ b/inftrees.c
@@ -9,7 +9,7 @@
 #define MAXBITS 15
 
 const char inflate_copyright[] =
-   " inflate 1.2.4.3 Copyright 1995-2010 Mark Adler ";
+   " inflate 1.2.4.4 Copyright 1995-2010 Mark Adler ";
 /*
   If you use the zlib library in a product, an acknowledgment is welcome
   in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@
         35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
     static const unsigned short lext[31] = { /* Length codes 257..285 extra */
         16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
-        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 195, 66};
+        19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 74, 65};
     static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
         1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
         257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/qnx/package.qpg b/qnx/package.qpg
index 55cb3e1..4ee3ad3 100644
--- a/qnx/package.qpg
+++ b/qnx/package.qpg
@@ -25,10 +25,10 @@
       <QPG:Files>
          <QPG:Add file="../zconf.h" install="/opt/include/" user="root:sys" permission="644"/>
          <QPG:Add file="../zlib.h" install="/opt/include/" user="root:sys" permission="644"/>
-         <QPG:Add file="../libz.so.1.2.4.3" install="/opt/lib/" user="root:bin" permission="644"/>
-         <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.4.3"/>
-         <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.4.3"/>
-         <QPG:Add file="../libz.so.1.2.4.3" install="/opt/lib/" component="slib"/>
+         <QPG:Add file="../libz.so.1.2.4.4" install="/opt/lib/" user="root:bin" permission="644"/>
+         <QPG:Add file="libz.so" install="/opt/lib/" component="dev" filetype="symlink" linkto="libz.so.1.2.4.4"/>
+         <QPG:Add file="libz.so.1" install="/opt/lib/" filetype="symlink" linkto="libz.so.1.2.4.4"/>
+         <QPG:Add file="../libz.so.1.2.4.4" install="/opt/lib/" component="slib"/>
       </QPG:Files>
 
       <QPG:PackageFilter>
@@ -63,7 +63,7 @@
             </QPM:ProductDescription>
 
             <QPM:ReleaseDescription>
-               <QPM:ReleaseVersion>1.2.4.3</QPM:ReleaseVersion>
+               <QPM:ReleaseVersion>1.2.4.4</QPM:ReleaseVersion>
                <QPM:ReleaseUrgency>Medium</QPM:ReleaseUrgency>
                <QPM:ReleaseStability>Stable</QPM:ReleaseStability>
                <QPM:ReleaseNoteMinor></QPM:ReleaseNoteMinor>
diff --git a/treebuild.xml b/treebuild.xml
index 616ed3f..934442f 100644
--- a/treebuild.xml
+++ b/treebuild.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" ?>
-<package name="zlib" version="1.2.4.3">
-    <library name="zlib" dlversion="1.2.4.3" dlname="z">
+<package name="zlib" version="1.2.4.4">
+    <library name="zlib" dlversion="1.2.4.4" dlname="z">
 	<property name="description"> zip compression library </property>
 	<property name="include-target-dir" value="$(@PACKAGE/install-includedir)" />
 
diff --git a/win32/Makefile.gcc b/win32/Makefile.gcc
index 0e16190..93c207d 100644
--- a/win32/Makefile.gcc
+++ b/win32/Makefile.gcc
@@ -27,6 +27,11 @@
 SHAREDLIB = zlib1.dll
 IMPLIB    = libzdll.a
 
+#
+# Set to 1 if shared object needs to be installed
+#
+SHARED_MODE=0
+
 #LOC = -DASMV
 #LOC = -DDEBUG -g
 
@@ -38,7 +43,7 @@
 ASFLAGS = $(LOC) -Wall
 
 LD = $(CC)
-LDFLAGS = $(LOC) -s
+LDFLAGS = $(LOC)
 
 AR = $(PREFIX)ar
 ARFLAGS = rcs
@@ -82,43 +87,54 @@
 $(IMPLIB): $(SHAREDLIB)
 
 $(SHAREDLIB): win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
-	$(CC) -shared -Wl,--out-implib,$(IMPLIB) \
+	$(CC) -shared -Wl,--out-implib,$(IMPLIB) $(LDFLAGS) \
 	-o $@ win32/zlib.def $(OBJS) $(OBJA) zlibrc.o
 	$(STRIP) $@
 
 example.exe: example.o $(STATICLIB)
 	$(LD) $(LDFLAGS) -o $@ example.o $(STATICLIB)
+	$(STRIP) $@
 
 minigzip.exe: minigzip.o $(STATICLIB)
 	$(LD) $(LDFLAGS) -o $@ minigzip.o $(STATICLIB)
+	$(STRIP) $@
 
 example_d.exe: example.o $(IMPLIB)
 	$(LD) $(LDFLAGS) -o $@ example.o $(IMPLIB)
+	$(STRIP) $@
 
 minigzip_d.exe: minigzip.o $(IMPLIB)
 	$(LD) $(LDFLAGS) -o $@ minigzip.o $(IMPLIB)
+	$(STRIP) $@
 
 zlibrc.o: win32/zlib1.rc
 	$(RC) $(RCFLAGS) -o $@ win32/zlib1.rc
 
 
-# INCLUDE_PATH and LIBRARY_PATH must be set.
+# BINARY_PATH, INCLUDE_PATH and LIBRARY_PATH must be set.
 
 .PHONY: install uninstall clean
 
-install: zlib.h zconf.h $(LIB)
+install: zlib.h zconf.h $(STATICLIB) $(IMPLIB)
+	-if [ "$(SHARED_MODE)" = "1" ]; then \
+		mkdir -p $(BINARY_PATH); \
+		$(INSTALL) $(SHAREDLIB) $(BINARY_PATH); \
+		$(INSTALL) $(IMPLIB) $(LIBRARY_PATH); \
+	fi
 	-@mkdir -p $(INCLUDE_PATH)
 	-@mkdir -p $(LIBRARY_PATH)
 	-$(INSTALL) zlib.h $(INCLUDE_PATH)
 	-$(INSTALL) zconf.h $(INCLUDE_PATH)
 	-$(INSTALL) $(STATICLIB) $(LIBRARY_PATH)
-	-$(INSTALL) $(IMPLIB) $(LIBRARY_PATH)
 
 uninstall:
+	-if [ "$(SHARED_MODE)" = "1" ]; then \
+		$(RM) $(BINARY_PATH)/$(SHAREDLIB); \
+		$(RM) $(LIBRARY_PATH)/$(IMPLIB); \
+	fi
 	-$(RM) $(INCLUDE_PATH)/zlib.h
 	-$(RM) $(INCLUDE_PATH)/zconf.h
 	-$(RM) $(LIBRARY_PATH)/$(STATICLIB)
-	-$(RM) $(LIBRARY_PATH)/$(IMPLIB)
 
 clean:
 	-$(RM) $(STATICLIB)
diff --git a/zconf.h b/zconf.h
index 1988920..f5a6c87 100644
--- a/zconf.h
+++ b/zconf.h
@@ -315,7 +315,7 @@
 #  endif
 #endif
 
-#ifdef HAVE_VISIBILITY_PRAGMA
+#ifndef NO_VIZ
 #  define ZEXTERN __attribute__((visibility ("default"))) extern
 #endif
 
@@ -368,6 +368,16 @@
 #  include <sys/types.h>    /* for off_t */
 #endif
 
+/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
+ * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
+ * though the former does not conform to the LFS document), but considering
+ * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
+ * equivalently requesting no 64-bit operations
+ */
+#if -_LARGEFILE64_SOURCE - -1 == 1
+#  undef _LARGEFILE64_SOURCE
+#endif
+
 #if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
 #  include <unistd.h>       /* for SEEK_* and off_t */
 #  ifdef VMS
diff --git a/zconf.h.cmakein b/zconf.h.cmakein
index cf9cc24..18dd770 100644
--- a/zconf.h.cmakein
+++ b/zconf.h.cmakein
@@ -317,7 +317,7 @@
 #  endif
 #endif
 
-#ifdef HAVE_VISIBILITY_PRAGMA
+#ifndef NO_VIZ
 #  define ZEXTERN __attribute__((visibility ("default"))) extern
 #endif
 
@@ -370,6 +370,16 @@
 #  include <sys/types.h>    /* for off_t */
 #endif
 
+/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
+ * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
+ * though the former does not conform to the LFS document), but considering
+ * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
+ * equivalently requesting no 64-bit operations
+ */
+#if -_LARGEFILE64_SOURCE - -1 == 1
+#  undef _LARGEFILE64_SOURCE
+#endif
+
 #if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
 #  include <unistd.h>       /* for SEEK_* and off_t */
 #  ifdef VMS
diff --git a/zconf.h.in b/zconf.h.in
index 1988920..f5a6c87 100644
--- a/zconf.h.in
+++ b/zconf.h.in
@@ -315,7 +315,7 @@
 #  endif
 #endif
 
-#ifdef HAVE_VISIBILITY_PRAGMA
+#ifndef NO_VIZ
 #  define ZEXTERN __attribute__((visibility ("default"))) extern
 #endif
 
@@ -368,6 +368,16 @@
 #  include <sys/types.h>    /* for off_t */
 #endif
 
+/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
+ * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
+ * though the former does not conform to the LFS document), but considering
+ * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
+ * equivalently requesting no 64-bit operations
+ */
+#if -_LARGEFILE64_SOURCE - -1 == 1
+#  undef _LARGEFILE64_SOURCE
+#endif
+
 #if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
 #  include <unistd.h>       /* for SEEK_* and off_t */
 #  ifdef VMS
diff --git a/zlib.3 b/zlib.3
index b534616..857dbd9 100644
--- a/zlib.3
+++ b/zlib.3
@@ -1,4 +1,4 @@
-.TH ZLIB 3 "10 Apr 2010"
+.TH ZLIB 3 "18 Apr 2010"
 .SH NAME
 zlib \- compression/decompression library
 .SH SYNOPSIS
@@ -125,7 +125,7 @@
 Send questions and/or comments to zlib@gzip.org,
 or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
 .SH AUTHORS
-Version 1.2.4.3
+Version 1.2.4.4
 Copyright (C) 1995-2010 Jean-loup Gailly (jloup@gzip.org)
 and Mark Adler (madler@alumni.caltech.edu).
 .LP
diff --git a/zlib.3.pdf b/zlib.3.pdf
index 584f793..364aeb0 100644
--- a/zlib.3.pdf
+++ b/zlib.3.pdf
Binary files differ
diff --git a/zlib.h b/zlib.h
index 699630c..670fff1 100644
--- a/zlib.h
+++ b/zlib.h
@@ -1,5 +1,5 @@
 /* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.2.4.3, April 10th, 2010
+  version 1.2.4.4, April 18th, 2010
 
   Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
 
@@ -37,12 +37,12 @@
 extern "C" {
 #endif
 
-#define ZLIB_VERSION "1.2.4.3"
-#define ZLIB_VERNUM 0x1243
+#define ZLIB_VERSION "1.2.4.4"
+#define ZLIB_VERNUM 0x1244
 #define ZLIB_VER_MAJOR 1
 #define ZLIB_VER_MINOR 2
 #define ZLIB_VER_REVISION 4
-#define ZLIB_VER_SUBREVISION 3
+#define ZLIB_VER_SUBREVISION 4
 
 /*
     The 'zlib' compression library provides in-memory compression and
diff --git a/zlib.pc.in b/zlib.pc.in
index b4f98e5..7e5acf9 100644
--- a/zlib.pc.in
+++ b/zlib.pc.in
@@ -1,6 +1,7 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
+sharedlibdir=@sharedlibdir@
 includedir=@includedir@
 
 Name: zlib
@@ -8,5 +9,5 @@
 Version: @VERSION@
 
 Requires:
-Libs: -L${libdir} -lz
+Libs: -L${libdir} -L${sharedlibdir} -lz
 Cflags: -I${includedir}