Remove runtime check in configure for four-byte integer type.
authorMark Adler <madler@alumni.caltech.edu>
Sun, 24 Mar 2013 05:27:43 +0000 (22:27 -0700)
committerMark Adler <madler@alumni.caltech.edu>
Sun, 24 Mar 2013 05:30:09 +0000 (22:30 -0700)
That didn't work when cross-compiling.  Simply rely on limits.h.
If a compiler does not have limits.h, then zconf.h.in should be
modified to define Z_U4 as an unsiged four-byte integer type in
order for crc32() to be fast.

This also simplifies and makes more portable to check for a four-
byte type using limits.h.

configure
zconf.h
zconf.h.cmakein
zconf.h.in

index bb5b1b8..b77a8a8 100755 (executable)
--- a/configure
+++ b/configure
@@ -740,32 +740,6 @@ EOF
   fi
 fi
 
-echo >> configure.log
-
-# find a four-byte unsiged integer type for crc calculations
-cat > $test.c <<EOF
-#include <stdio.h>
-#define is32(n,t) for(n=1,k=0;n;n<<=1,k++);if(k==32){puts(t);return 0;}
-int main() {
-  int k;
-  unsigned i;
-  unsigned long l;
-  unsigned short s;
-  is32(i, "unsigned")
-  is32(l, "unsigned long")
-  is32(s, "unsigned short")
-  return 1;
-}
-EOF
-Z_U4=""
-if try $CC $CFLAGS $test.c -o $test && Z_U4=`./$test` && test -n "$Z_U4"; then
-  sed < zconf.h "/#define Z_U4/s/\/\* \.\/configure may/#define Z_U4 $Z_U4   \/* .\/configure put the/" > zconf.temp.h
-  mv zconf.temp.h zconf.h
-  echo "Looking for a four-byte integer type... Found." | tee -a configure.log
-else
-  echo "Looking for a four-byte integer type... Not found." | tee -a configure.log
-fi
-
 # show the results in the log
 echo >> configure.log
 echo ALL = $ALL >> configure.log
diff --git a/zconf.h b/zconf.h
index 95c9ef6..c6ec884 100644 (file)
--- a/zconf.h
+++ b/zconf.h
@@ -390,20 +390,14 @@ typedef uLong FAR uLongf;
    typedef Byte       *voidp;
 #endif
 
-/* ./configure may #define Z_U4 here */
-
 #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
 #  include <limits.h>
-#  if (UINT_MAX == 0xffffffffUL)
+#  if (UINT_MAX == 4294967295)
 #    define Z_U4 unsigned
-#  else
-#    if (ULONG_MAX == 0xffffffffUL)
-#      define Z_U4 unsigned long
-#    else
-#      if (USHRT_MAX == 0xffffffffUL)
-#        define Z_U4 unsigned short
-#      endif
-#    endif
+#  elif (ULONG_MAX == 4294967295)
+#    define Z_U4 unsigned long
+#  elif (USHRT_MAX == 4294967295)
+#    define Z_U4 unsigned short
 #  endif
 #endif
 
index 028be15..9254e9a 100644 (file)
@@ -392,20 +392,14 @@ typedef uLong FAR uLongf;
    typedef Byte       *voidp;
 #endif
 
-/* ./configure may #define Z_U4 here */
-
 #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
 #  include <limits.h>
-#  if (UINT_MAX == 0xffffffffUL)
+#  if (UINT_MAX == 4294967295)
 #    define Z_U4 unsigned
-#  else
-#    if (ULONG_MAX == 0xffffffffUL)
-#      define Z_U4 unsigned long
-#    else
-#      if (USHRT_MAX == 0xffffffffUL)
-#        define Z_U4 unsigned short
-#      endif
-#    endif
+#  elif (ULONG_MAX == 4294967295)
+#    define Z_U4 unsigned long
+#  elif (USHRT_MAX == 4294967295)
+#    define Z_U4 unsigned short
 #  endif
 #endif
 
index 95c9ef6..c6ec884 100644 (file)
@@ -390,20 +390,14 @@ typedef uLong FAR uLongf;
    typedef Byte       *voidp;
 #endif
 
-/* ./configure may #define Z_U4 here */
-
 #if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
 #  include <limits.h>
-#  if (UINT_MAX == 0xffffffffUL)
+#  if (UINT_MAX == 4294967295)
 #    define Z_U4 unsigned
-#  else
-#    if (ULONG_MAX == 0xffffffffUL)
-#      define Z_U4 unsigned long
-#    else
-#      if (USHRT_MAX == 0xffffffffUL)
-#        define Z_U4 unsigned short
-#      endif
-#    endif
+#  elif (ULONG_MAX == 4294967295)
+#    define Z_U4 unsigned long
+#  elif (USHRT_MAX == 4294967295)
+#    define Z_U4 unsigned short
 #  endif
 #endif