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 [acosl asinl atanl ceilf ceill cosl expf expl fabsf floorf floorl fmodf
44 ldexpf ldexpl logb logf logl log10f modff powf
45 round roundf roundl sinf sinl sqrtf sqrtl
46 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_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
61 GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
62 GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
63 GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
64 GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
65 GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
66 GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
67 GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF])
68 GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
69 GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF])
70 GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
71 GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
72 GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
73 GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF])
74 GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF])
75 GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
76 GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
77 GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
78 GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
79 GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
80 GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
81 GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
82 GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
83 GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF])
84 GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
85 GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
86 GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF])
87 GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
88 GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F])
89 GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF])
90 GNULIB_POWF=0; AC_SUBST([GNULIB_POWF])
91 GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
92 GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
93 GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
94 GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
95 GNULIB_SINF=0; AC_SUBST([GNULIB_SINF])
96 GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
97 GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF])
98 GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
99 GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
100 GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
101 GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
102 GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
103 dnl Assume proper GNU behavior unless another module says otherwise.
104 HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
105 HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
106 HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
107 HAVE_COSL=1; AC_SUBST([HAVE_COSL])
108 HAVE_EXPF=1; AC_SUBST([HAVE_EXPF])
109 HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
110 HAVE_FABSF=1; AC_SUBST([HAVE_FABSF])
111 HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
112 HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
113 HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
114 HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
115 HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
116 HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF])
117 HAVE_LOGF=1; AC_SUBST([HAVE_LOGF])
118 HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
119 HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F])
120 HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
121 HAVE_POWF=1; AC_SUBST([HAVE_POWF])
122 HAVE_SINF=1; AC_SUBST([HAVE_SINF])
123 HAVE_SINL=1; AC_SUBST([HAVE_SINL])
124 HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF])
125 HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
126 HAVE_TANL=1; AC_SUBST([HAVE_TANL])
127 HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
128 HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
129 HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
130 HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF])
131 HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL])
132 HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
133 HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
134 HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF])
135 HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL])
136 HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
137 HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
138 HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB])
139 HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
140 HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND])
141 HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF])
142 HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL])
143 HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
144 HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
145 HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
146 HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
147 HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
148 HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL])
149 REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL])
150 REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
151 REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
152 REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR])
153 REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
154 REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
155 REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
156 REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
157 REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
158 REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
159 REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
160 REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
161 REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
162 REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
163 REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
164 REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
165 REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
166 REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
167 REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
168 REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
169 REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC])
170 REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
171 REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])