diff options
Diffstat (limited to 'gnulib-m4/frexpl.m4')
-rw-r--r-- | gnulib-m4/frexpl.m4 | 143 |
1 files changed, 51 insertions, 92 deletions
diff --git a/gnulib-m4/frexpl.m4 b/gnulib-m4/frexpl.m4 index cd3ac6e5..80165204 100644 --- a/gnulib-m4/frexpl.m4 +++ b/gnulib-m4/frexpl.m4 @@ -1,5 +1,5 @@ -# frexpl.m4 serial 20 -dnl Copyright (C) 2007-2015 Free Software Foundation, Inc. +# frexpl.m4 serial 9 +dnl Copyright (C) 2007-2010 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,29 +7,29 @@ dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FREXPL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) - AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) - - dnl Persuade glibc <math.h> to declare frexpl(). - AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - dnl Check whether it's declared. - dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>. - AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]]) - + dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>. + AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>]) FREXPL_LIBM= if test $HAVE_DECL_FREXPL = 1; then - gl_CHECK_FREXPL_NO_LIBM + AC_CACHE_CHECK([whether frexpl() can be used without linking with libm], + [gl_cv_func_frexpl_no_libm], + [ + AC_TRY_LINK([#include <math.h> + long double x;], + [int e; return frexpl (x, &e) > 0;], + [gl_cv_func_frexpl_no_libm=yes], + [gl_cv_func_frexpl_no_libm=no]) + ]) if test $gl_cv_func_frexpl_no_libm = no; then AC_CACHE_CHECK([whether frexpl() can be used with libm], [gl_cv_func_frexpl_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <math.h> - long double x;]], - [[int e; return frexpl (x, &e) > 0;]])], + AC_TRY_LINK([#include <math.h> + long double x;], + [int e; return frexpl (x, &e) > 0;], [gl_cv_func_frexpl_in_libm=yes], [gl_cv_func_frexpl_in_libm=no]) LIBS="$save_LIBS" @@ -46,7 +46,7 @@ AC_DEFUN([gl_FUNC_FREXPL], LIBS="$save_LIBS" case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl=yes ;; - *) gl_func_frexpl=no; REPLACE_FREXPL=1 ;; + *) gl_func_frexpl=no; REPLACE_FREXPL=1; FREXPL_LIBM= ;; esac else gl_func_frexpl=no @@ -57,13 +57,7 @@ AC_DEFUN([gl_FUNC_FREXPL], fi fi if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; then - dnl Find libraries needed to link lib/frexpl.c. - if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then - AC_REQUIRE([gl_FUNC_FREXP]) - FREXPL_LIBM="$FREXP_LIBM" - else - FREXPL_LIBM= - fi + AC_LIBOBJ([frexpl]) fi AC_SUBST([FREXPL_LIBM]) ]) @@ -71,12 +65,19 @@ AC_DEFUN([gl_FUNC_FREXPL], AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) - AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) dnl Check whether it's declared. - dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>. - AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]]) + dnl MacOS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>. + AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [#include <math.h>]) if test $HAVE_DECL_FREXPL = 1; then - gl_CHECK_FREXPL_NO_LIBM + AC_CACHE_CHECK([whether frexpl() can be used without linking with libm], + [gl_cv_func_frexpl_no_libm], + [ + AC_TRY_LINK([#include <math.h> + long double x;], + [int e; return frexpl (x, &e) > 0;], + [gl_cv_func_frexpl_no_libm=yes], + [gl_cv_func_frexpl_no_libm=no]) + ]) if test $gl_cv_func_frexpl_no_libm = yes; then gl_FUNC_FREXPL_WORKS case "$gl_cv_func_frexpl_works" in @@ -93,28 +94,14 @@ AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM], [Define if the frexpl() function is available in libc.]) fi fi -]) - -dnl Test whether frexpl() can be used without linking with libm. -dnl Set gl_cv_func_frexpl_no_libm to 'yes' or 'no' accordingly. -AC_DEFUN([gl_CHECK_FREXPL_NO_LIBM], -[ - AC_CACHE_CHECK([whether frexpl() can be used without linking with libm], - [gl_cv_func_frexpl_no_libm], - [ - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <math.h> - long double x;]], - [[int e; return frexpl (x, &e) > 0;]])], - [gl_cv_func_frexpl_no_libm=yes], - [gl_cv_func_frexpl_no_libm=no]) - ]) + if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then + AC_LIBOBJ([frexpl]) + fi ]) dnl Test whether frexpl() works on finite numbers (this fails on -dnl Mac OS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers -dnl (this fails on Mac OS X 10.5/i386), and also on infinite numbers (this +dnl MacOS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers +dnl (this fails on MacOS X 10.5/i386), and also on infinite numbers (this dnl fails e.g. on IRIX 6.5 and mingw). AC_DEFUN([gl_FUNC_FREXPL_WORKS], [ @@ -122,8 +109,7 @@ AC_DEFUN([gl_FUNC_FREXPL_WORKS], AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works], [ - AC_RUN_IFELSE( - [AC_LANG_SOURCE([[ + AC_TRY_RUN([ #include <float.h> #include <math.h> /* Override the values of <float.h>, like done in float.in.h. */ @@ -131,28 +117,9 @@ AC_DEFUN([gl_FUNC_FREXPL_WORKS], # undef LDBL_MIN_EXP # define LDBL_MIN_EXP (-16381) #endif -#if defined __i386__ && defined __FreeBSD__ -# undef LDBL_MIN_EXP -# define LDBL_MIN_EXP (-16381) -#endif -#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__ -# undef LDBL_MIN_EXP -# define LDBL_MIN_EXP DBL_MIN_EXP -#endif -#if defined __sgi && (LDBL_MANT_DIG >= 106) -# if defined __GNUC__ -# undef LDBL_MIN_EXP -# define LDBL_MIN_EXP DBL_MIN_EXP -# endif -#endif -extern -#ifdef __cplusplus -"C" -#endif -long double frexpl (long double, int *); +extern long double frexpl (long double, int *); int main() { - int result = 0; volatile long double x; /* Test on finite numbers that fails on AIX 5.1. */ x = 16.0L; @@ -160,9 +127,9 @@ int main() int exp = -9999; frexpl (x, &exp); if (exp != 5) - result |= 1; + return 1; } - /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl + /* Test on finite numbers that fails on MacOS X 10.4, because its frexpl function returns an invalid (incorrectly normalized) value: it returns y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 } but the correct result is @@ -172,7 +139,7 @@ int main() int exp = -9999; long double y = frexpl (x, &exp); if (!(exp == 1 && y == 0.505L)) - result |= 2; + return 1; } /* Test on large finite numbers. This fails on BeOS at i = 16322, while LDBL_MAX_EXP = 16384. @@ -185,10 +152,7 @@ int main() int exp = -9999; frexpl (x, &exp); if (exp != i) - { - result |= 4; - break; - } + return 1; } } /* Test on denormalized numbers. */ @@ -201,9 +165,9 @@ int main() int exp; long double y = frexpl (x, &exp); /* On machines with IEEE854 arithmetic: x = 1.68105e-4932, - exp = -16382, y = 0.5. On Mac OS X 10.5: exp = -16384, y = 0.5. */ + exp = -16382, y = 0.5. On MacOS X 10.5: exp = -16384, y = 0.5. */ if (exp != LDBL_MIN_EXP - 1) - result |= 8; + return 1; } } /* Test on infinite numbers. */ @@ -212,20 +176,15 @@ int main() int exp; long double y = frexpl (x, &exp); if (y != x) - result |= 16; + return 1; } - return result; -}]])], - [gl_cv_func_frexpl_works=yes], - [gl_cv_func_frexpl_works=no], - [ -changequote(,)dnl - case "$host_os" in - aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*) - gl_cv_func_frexpl_works="guessing no";; - *) gl_cv_func_frexpl_works="guessing yes";; - esac -changequote([,])dnl - ]) + return 0; +}], [gl_cv_func_frexpl_works=yes], [gl_cv_func_frexpl_works=no], + [case "$host_os" in + aix* | beos* | darwin* | irix* | mingw* | pw*) + gl_cv_func_frexpl_works="guessing no";; + *) gl_cv_func_frexpl_works="guessing yes";; + esac + ]) ]) ]) |