ldexpl.m4 | ldexpl.m4 | |||
---|---|---|---|---|
# ldexpl.m4 serial 5 | # ldexpl.m4 serial 16 | |||
dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. | dnl Copyright (C) 2007-2014 Free Software Foundation, Inc. | |||
dnl This file is free software; the Free Software Foundation | dnl This file is free software; the Free Software Foundation | |||
dnl gives unlimited permission to copy and/or distribute it, | dnl gives unlimited permission to copy and/or distribute it, | |||
dnl with or without modifications, as long as this notice is preserved. | dnl with or without modifications, as long as this notice is preserved. | |||
AC_DEFUN([gl_FUNC_LDEXPL], | AC_DEFUN([gl_FUNC_LDEXPL], | |||
[ | [ | |||
AC_REQUIRE([gl_MATH_H_DEFAULTS]) | AC_REQUIRE([gl_MATH_H_DEFAULTS]) | |||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) | ||||
AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM | ||||
dnl Persuade glibc <math.h> to declare ldexpl(). | ||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||||
dnl Check whether it's declared. | dnl Check whether it's declared. | |||
dnl MacOS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>. | dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h> | |||
AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [#include <math.h>]) | . | |||
AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]]) | ||||
LDEXPL_LIBM= | LDEXPL_LIBM= | |||
if test $HAVE_DECL_LDEXPL = 1; then | if test $HAVE_DECL_LDEXPL = 1; then | |||
AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm] | gl_CHECK_LDEXPL_NO_LIBM | |||
, | ||||
[gl_cv_func_ldexpl_no_libm], | ||||
[ | ||||
AC_TRY_LINK([#include <math.h> | ||||
long double x;], | ||||
[return ldexpl (x, -1) > 0;], | ||||
[gl_cv_func_ldexpl_no_libm=yes], | ||||
[gl_cv_func_ldexpl_no_libm=no]) | ||||
]) | ||||
if test $gl_cv_func_ldexpl_no_libm = no; then | if test $gl_cv_func_ldexpl_no_libm = no; then | |||
AC_CACHE_CHECK([whether ldexpl() can be used with libm], | AC_CACHE_CHECK([whether ldexpl() can be used with libm], | |||
[gl_cv_func_ldexpl_in_libm], | [gl_cv_func_ldexpl_in_libm], | |||
[ | [ | |||
save_LIBS="$LIBS" | save_LIBS="$LIBS" | |||
LIBS="$LIBS -lm" | LIBS="$LIBS -lm" | |||
AC_TRY_LINK([#include <math.h> | AC_LINK_IFELSE( | |||
long double x;], | [AC_LANG_PROGRAM( | |||
[return ldexpl (x, -1) > 0;], | [[#include <math.h> | |||
long double x;]], | ||||
[[return ldexpl (x, -1) > 0;]])], | ||||
[gl_cv_func_ldexpl_in_libm=yes], | [gl_cv_func_ldexpl_in_libm=yes], | |||
[gl_cv_func_ldexpl_in_libm=no]) | [gl_cv_func_ldexpl_in_libm=no]) | |||
LIBS="$save_LIBS" | LIBS="$save_LIBS" | |||
]) | ]) | |||
if test $gl_cv_func_ldexpl_in_libm = yes; then | if test $gl_cv_func_ldexpl_in_libm = yes; then | |||
LDEXPL_LIBM=-lm | LDEXPL_LIBM=-lm | |||
fi | fi | |||
fi | fi | |||
if test $gl_cv_func_ldexpl_no_libm = yes \ | if test $gl_cv_func_ldexpl_no_libm = yes \ | |||
|| test $gl_cv_func_ldexpl_in_libm = yes; then | || test $gl_cv_func_ldexpl_in_libm = yes; then | |||
save_LIBS="$LIBS" | save_LIBS="$LIBS" | |||
LIBS="$LIBS $LDEXPL_LIBM" | LIBS="$LIBS $LDEXPL_LIBM" | |||
gl_FUNC_LDEXPL_WORKS | gl_FUNC_LDEXPL_WORKS | |||
LIBS="$save_LIBS" | LIBS="$save_LIBS" | |||
case "$gl_cv_func_ldexpl_works" in | case "$gl_cv_func_ldexpl_works" in | |||
*yes) gl_func_ldexpl=yes ;; | *yes) gl_func_ldexpl=yes ;; | |||
*) gl_func_ldexpl=no; REPLACE_LDEXPL=1; LDEXPL_LIBM= ;; | *) gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;; | |||
esac | esac | |||
else | else | |||
gl_func_ldexpl=no | gl_func_ldexpl=no | |||
fi | fi | |||
if test $gl_func_ldexpl = yes; then | if test $gl_func_ldexpl = yes; then | |||
AC_DEFINE([HAVE_LDEXPL], [1], | AC_DEFINE([HAVE_LDEXPL], [1], | |||
[Define if the ldexpl() function is available.]) | [Define if the ldexpl() function is available.]) | |||
fi | fi | |||
fi | fi | |||
if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then | if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then | |||
AC_LIBOBJ([ldexpl]) | dnl Find libraries needed to link lib/ldexpl.c. | |||
if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then | ||||
AC_REQUIRE([gl_FUNC_LDEXP]) | ||||
LDEXPL_LIBM="$LDEXP_LIBM" | ||||
else | ||||
LDEXPL_LIBM="$ISNANL_LIBM" | ||||
fi | ||||
fi | fi | |||
AC_SUBST([LDEXPL_LIBM]) | AC_SUBST([LDEXPL_LIBM]) | |||
]) | ]) | |||
dnl Test whether ldexpl() can be used without linking with libm. | ||||
dnl Set gl_cv_func_ldexpl_no_libm to 'yes' or 'no' accordingly. | ||||
AC_DEFUN([gl_CHECK_LDEXPL_NO_LIBM], | ||||
[ | ||||
AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm], | ||||
[gl_cv_func_ldexpl_no_libm], | ||||
[ | ||||
AC_LINK_IFELSE( | ||||
[AC_LANG_PROGRAM( | ||||
[[#include <math.h> | ||||
long double x;]], | ||||
[[return ldexpl (x, -1) > 0;]])], | ||||
[gl_cv_func_ldexpl_no_libm=yes], | ||||
[gl_cv_func_ldexpl_no_libm=no]) | ||||
]) | ||||
]) | ||||
dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1 | dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1 | |||
dnl and MacOS X 10.4/PowerPC). | dnl and Mac OS X 10.4/PowerPC). | |||
AC_DEFUN([gl_FUNC_LDEXPL_WORKS], | AC_DEFUN([gl_FUNC_LDEXPL_WORKS], | |||
[ | [ | |||
AC_REQUIRE([AC_PROG_CC]) | AC_REQUIRE([AC_PROG_CC]) | |||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | |||
AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works], | AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works], | |||
[ | [ | |||
AC_TRY_RUN([ | AC_RUN_IFELSE( | |||
[AC_LANG_SOURCE([[ | ||||
#include <math.h> | #include <math.h> | |||
extern long double ldexpl (long double, int); | extern | |||
#ifdef __cplusplus | ||||
"C" | ||||
#endif | ||||
long double ldexpl (long double, int); | ||||
int main() | int main() | |||
{ | { | |||
volatile long double x1 = 1.0; | int result = 0; | |||
volatile long double y1 = ldexpl (x1, -1); | { | |||
volatile long double x2 = 1.73205L; | volatile long double x = 1.0; | |||
volatile long double y2 = ldexpl (x2, 0); | volatile long double y = ldexpl (x, -1); | |||
return (y1 != 0.5L) || (y2 != x2); | if (y != 0.5L) | |||
}], [gl_cv_func_ldexpl_works=yes], [gl_cv_func_ldexpl_works=no], | result |= 1; | |||
[case "$host_os" in | } | |||
aix*) gl_cv_func_ldexpl_works="guessing no";; | { | |||
*) gl_cv_func_ldexpl_works="guessing yes";; | volatile long double x = 1.73205L; | |||
esac | 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], | ||||
[ | ||||
changequote(,)dnl | ||||
case "$host_os" in | ||||
aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no";; | ||||
*) gl_cv_func_ldexpl_works="guessing yes";; | ||||
esac | ||||
changequote([,])dnl | ||||
]) | ||||
]) | ]) | |||
]) | ]) | |||
End of changes. 12 change blocks. | ||||
33 lines changed or deleted | 76 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |