X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fldexpl.m4;h=76101f336017259a185d11e438b7871ef804cfd3;hb=0f5629a2fc2a536cfedd8d29e66c36995d8d3211;hp=0a4fe88b053c164c1405c1bbfcba431cb520df6f;hpb=64865499c9cf8748356a0857a8481d74b394bd79;p=gnulib.git diff --git a/m4/ldexpl.m4 b/m4/ldexpl.m4 index 0a4fe88b0..76101f336 100644 --- a/m4/ldexpl.m4 +++ b/m4/ldexpl.m4 @@ -1,5 +1,5 @@ -# ldexpl.m4 serial 8 -dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. +# ldexpl.m4 serial 12 +dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,6 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_LDEXPL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) + AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM dnl Check whether it's declared. dnl MacOS X 10.3 has ldexpl() in libc but doesn't declare it in . AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [#include ]) @@ -40,7 +41,7 @@ AC_DEFUN([gl_FUNC_LDEXPL], LIBS="$save_LIBS" case "$gl_cv_func_ldexpl_works" in *yes) gl_func_ldexpl=yes ;; - *) gl_func_ldexpl=no; REPLACE_LDEXPL=1; LDEXPL_LIBM= ;; + *) gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;; esac else gl_func_ldexpl=no @@ -51,7 +52,8 @@ AC_DEFUN([gl_FUNC_LDEXPL], fi fi if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then - AC_LIBOBJ([ldexpl]) + dnl Find libraries needed to link lib/ldexpl.c. + LDEXPL_LIBM="$ISNANL_LIBM" fi AC_SUBST([LDEXPL_LIBM]) ]) @@ -84,14 +86,27 @@ AC_DEFUN([gl_FUNC_LDEXPL_WORKS], AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include -extern long double ldexpl (long double, int); +extern +#ifdef __cplusplus +"C" +#endif +long double ldexpl (long double, int); int main() { - volatile long double x1 = 1.0; - volatile long double y1 = ldexpl (x1, -1); - volatile long double x2 = 1.73205L; - volatile long double y2 = ldexpl (x2, 0); - return (y1 != 0.5L) || (y2 != x2); + int result = 0; + { + volatile long double x = 1.0; + volatile long double y = ldexpl (x, -1); + if (y != 0.5L) + result |= 1; + } + { + volatile long double x = 1.73205L; + volatile long double y = ldexpl (x, 0); + if (y != x) + result |= 2; + } + return result; }]])], [gl_cv_func_ldexpl_works=yes], [gl_cv_func_ldexpl_works=no],