diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2015-03-26 03:05:30 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2015-03-26 03:05:30 (GMT) |
commit | 90cc5df290516821b0b4c535c805771516832c60 (patch) | |
tree | 44b61a8acfba0eeadbcb9b0bbcb1cc31326cb332 /configure | |
parent | 27dd4e0f05c72c9ec3745965d525cc4637fc2e0a (diff) | |
download | hdf5-90cc5df290516821b0b4c535c805771516832c60.zip hdf5-90cc5df290516821b0b4c535c805771516832c60.tar.gz hdf5-90cc5df290516821b0b4c535c805771516832c60.tar.bz2 |
[svn-r26598] Description:
Bring r26501 from the autotools_rework branch to the trunk:
Remove ULLONG_TO_LDOUBLE_PRECISION macro/define, as it's targeting bugs
in the FreeBSD and Cygwin compilers.
Tested on:
Linux/32 2.6.18 (jam) w/serial & parallel
(Daily tested on branch for 2+ days)
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 124 |
1 files changed, 0 insertions, 124 deletions
@@ -28151,130 +28151,6 @@ $as_echo "no" >&6; } esac ## ---------------------------------------------------------------------- -## Set the flag to indicate that the machine can convert from -## 'unsigned long long' to 'long double' without precision loss. -## (This flag should be set for all machines, except for FreeBSD(sleipnir) -## where the last 2 bytes of mantissa are lost when compiler tries to do -## the conversion, and Cygwin where compiler doesn't do rounding correctly.) -## -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if converting unsigned long long to long double with precision" >&5 -$as_echo_n "checking if converting unsigned long long to long double with precision... " >&6; } - -if test ${ac_cv_sizeof_long_double} = 0; then - hdf5_cv_ullong_to_ldouble_precision=${hdf5_cv_ullong_to_ldouble_precision=no} -else - if ${hdf5_cv_ullong_to_ldouble_precision+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include <stdlib.h> - #include <string.h> - - int main(void) - { - /* General variables */ - int endian; - int tst_value = 1; - int ret = 0; - - /* For FreeBSD */ - unsigned long long l = 0xa601e80bda85fcefULL; - long double ld; - unsigned char *c1, *c2; - size_t size; - - /* For Cygwin */ - unsigned long long l_cyg = 0xfffffffffffffff0ULL; - long double ld_cyg; - unsigned char *c2_cyg; - size_t size_cyg; - - - /* Determine this system's endianess */ - c1 = (unsigned char*)calloc(1, sizeof(int)); - memcpy((void*)c1, &tst_value, sizeof(int)); - if(c1[0]==1) - endian = 0; /* little endian */ - else - endian = 1; /* big endian */ - - /* For FreeBSD */ - size = sizeof(long double); - memset(&ld, 0, size); - ld = (long double)l; - - c2 = (unsigned char*)calloc(1, size); - memcpy((void*)c2, &ld, size); - - /* Test if the last 2 bytes of mantissa are lost. Mainly for FreeBSD on Intel - * architecture(sleipnir) where it happens. */ - /*if(endian==0 && c2[0]==0 && c2[1]==0)*/ /*little endian*/ - if(endian==0 && c2[0]==0) { /*little endian*/ - ret = 1; - goto done; - } - - /* For Cygwin */ - size_cyg = sizeof(long double); - memset(&ld_cyg, 0, size); - ld_cyg = (long double)l_cyg; - - c2_cyg = (unsigned char*)calloc(1, size_cyg); - memcpy((void*)c2_cyg, &ld_cyg, size_cyg); - - /* Test if the last 4 bytes(roughly) of mantissa are rounded up. Mainly for Cygwin - * where the values like 0xffffffffffffffff, 0xfffffffffffffffe, ..., - * 0xfffffffffffff000 ... are rounded up as 0x0000403f8000000000000000 - * instead of 0x0000403effffffffffffffff, 0x0000403efffffffffffffffe, ..., - * 0x0000403efffffffffffff000 ... - */ - if(endian==0 && c2_cyg[0]==0 && c2_cyg[1]==0 && c2_cyg[2]==0 && c2_cyg[3]==0) - ret = 1; - - done: - if(c1) - free(c1); - if(c2) - free(c2); - if(c2_cyg) - free(c2_cyg); - exit(ret); - } - -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - hdf5_cv_ullong_to_ldouble_precision=yes -else - hdf5_cv_ullong_to_ldouble_precision=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - -fi - -if test ${hdf5_cv_ullong_to_ldouble_precision} = "yes"; then - -$as_echo "#define ULLONG_TO_LDOUBLE_PRECISION 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - -## ---------------------------------------------------------------------- ## Set the flag to indicate that the machine can handle overflow converting ## all floating-point to all integer types. ## (This flag should be set for all machines, except for Cray X1 where |