diff options
author | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2004-04-28 20:53:29 +0000 |
---|---|---|
committer | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2004-04-28 20:53:29 +0000 |
commit | cde164536693acd1d43df2720603245542e0ff9b (patch) | |
tree | e58aedbd7276d50c743a94a1d4d7f06925360b71 /hints | |
parent | 178eb895c5deb67bb37c347449d4e8f3288b8b7e (diff) | |
download | perl-cde164536693acd1d43df2720603245542e0ff9b.tar.gz |
When configuring for 64-bit support, check that the
C library functions for casting floating point values
to 64-bit integer values are not broken.
p4raw-id: //depot/perl@22750
Diffstat (limited to 'hints')
-rw-r--r-- | hints/openbsd.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/hints/openbsd.sh b/hints/openbsd.sh index 51a75a9e63..b7f4d794e8 100644 --- a/hints/openbsd.sh +++ b/hints/openbsd.sh @@ -125,6 +125,63 @@ $define|true|[yY]*) esac EOCBU +# This script UU/use64bitint.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use 64-bitness. +cat > UU/use64bitint.cbu <<'EOCBU' +case "$use64bitint" in +$define|true|[yY]*) + echo " " + echo "Checking if your C library has broken 64-bit functions..." >&4 + $cat >check.c <<EOCP +#include <stdio.h> +typedef unsigned long long myULL; +int main (void) +{ + struct { + double d; + myULL u; + } *p, test[] = { + {4294967303.15, 4294967303ULL}, + {4294967294.2, 4294967294ULL}, + {4294967295.7, 4294967295ULL}, + {0.0, 0ULL} + }; + for (p = test; p->u; p++) { + myULL x = (myULL)p->d; + if (x != p->u) { + printf("buggy\n"); + return 0; + } + } + printf("ok\n"); + return 0; +} +EOCP + set check + if eval $compile_ok; then + libcquad=`./check` + echo "Your C library's 64-bit functions are $libcquad." + else + echo "(I can't seem to compile the test program.)" + echo "Assuming that your C library's 64-bit functions are ok." + libcquad="ok" + fi + $rm -f check.c check + + case "$libcquad" in + buggy*) + cat >&4 <<EOM + +*** You have a C library with broken 64-bit functions. +*** 64-bit support does not work reliably in this configuration. +*** Cannot continue, aborting. +EOM + exit 1 + ;; + esac +esac +EOCBU + # When building in the OpenBSD tree we use different paths # This is only part of the story, the rest comes from config.over case "$openbsd_distribution" in |