Commit | Line | Data |
---|---|---|
88b48903 | 1 | # isnand.m4 serial 11 |
5e8754f9 | 2 | dnl Copyright (C) 2007-2016 Free Software Foundation, Inc. |
88b48903 WN |
3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | |
5 | dnl with or without modifications, as long as this notice is preserved. | |
6 | ||
7 | dnl Check how to get or define isnand(). | |
8 | ||
9 | AC_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 | fi | |
28 | AC_SUBST([ISNAND_LIBM]) | |
29 | ]) | |
30 | ||
31 | dnl Check how to get or define isnand() without linking with libm. | |
32 | ||
33 | AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM], | |
34 | [ | |
35 | gl_HAVE_ISNAND_NO_LIBM | |
36 | gl_func_isnand_no_libm=$gl_cv_func_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 | fi | |
41 | ]) | |
42 | ||
43 | dnl Prerequisites of replacement isnand definition. It does not need -lm. | |
44 | AC_DEFUN([gl_PREREQ_ISNAND], | |
45 | [ | |
46 | AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) | |
47 | ]) | |
48 | ||
49 | dnl Test whether isnand() can be used with libm. | |
50 | ||
51 | AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM], | |
52 | [ | |
53 | AC_CACHE_CHECK([whether isnan(double) can be used with libm], | |
54 | [gl_cv_func_isnand_in_libm], | |
55 | [ | |
56 | save_LIBS="$LIBS" | |
57 | LIBS="$LIBS -lm" | |
58 | AC_LINK_IFELSE( | |
59 | [AC_LANG_PROGRAM( | |
60 | [[#include <math.h> | |
61 | #if __GNUC__ >= 4 | |
62 | # undef isnand | |
63 | # define isnand(x) __builtin_isnan ((double)(x)) | |
64 | #elif defined isnan | |
65 | # undef isnand | |
66 | # define isnand(x) isnan ((double)(x)) | |
67 | #endif | |
68 | double x;]], | |
69 | [[return isnand (x);]])], | |
70 | [gl_cv_func_isnand_in_libm=yes], | |
71 | [gl_cv_func_isnand_in_libm=no]) | |
72 | LIBS="$save_LIBS" | |
73 | ]) | |
74 | ]) | |
75 | ||
76 | AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM], | |
77 | [ | |
78 | AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm], | |
79 | [gl_cv_func_isnand_no_libm], | |
80 | [ | |
81 | AC_LINK_IFELSE( | |
82 | [AC_LANG_PROGRAM( | |
83 | [[#include <math.h> | |
84 | #if __GNUC__ >= 4 | |
85 | # undef isnand | |
86 | # define isnand(x) __builtin_isnan ((double)(x)) | |
87 | #else | |
88 | # undef isnand | |
89 | # define isnand(x) isnan ((double)(x)) | |
90 | #endif | |
91 | double x;]], | |
92 | [[return isnand (x);]])], | |
93 | [gl_cv_func_isnand_no_libm=yes], | |
94 | [gl_cv_func_isnand_no_libm=no]) | |
95 | ]) | |
96 | ]) |