1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-01 12:20:26 +02:00
guile/m4/isnand.m4
Ludovic Courtès 2e65b52f8a Use Gnulib's isnan' and isinf' modules.
This updates Gnulib to v0.0-4219-g84cdd8b.

* m4/gnulib-cache.m4: Add `isinf' and `isnan'.

* configure.ac: Remove checks for `floatingpoint.h', `ieeefp.h', and
  `nan.h'.

* libguile/gen-scmconfig.c (main): Remove definitions of
  `SCM_HAVE_FLOATINGPOINT_H', `SCM_HAVE_IEEEFP_H', and
  `SCM_HAVE_NAN_H'.

* libguile/numbers.c (isnan)[SCO && !HAVE_ISNAN]: Remove.
  (isinf)[SCO && !HAVE_ISINF]: Remove.
  (xisinf, xisnan): Remove.  Change callers to use `isinf' and `isnan'.
  (guile_ieee_init): Remove the `defined HAVE_ISINF' and `define
  HAVE_ISNAN' conditions.

* libguile/numbers.h: Remove code conditional on
  `SCM_HAVE_FLOATINGPOINT_H', `SCM_HAVE_IEEEFP_H', or `SCM_HAVE_NAN_H'.
2010-09-08 00:34:27 +02:00

99 lines
2.7 KiB
Text

# isnand.m4 serial 7
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.
dnl Check how to get or define isnand().
AC_DEFUN([gl_FUNC_ISNAND],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
ISNAND_LIBM=
gl_HAVE_ISNAND_NO_LIBM
if test $gl_cv_func_isnand_no_libm = no; then
gl_HAVE_ISNAND_IN_LIBM
if test $gl_cv_func_isnand_in_libm = yes; then
ISNAND_LIBM=-lm
fi
fi
dnl The variable gl_func_isnand set here is used by isnan.m4.
if test $gl_cv_func_isnand_no_libm = yes \
|| test $gl_cv_func_isnand_in_libm = yes; then
gl_func_isnand=yes
else
gl_func_isnand=no
HAVE_ISNAND=0
gl_BUILD_ISNAND
fi
AC_SUBST([ISNAND_LIBM])
])
dnl Check how to get or define isnand() without linking with libm.
AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
[
gl_HAVE_ISNAND_NO_LIBM
if test $gl_cv_func_isnand_no_libm = yes; then
AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
[Define if the isnan(double) function is available in libc.])
else
gl_BUILD_ISNAND
fi
])
dnl Pull in replacement isnand definition. It does not need -lm.
AC_DEFUN([gl_BUILD_ISNAND],
[
AC_LIBOBJ([isnand])
gl_DOUBLE_EXPONENT_LOCATION
])
dnl Test whether isnand() can be used with libm.
AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
[
AC_CACHE_CHECK([whether isnan(double) can be used with libm],
[gl_cv_func_isnand_in_libm],
[
save_LIBS="$LIBS"
LIBS="$LIBS -lm"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <math.h>
#if __GNUC__ >= 4
# undef isnand
# define isnand(x) __builtin_isnand ((double)(x))
#elif defined isnan
# undef isnand
# define isnand(x) isnan ((double)(x))
#endif
double x;]],
[[return isnand (x);]])],
[gl_cv_func_isnand_in_libm=yes],
[gl_cv_func_isnand_in_libm=no])
LIBS="$save_LIBS"
])
])
AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
[
AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
[gl_cv_func_isnand_no_libm],
[
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <math.h>
#if __GNUC__ >= 4
# undef isnand
# define isnand(x) __builtin_isnan ((double)(x))
#else
# undef isnand
# define isnand(x) isnan ((double)(x))
#endif
double x;]],
[[return isnand (x);]])],
[gl_cv_func_isnand_no_libm=yes],
[gl_cv_func_isnand_no_libm=no])
])
])