Blame m4/isnand.m4

Packit 8f70b4
# isnand.m4 serial 11
Packit 8f70b4
dnl Copyright (C) 2007-2018 Free Software Foundation, Inc.
Packit 8f70b4
dnl This file is free software; the Free Software Foundation
Packit 8f70b4
dnl gives unlimited permission to copy and/or distribute it,
Packit 8f70b4
dnl with or without modifications, as long as this notice is preserved.
Packit 8f70b4
Packit 8f70b4
dnl Check how to get or define isnand().
Packit 8f70b4
Packit 8f70b4
AC_DEFUN([gl_FUNC_ISNAND],
Packit 8f70b4
[
Packit 8f70b4
  AC_REQUIRE([gl_MATH_H_DEFAULTS])
Packit 8f70b4
  ISNAND_LIBM=
Packit 8f70b4
  gl_HAVE_ISNAND_NO_LIBM
Packit 8f70b4
  if test $gl_cv_func_isnand_no_libm = no; then
Packit 8f70b4
    gl_HAVE_ISNAND_IN_LIBM
Packit 8f70b4
    if test $gl_cv_func_isnand_in_libm = yes; then
Packit 8f70b4
      ISNAND_LIBM=-lm
Packit 8f70b4
    fi
Packit 8f70b4
  fi
Packit 8f70b4
  dnl The variable gl_func_isnand set here is used by isnan.m4.
Packit 8f70b4
  if test $gl_cv_func_isnand_no_libm = yes \
Packit 8f70b4
     || test $gl_cv_func_isnand_in_libm = yes; then
Packit 8f70b4
    gl_func_isnand=yes
Packit 8f70b4
  else
Packit 8f70b4
    gl_func_isnand=no
Packit 8f70b4
    HAVE_ISNAND=0
Packit 8f70b4
  fi
Packit 8f70b4
  AC_SUBST([ISNAND_LIBM])
Packit 8f70b4
])
Packit 8f70b4
Packit 8f70b4
dnl Check how to get or define isnand() without linking with libm.
Packit 8f70b4
Packit 8f70b4
AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
Packit 8f70b4
[
Packit 8f70b4
  gl_HAVE_ISNAND_NO_LIBM
Packit 8f70b4
  gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm
Packit 8f70b4
  if test $gl_cv_func_isnand_no_libm = yes; then
Packit 8f70b4
    AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
Packit 8f70b4
      [Define if the isnan(double) function is available in libc.])
Packit 8f70b4
  fi
Packit 8f70b4
])
Packit 8f70b4
Packit 8f70b4
dnl Prerequisites of replacement isnand definition. It does not need -lm.
Packit 8f70b4
AC_DEFUN([gl_PREREQ_ISNAND],
Packit 8f70b4
[
Packit 8f70b4
  AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
Packit 8f70b4
])
Packit 8f70b4
Packit 8f70b4
dnl Test whether isnand() can be used with libm.
Packit 8f70b4
Packit 8f70b4
AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
Packit 8f70b4
[
Packit 8f70b4
  AC_CACHE_CHECK([whether isnan(double) can be used with libm],
Packit 8f70b4
    [gl_cv_func_isnand_in_libm],
Packit 8f70b4
    [
Packit 8f70b4
      save_LIBS="$LIBS"
Packit 8f70b4
      LIBS="$LIBS -lm"
Packit 8f70b4
      AC_LINK_IFELSE(
Packit 8f70b4
        [AC_LANG_PROGRAM(
Packit 8f70b4
           [[#include <math.h>
Packit 8f70b4
             #if __GNUC__ >= 4
Packit 8f70b4
             # undef isnand
Packit 8f70b4
             # define isnand(x) __builtin_isnan ((double)(x))
Packit 8f70b4
             #elif defined isnan
Packit 8f70b4
             # undef isnand
Packit 8f70b4
             # define isnand(x) isnan ((double)(x))
Packit 8f70b4
             #endif
Packit 8f70b4
             double x;]],
Packit 8f70b4
           [[return isnand (x);]])],
Packit 8f70b4
        [gl_cv_func_isnand_in_libm=yes],
Packit 8f70b4
        [gl_cv_func_isnand_in_libm=no])
Packit 8f70b4
      LIBS="$save_LIBS"
Packit 8f70b4
    ])
Packit 8f70b4
])
Packit 8f70b4
Packit 8f70b4
AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
Packit 8f70b4
[
Packit 8f70b4
  AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
Packit 8f70b4
    [gl_cv_func_isnand_no_libm],
Packit 8f70b4
    [
Packit 8f70b4
      AC_LINK_IFELSE(
Packit 8f70b4
        [AC_LANG_PROGRAM(
Packit 8f70b4
           [[#include <math.h>
Packit 8f70b4
             #if __GNUC__ >= 4
Packit 8f70b4
             # undef isnand
Packit 8f70b4
             # define isnand(x) __builtin_isnan ((double)(x))
Packit 8f70b4
             #else
Packit 8f70b4
             # undef isnand
Packit 8f70b4
             # define isnand(x) isnan ((double)(x))
Packit 8f70b4
             #endif
Packit 8f70b4
             double x;]],
Packit 8f70b4
           [[return isnand (x);]])],
Packit 8f70b4
        [gl_cv_func_isnand_no_libm=yes],
Packit 8f70b4
        [gl_cv_func_isnand_no_libm=no])
Packit 8f70b4
    ])
Packit 8f70b4
])