Skip to content

Commit

Permalink
Remove runtime check in configure for four-byte integer type.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
madler committed Mar 24, 2013
1 parent 66fcefb commit 03ff48c
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 59 deletions.
26 changes: 0 additions & 26 deletions configure
Expand Up @@ -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
Expand Down
16 changes: 5 additions & 11 deletions zconf.h
Expand Up @@ -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

Expand Down
16 changes: 5 additions & 11 deletions zconf.h.cmakein
Expand Up @@ -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

Expand Down
16 changes: 5 additions & 11 deletions zconf.h.in
Expand Up @@ -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

Expand Down

0 comments on commit 03ff48c

Please sign in to comment.