Merge remote branch 'origin/stable-2.0'
[bpt/guile.git] / m4 / isnand.m4
CommitLineData
49114fd4
LC
1# isnand.m4 serial 8
2dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
2e65b52f
LC
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl Check how to get or define isnand().
8
9AC_DEFUN([gl_FUNC_ISNAND],
10[
11 AC_REQUIRE([gl_MATH_H_DEFAULTS])
12 ISNAND_LIBM=
13 gl_HAVE_ISNAND_NO_LIBM
14 if test $gl_cv_func_isnand_no_libm = no; then
15 gl_HAVE_ISNAND_IN_LIBM
16 if test $gl_cv_func_isnand_in_libm = yes; then
17 ISNAND_LIBM=-lm
18 fi
19 fi
20 dnl The variable gl_func_isnand set here is used by isnan.m4.
21 if test $gl_cv_func_isnand_no_libm = yes \
22 || test $gl_cv_func_isnand_in_libm = yes; then
23 gl_func_isnand=yes
24 else
25 gl_func_isnand=no
26 HAVE_ISNAND=0
27 gl_BUILD_ISNAND
28 fi
29 AC_SUBST([ISNAND_LIBM])
30])
31
32dnl Check how to get or define isnand() without linking with libm.
33
34AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
35[
36 gl_HAVE_ISNAND_NO_LIBM
37 if test $gl_cv_func_isnand_no_libm = yes; then
38 AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
39 [Define if the isnan(double) function is available in libc.])
40 else
41 gl_BUILD_ISNAND
42 fi
43])
44
45dnl Pull in replacement isnand definition. It does not need -lm.
46AC_DEFUN([gl_BUILD_ISNAND],
47[
48 AC_LIBOBJ([isnand])
49 gl_DOUBLE_EXPONENT_LOCATION
50])
51
52dnl Test whether isnand() can be used with libm.
53
54AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
55[
56 AC_CACHE_CHECK([whether isnan(double) can be used with libm],
57 [gl_cv_func_isnand_in_libm],
58 [
59 save_LIBS="$LIBS"
60 LIBS="$LIBS -lm"
61 AC_LINK_IFELSE(
62 [AC_LANG_PROGRAM(
63 [[#include <math.h>
64 #if __GNUC__ >= 4
65 # undef isnand
49114fd4 66 # define isnand(x) __builtin_isnan ((double)(x))
2e65b52f
LC
67 #elif defined isnan
68 # undef isnand
69 # define isnand(x) isnan ((double)(x))
70 #endif
71 double x;]],
72 [[return isnand (x);]])],
73 [gl_cv_func_isnand_in_libm=yes],
74 [gl_cv_func_isnand_in_libm=no])
75 LIBS="$save_LIBS"
76 ])
77])
78
79AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
80[
81 AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
82 [gl_cv_func_isnand_no_libm],
83 [
84 AC_LINK_IFELSE(
85 [AC_LANG_PROGRAM(
86 [[#include <math.h>
87 #if __GNUC__ >= 4
88 # undef isnand
89 # define isnand(x) __builtin_isnan ((double)(x))
90 #else
91 # undef isnand
92 # define isnand(x) isnan ((double)(x))
93 #endif
94 double x;]],
95 [[return isnand (x);]])],
96 [gl_cv_func_isnand_no_libm=yes],
97 [gl_cv_func_isnand_no_libm=no])
98 ])
99])