summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorRaymond Lu <songyulu@hdfgroup.org>2009-08-19 21:57:12 (GMT)
committerRaymond Lu <songyulu@hdfgroup.org>2009-08-19 21:57:12 (GMT)
commit91e6f1e04de956b44c89ebaaeff5d9e91d8355c4 (patch)
treec47510553adfa094a1850b98a2436ab0ff33718d /configure
parentd1ee62c9156db07134b80ba6cc3d6ddc9617d5d7 (diff)
downloadhdf5-91e6f1e04de956b44c89ebaaeff5d9e91d8355c4.zip
hdf5-91e6f1e04de956b44c89ebaaeff5d9e91d8355c4.tar.gz
hdf5-91e6f1e04de956b44c89ebaaeff5d9e91d8355c4.tar.bz2
[svn-r17387] I added a detection for the correctness of converting from unsigned long to float in the
configure.in. The Pathscale compiler on Sandia's Linux machine misinterprets the values of unsigned long as negative during the conversion to float, when the first bit of unsigned long is on. Tested on jam. Need to test it on Sandia's machine.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure101
1 files changed, 100 insertions, 1 deletions
diff --git a/configure b/configure
index d3cf674..66b4a75 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.in Id: configure.in 17339 2009-08-12 02:27:55Z lrknox .
+# From configure.in Id: configure.in 17368 2009-08-16 22:06:45Z lrknox .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for HDF5 1.8.3-snap7.
#
@@ -50650,6 +50650,105 @@ else
echo "${ECHO_T}no" >&6; }
fi
+{ echo "$as_me:$LINENO: checking if accurately converting unsigned long to float values" >&5
+echo $ECHO_N "checking if accurately converting unsigned long to float values... $ECHO_C" >&6; }
+
+if test "${hdf5_ulong_to_float_accurate+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ int main(void)
+ {
+ int ret = 0;
+ unsigned long l1;
+ unsigned long l2;
+ unsigned long l3;
+ float f1;
+ float f2;
+ float f3;
+
+
+ if(sizeof(unsigned long)==8) {
+ l1 = 0xffffffffffffffffUL;
+ l2 = 0xffffffffffff0000UL;
+ l3 = 0xf000000000000000UL;
+
+ f1 = (float)l1;
+ f2 = (float)l2;
+ f3 = (float)l3;
+
+ if((f1 < 0) || (f2 < 0) || (f3 < 0))
+ ret = 1;
+ }
+
+done:
+ exit(ret);
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ hdf5_ulong_to_float_accurate=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+hdf5_ulong_to_float_accurate=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+
+if test ${hdf5_ulong_to_float_accurate} = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ULONG_TO_FLOAT_ACCURATE 1
+_ACEOF
+
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
{ echo "$as_me:$LINENO: checking if accurately converting unsigned long long to floating-point values" >&5
echo $ECHO_N "checking if accurately converting unsigned long long to floating-point values... $ECHO_C" >&6; }