diff options
-rwxr-xr-x | configure | 106 | ||||
-rw-r--r-- | gzlib.c | 4 | ||||
-rw-r--r-- | gzread.c | 2 | ||||
-rw-r--r-- | gzwrite.c | 2 | ||||
-rw-r--r-- | test/minigzip.c | 2 | ||||
-rw-r--r-- | zconf.h | 15 | ||||
-rw-r--r-- | zconf.h.cmakein | 15 | ||||
-rw-r--r-- | zconf.h.in | 15 |
8 files changed, 144 insertions, 17 deletions
@@ -181,9 +181,12 @@ show $cc -c $test.c if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then echo ... using gcc >> configure.log CC="$cc" - CFLAGS="${CFLAGS--O3} ${ARCHS}" + CFLAGS="${CFLAGS--O3}" SFLAGS="${CFLAGS--O3} -fPIC" - LDFLAGS="${LDFLAGS} ${ARCHS}" + if test "$ARCHS"; then + CFLAGS="${CFLAGS} ${ARCHS}" + LDFLAGS="${LDFLAGS} ${ARCHS}" + fi if test $build64 -eq 1; then CFLAGS="${CFLAGS} -m64" SFLAGS="${SFLAGS} -m64" @@ -360,16 +363,16 @@ if ($CC -c $CFLAGS $test.c) 2>/dev/null; then } echo - using any output from compiler to indicate an error >> configure.log else -try() -{ - show $* - ( $* ) >> configure.log 2>&1 - ret=$? - if test $ret -ne 0; then - echo "(exit code "$ret")" >> configure.log - fi - return $ret -} + try() + { + show $* + ( $* ) >> configure.log 2>&1 + ret=$? + if test $ret -ne 0; then + echo "(exit code "$ret")" >> configure.log + fi + return $ret + } fi tryboth() @@ -445,6 +448,85 @@ esac echo >> configure.log +# check for size_t +cat > $test.c <<EOF +#include <stdio.h> +#include <stdlib.h> +size_t dummy = 0; +EOF +if try $CC -c $CFLAGS $test.c; then + echo "Checking for size_t... Yes." | tee -a configure.log + need_sizet=0 +else + echo "Checking for size_t... No." | tee -a configure.log + need_sizet=1 +fi + +echo >> configure.log + +# check for ssize_t +cat > $test.c <<EOF +#include <sys/types.h> +ssize_t dummy = 0; +EOF +if try $CC -c $CFLAGS $test.c; then + echo "Checking for ssize_t... Yes." | tee -a configure.log + need_ssizet=0 +else + echo "Checking for ssize_t... No." | tee -a configure.log + need_ssizet=1 +fi + +echo >> configure.log + +# find the size_t integer type, if needed +if test $need_sizet -eq 1 -o $need_ssizet -eq 1; then + cat > $test.c <<EOF +long long dummy = 0; +EOF + if try $CC -c $CFLAGS $test.c; then + echo "Checking for long long... Yes." | tee -a configure.log + cat > $test.c <<EOF +#include <stdio.h> +int main(void) { + if (sizeof(void *) <= sizeof(int)) puts("int"); + else if (sizeof(void *) <= sizeof(long)) puts("long"); + else puts("long long"); + return 0; +} +EOF + else + echo "Checking for long long... No." | tee -a configure.log + cat > $test.c <<EOF +#include <stdio.h> +int main(void) { + if (sizeof(void *) <= sizeof(int)) puts("int"); + else puts("long"); + return 0; +} +EOF + fi + if try $CC $CFLAGS -o $test $test.c; then + sizet=`./$test` + echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log + else + echo "Failed to find a pointer-size integer type." | tee -a configure.log + leave 1 + fi +fi + +if test $need_sizet -eq 1; then + CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}" + SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}" +fi + +if test $need_ssizet -eq 1; then + CFLAGS="${CFLAGS} -DNO_SSIZE_T=${sizet}" + SFLAGS="${SFLAGS} -DNO_SSIZE_T=${sizet}" +fi + +echo >> configure.log + # check for large file support, and if none, check for fseeko() cat > $test.c <<EOF #include <sys/types.h> @@ -94,7 +94,7 @@ local gzFile gz_open(path, fd, mode) const char *mode; { gz_statep state; - size_t len; + z_size_t len; int oflag; #ifdef O_CLOEXEC int cloexec = 0; @@ -191,7 +191,7 @@ local gzFile gz_open(path, fd, mode) #ifdef WIDECHAR if (fd == -2) { len = wcstombs(NULL, path, 0); - if (len == (size_t)-1) + if (len == (z_size_t)-1) len = 0; } else @@ -23,7 +23,7 @@ local int gz_load(state, buf, len, have) unsigned len; unsigned *have; { - ssize_t ret; + z_ssize_t ret; *have = 0; do { @@ -74,7 +74,7 @@ local int gz_comp(state, flush) int flush; { int ret; - ssize_t got; + z_ssize_t got; unsigned have; z_streamp strm = &(state->strm); diff --git a/test/minigzip.c b/test/minigzip.c index f4ffbe2..6c64cc7 100644 --- a/test/minigzip.c +++ b/test/minigzip.c @@ -500,7 +500,7 @@ void file_uncompress(file) char *infile, *outfile; FILE *out; gzFile in; - size_t len = strlen(file); + z_size_t len = strlen(file); if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { fprintf(stderr, "%s: filename too long\n", prog); @@ -224,6 +224,21 @@ # define z_const #endif +#ifndef Z_SOLO +# ifdef NO_SIZE_T + typedef unsigned NO_SIZE_T z_size_t; +# else +# include <stddef.h> + typedef size_t z_size_t; +# endif +# ifdef NO_SSIZE_T + typedef NO_SSIZE_T z_ssize_t; +# else +# include <sys/types.h> + typedef ssize_t z_ssize_t; +# endif +#endif + /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K diff --git a/zconf.h.cmakein b/zconf.h.cmakein index 70942e4..662fc3d 100644 --- a/zconf.h.cmakein +++ b/zconf.h.cmakein @@ -226,6 +226,21 @@ # define z_const #endif +#ifndef Z_SOLO +# ifdef NO_SIZE_T + typedef unsigned NO_SIZE_T z_size_t; +# else +# include <stddef.h> + typedef size_t z_size_t; +# endif +# ifdef NO_SSIZE_T + typedef NO_SSIZE_T z_ssize_t; +# else +# include <sys/types.h> + typedef ssize_t z_ssize_t; +# endif +#endif + /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K @@ -224,6 +224,21 @@ # define z_const #endif +#ifndef Z_SOLO +# ifdef NO_SIZE_T + typedef unsigned NO_SIZE_T z_size_t; +# else +# include <stddef.h> + typedef size_t z_size_t; +# endif +# ifdef NO_SSIZE_T + typedef NO_SSIZE_T z_ssize_t; +# else +# include <sys/types.h> + typedef ssize_t z_ssize_t; +# endif +#endif + /* Maximum value for memLevel in deflateInit2 */ #ifndef MAX_MEM_LEVEL # ifdef MAXSEG_64K |