2 dnl Copyright (C) 2007-2011 Free Software Foundation, Inc.
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.
9 AC_REQUIRE([gl_MATH_H_DEFAULTS])
10 gl_CHECK_NEXT_HEADERS([math.h])
11 AC_REQUIRE([AC_C_INLINE])
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. */
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
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. */
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
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 [acosf acosl asinf asinl atanf atanl ceilf ceill cosf cosl
43 expf expl fabsf floorf floorl fmodf frexpf frexpl
44 ldexpf ldexpl logb logf logl log10f modff powf
45 round roundf roundl sinf sinl sqrtf sqrtl
46 tanf tanl trunc truncf truncl])
49 AC_DEFUN([gl_MATH_MODULE_INDICATOR],
51 dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
52 AC_REQUIRE([gl_MATH_H_DEFAULTS])
53 gl_MODULE_INDICATOR_SET_VARIABLE([$1])
54 dnl Define it also as a C macro, for the benefit of the unit tests.
55 gl_MODULE_INDICATOR_FOR_TESTS([$1])
58 AC_DEFUN([gl_MATH_H_DEFAULTS],
60 GNULIB_ACOSF=0; AC_SUBST([GNULIB_ACOSF])
61 GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
62 GNULIB_ASINF=0; AC_SUBST([GNULIB_ASINF])
63 GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
64 GNULIB_ATANF=0; AC_SUBST([GNULIB_ATANF])
65 GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
66 GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
67 GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
68 GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
69 GNULIB_COSF=0; AC_SUBST([GNULIB_COSF])
70 GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
71 GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF])
72 GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
73 GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF])
74 GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
75 GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
76 GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
77 GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF])
78 GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF])
79 GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
80 GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
81 GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
82 GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
83 GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
84 GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
85 GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
86 GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
87 GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF])
88 GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
89 GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
90 GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF])
91 GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
92 GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F])
93 GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF])
94 GNULIB_POWF=0; AC_SUBST([GNULIB_POWF])
95 GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
96 GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
97 GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
98 GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
99 GNULIB_SINF=0; AC_SUBST([GNULIB_SINF])
100 GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
101 GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF])
102 GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
103 GNULIB_TANF=0; AC_SUBST([GNULIB_TANF])
104 GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
105 GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
106 GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
107 GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
108 dnl Assume proper GNU behavior unless another module says otherwise.
109 HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF])
110 HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
111 HAVE_ASINF=1; AC_SUBST([HAVE_ASINF])
112 HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
113 HAVE_ATANF=1; AC_SUBST([HAVE_ATANF])
114 HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
115 HAVE_COSF=1; AC_SUBST([HAVE_COSF])
116 HAVE_COSL=1; AC_SUBST([HAVE_COSL])
117 HAVE_EXPF=1; AC_SUBST([HAVE_EXPF])
118 HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
119 HAVE_FABSF=1; AC_SUBST([HAVE_FABSF])
120 HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
121 HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
122 HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
123 HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
124 HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
125 HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF])
126 HAVE_LOGF=1; AC_SUBST([HAVE_LOGF])
127 HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
128 HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F])
129 HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
130 HAVE_POWF=1; AC_SUBST([HAVE_POWF])
131 HAVE_SINF=1; AC_SUBST([HAVE_SINF])
132 HAVE_SINL=1; AC_SUBST([HAVE_SINL])
133 HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF])
134 HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
135 HAVE_TANF=1; AC_SUBST([HAVE_TANF])
136 HAVE_TANL=1; AC_SUBST([HAVE_TANL])
137 HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
138 HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
139 HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
140 HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF])
141 HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL])
142 HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
143 HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
144 HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF])
145 HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL])
146 HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
147 HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
148 HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB])
149 HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
150 HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND])
151 HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF])
152 HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL])
153 HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
154 HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
155 HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
156 HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
157 HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
158 HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL])
159 REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL])
160 REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
161 REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
162 REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR])
163 REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
164 REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
165 REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
166 REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
167 REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
168 REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
169 REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
170 REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
171 REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
172 REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
173 REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
174 REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
175 REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
176 REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
177 REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
178 REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
179 REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC])
180 REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
181 REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])