Commit | Line | Data |
---|---|---|
49114fd4 LC |
1 | # math_h.m4 serial 25 |
2 | dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. | |
2e65b52f LC |
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 | AC_DEFUN([gl_MATH_H], | |
8 | [ | |
9 | AC_REQUIRE([gl_MATH_H_DEFAULTS]) | |
10 | gl_CHECK_NEXT_HEADERS([math.h]) | |
11 | AC_REQUIRE([AC_C_INLINE]) | |
12 | ||
13 | AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works], | |
14 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]], | |
15 | [[/* Solaris 10 has a broken definition of NAN. Other platforms | |
16 | fail to provide NAN, or provide it only in C99 mode; this | |
17 | test only needs to fail when NAN is provided but wrong. */ | |
18 | float f = 1.0f; | |
19 | #ifdef NAN | |
20 | f = NAN; | |
21 | #endif | |
22 | return f == 0;]])], | |
23 | [gl_cv_header_math_nan_works=yes], | |
24 | [gl_cv_header_math_nan_works=no])]) | |
25 | if test $gl_cv_header_math_nan_works = no; then | |
26 | REPLACE_NAN=1 | |
27 | fi | |
28 | AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works], | |
29 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]], | |
30 | [[/* Solaris 10 has a broken definition of HUGE_VAL. */ | |
31 | double d = HUGE_VAL; | |
32 | return d == 0;]])], | |
33 | [gl_cv_header_math_huge_val_works=yes], | |
34 | [gl_cv_header_math_huge_val_works=no])]) | |
35 | if test $gl_cv_header_math_huge_val_works = no; then | |
36 | REPLACE_HUGE_VAL=1 | |
37 | fi | |
38 | ||
39 | dnl Check for declarations of anything we want to poison if the | |
40 | dnl corresponding gnulib module is not in use. | |
41 | gl_WARN_ON_USE_PREPARE([[#include <math.h> | |
42 | ]], [acosl asinl atanl ceilf ceill cosl expl floorf floorl frexpl | |
43 | ldexpl logb logl round roundf roundl sinl sqrtl tanl trunc truncf truncl]) | |
44 | ]) | |
45 | ||
46 | AC_DEFUN([gl_MATH_MODULE_INDICATOR], | |
47 | [ | |
48 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | |
49 | AC_REQUIRE([gl_MATH_H_DEFAULTS]) | |
50 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | |
51 | dnl Define it also as a C macro, for the benefit of the unit tests. | |
52 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | |
53 | ]) | |
54 | ||
55 | AC_DEFUN([gl_MATH_H_DEFAULTS], | |
56 | [ | |
57 | GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL]) | |
58 | GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL]) | |
59 | GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL]) | |
49114fd4 | 60 | GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL]) |
2e65b52f LC |
61 | GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF]) |
62 | GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL]) | |
63 | GNULIB_COSL=0; AC_SUBST([GNULIB_COSL]) | |
64 | GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL]) | |
49114fd4 | 65 | GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR]) |
2e65b52f LC |
66 | GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF]) |
67 | GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL]) | |
68 | GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP]) | |
69 | GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL]) | |
70 | GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE]) | |
71 | GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF]) | |
72 | GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN]) | |
73 | GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF]) | |
74 | GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND]) | |
75 | GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL]) | |
76 | GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL]) | |
77 | GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB]) | |
78 | GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL]) | |
79 | GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND]) | |
80 | GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF]) | |
81 | GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL]) | |
82 | GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT]) | |
83 | GNULIB_SINL=0; AC_SUBST([GNULIB_SINL]) | |
84 | GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL]) | |
85 | GNULIB_TANL=0; AC_SUBST([GNULIB_TANL]) | |
86 | GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC]) | |
87 | GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF]) | |
88 | GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL]) | |
89 | dnl Assume proper GNU behavior unless another module says otherwise. | |
90 | HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL]) | |
91 | HAVE_ASINL=1; AC_SUBST([HAVE_ASINL]) | |
92 | HAVE_ATANL=1; AC_SUBST([HAVE_ATANL]) | |
93 | HAVE_COSL=1; AC_SUBST([HAVE_COSL]) | |
94 | HAVE_EXPL=1; AC_SUBST([HAVE_EXPL]) | |
95 | HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF]) | |
96 | HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND]) | |
97 | HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL]) | |
98 | HAVE_LOGL=1; AC_SUBST([HAVE_LOGL]) | |
99 | HAVE_SINL=1; AC_SUBST([HAVE_SINL]) | |
100 | HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL]) | |
101 | HAVE_TANL=1; AC_SUBST([HAVE_TANL]) | |
102 | HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL]) | |
103 | HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL]) | |
104 | HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL]) | |
105 | HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF]) | |
106 | HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL]) | |
107 | HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL]) | |
108 | HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL]) | |
109 | HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF]) | |
110 | HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL]) | |
111 | HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL]) | |
112 | HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL]) | |
113 | HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB]) | |
114 | HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL]) | |
115 | HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND]) | |
116 | HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF]) | |
117 | HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL]) | |
118 | HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL]) | |
119 | HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL]) | |
120 | HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL]) | |
121 | HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC]) | |
122 | HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF]) | |
123 | HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL]) | |
49114fd4 | 124 | REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL]) |
2e65b52f LC |
125 | REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF]) |
126 | REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL]) | |
49114fd4 | 127 | REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR]) |
2e65b52f LC |
128 | REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF]) |
129 | REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL]) | |
130 | REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP]) | |
131 | REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL]) | |
132 | REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL]) | |
133 | REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) | |
134 | REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF]) | |
135 | REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN]) | |
136 | REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) | |
137 | REPLACE_NAN=0; AC_SUBST([REPLACE_NAN]) | |
138 | REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND]) | |
139 | REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF]) | |
140 | REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL]) | |
141 | REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT]) | |
142 | REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC]) | |
49114fd4 LC |
143 | REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) |
144 | REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) | |
2e65b52f LC |
145 | REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL]) |
146 | ]) |