diff options
author | Mark Adler <madler@alumni.caltech.edu> | 2016-12-03 10:27:14 -0800 |
---|---|---|
committer | Mark Adler <madler@alumni.caltech.edu> | 2016-12-04 07:48:48 -0800 |
commit | ca50ebd4dfd08dfd7e8c8bb087278e158cd67720 (patch) | |
tree | 9262ad9bb1dde6992b41093614d75d63eea2bf31 /configure | |
parent | c5ee34c28a9144b1b5a5021d05ed29940c53010c (diff) | |
download | zlib-ca50ebd4dfd08dfd7e8c8bb087278e158cd67720.tar.gz zlib-ca50ebd4dfd08dfd7e8c8bb087278e158cd67720.tar.bz2 zlib-ca50ebd4dfd08dfd7e8c8bb087278e158cd67720.zip |
Create z_size_t and z_ssize_t types.
Normally these are set to size_t and ssize_t. But if they do not
exist, then they are set to the smallest integer type that can
contain a pointer. size_t is unsigned and ssize_t is signed.
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 106 |
1 files changed, 94 insertions, 12 deletions
@@ -181,9 +181,12 @@ show $cc -c $test.c | |||
181 | if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then | 181 | if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then |
182 | echo ... using gcc >> configure.log | 182 | echo ... using gcc >> configure.log |
183 | CC="$cc" | 183 | CC="$cc" |
184 | CFLAGS="${CFLAGS--O3} ${ARCHS}" | 184 | CFLAGS="${CFLAGS--O3}" |
185 | SFLAGS="${CFLAGS--O3} -fPIC" | 185 | SFLAGS="${CFLAGS--O3} -fPIC" |
186 | LDFLAGS="${LDFLAGS} ${ARCHS}" | 186 | if test "$ARCHS"; then |
187 | CFLAGS="${CFLAGS} ${ARCHS}" | ||
188 | LDFLAGS="${LDFLAGS} ${ARCHS}" | ||
189 | fi | ||
187 | if test $build64 -eq 1; then | 190 | if test $build64 -eq 1; then |
188 | CFLAGS="${CFLAGS} -m64" | 191 | CFLAGS="${CFLAGS} -m64" |
189 | SFLAGS="${SFLAGS} -m64" | 192 | SFLAGS="${SFLAGS} -m64" |
@@ -360,16 +363,16 @@ if ($CC -c $CFLAGS $test.c) 2>/dev/null; then | |||
360 | } | 363 | } |
361 | echo - using any output from compiler to indicate an error >> configure.log | 364 | echo - using any output from compiler to indicate an error >> configure.log |
362 | else | 365 | else |
363 | try() | 366 | try() |
364 | { | 367 | { |
365 | show $* | 368 | show $* |
366 | ( $* ) >> configure.log 2>&1 | 369 | ( $* ) >> configure.log 2>&1 |
367 | ret=$? | 370 | ret=$? |
368 | if test $ret -ne 0; then | 371 | if test $ret -ne 0; then |
369 | echo "(exit code "$ret")" >> configure.log | 372 | echo "(exit code "$ret")" >> configure.log |
370 | fi | 373 | fi |
371 | return $ret | 374 | return $ret |
372 | } | 375 | } |
373 | fi | 376 | fi |
374 | 377 | ||
375 | tryboth() | 378 | tryboth() |
@@ -445,6 +448,85 @@ esac | |||
445 | 448 | ||
446 | echo >> configure.log | 449 | echo >> configure.log |
447 | 450 | ||
451 | # check for size_t | ||
452 | cat > $test.c <<EOF | ||
453 | #include <stdio.h> | ||
454 | #include <stdlib.h> | ||
455 | size_t dummy = 0; | ||
456 | EOF | ||
457 | if try $CC -c $CFLAGS $test.c; then | ||
458 | echo "Checking for size_t... Yes." | tee -a configure.log | ||
459 | need_sizet=0 | ||
460 | else | ||
461 | echo "Checking for size_t... No." | tee -a configure.log | ||
462 | need_sizet=1 | ||
463 | fi | ||
464 | |||
465 | echo >> configure.log | ||
466 | |||
467 | # check for ssize_t | ||
468 | cat > $test.c <<EOF | ||
469 | #include <sys/types.h> | ||
470 | ssize_t dummy = 0; | ||
471 | EOF | ||
472 | if try $CC -c $CFLAGS $test.c; then | ||
473 | echo "Checking for ssize_t... Yes." | tee -a configure.log | ||
474 | need_ssizet=0 | ||
475 | else | ||
476 | echo "Checking for ssize_t... No." | tee -a configure.log | ||
477 | need_ssizet=1 | ||
478 | fi | ||
479 | |||
480 | echo >> configure.log | ||
481 | |||
482 | # find the size_t integer type, if needed | ||
483 | if test $need_sizet -eq 1 -o $need_ssizet -eq 1; then | ||
484 | cat > $test.c <<EOF | ||
485 | long long dummy = 0; | ||
486 | EOF | ||
487 | if try $CC -c $CFLAGS $test.c; then | ||
488 | echo "Checking for long long... Yes." | tee -a configure.log | ||
489 | cat > $test.c <<EOF | ||
490 | #include <stdio.h> | ||
491 | int main(void) { | ||
492 | if (sizeof(void *) <= sizeof(int)) puts("int"); | ||
493 | else if (sizeof(void *) <= sizeof(long)) puts("long"); | ||
494 | else puts("long long"); | ||
495 | return 0; | ||
496 | } | ||
497 | EOF | ||
498 | else | ||
499 | echo "Checking for long long... No." | tee -a configure.log | ||
500 | cat > $test.c <<EOF | ||
501 | #include <stdio.h> | ||
502 | int main(void) { | ||
503 | if (sizeof(void *) <= sizeof(int)) puts("int"); | ||
504 | else puts("long"); | ||
505 | return 0; | ||
506 | } | ||
507 | EOF | ||
508 | fi | ||
509 | if try $CC $CFLAGS -o $test $test.c; then | ||
510 | sizet=`./$test` | ||
511 | echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log | ||
512 | else | ||
513 | echo "Failed to find a pointer-size integer type." | tee -a configure.log | ||
514 | leave 1 | ||
515 | fi | ||
516 | fi | ||
517 | |||
518 | if test $need_sizet -eq 1; then | ||
519 | CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}" | ||
520 | SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}" | ||
521 | fi | ||
522 | |||
523 | if test $need_ssizet -eq 1; then | ||
524 | CFLAGS="${CFLAGS} -DNO_SSIZE_T=${sizet}" | ||
525 | SFLAGS="${SFLAGS} -DNO_SSIZE_T=${sizet}" | ||
526 | fi | ||
527 | |||
528 | echo >> configure.log | ||
529 | |||
448 | # check for large file support, and if none, check for fseeko() | 530 | # check for large file support, and if none, check for fseeko() |
449 | cat > $test.c <<EOF | 531 | cat > $test.c <<EOF |
450 | #include <sys/types.h> | 532 | #include <sys/types.h> |