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 expl fabsf floorf floorl fmodf
44 ldexpf ldexpl logb logl modff round roundf roundl sinl sqrtl
45 tanl trunc truncf truncl])
48 AC_DEFUN([gl_MATH_MODULE_INDICATOR],
50 dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
51 AC_REQUIRE([gl_MATH_H_DEFAULTS])
52 gl_MODULE_INDICATOR_SET_VARIABLE([$1])
53 dnl Define it also as a C macro, for the benefit of the unit tests.
54 gl_MODULE_INDICATOR_FOR_TESTS([$1])
57 AC_DEFUN([gl_MATH_H_DEFAULTS],
59 GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
60 GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
61 GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
62 GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
63 GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
64 GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
65 GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
66 GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
67 GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF])
68 GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
69 GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
70 GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
71 GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF])
72 GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF])
73 GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
74 GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
75 GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
76 GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
77 GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
78 GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
79 GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
80 GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
81 GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF])
82 GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
83 GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
84 GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
85 GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF])
86 GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
87 GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
88 GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
89 GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
90 GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
91 GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
92 GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
93 GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
94 GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
95 GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
96 dnl Assume proper GNU behavior unless another module says otherwise.
97 HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
98 HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
99 HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
100 HAVE_COSL=1; AC_SUBST([HAVE_COSL])
101 HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
102 HAVE_FABSF=1; AC_SUBST([HAVE_FABSF])
103 HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
104 HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
105 HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
106 HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
107 HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
108 HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF])
109 HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
110 HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
111 HAVE_SINL=1; AC_SUBST([HAVE_SINL])
112 HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
113 HAVE_TANL=1; AC_SUBST([HAVE_TANL])
114 HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
115 HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
116 HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
117 HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF])
118 HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL])
119 HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
120 HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
121 HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF])
122 HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL])
123 HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
124 HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
125 HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB])
126 HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
127 HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND])
128 HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF])
129 HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL])
130 HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
131 HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
132 HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
133 HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
134 HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
135 HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL])
136 REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL])
137 REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
138 REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
139 REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR])
140 REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
141 REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
142 REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
143 REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
144 REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
145 REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
146 REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
147 REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
148 REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
149 REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
150 REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
151 REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
152 REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
153 REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
154 REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
155 REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
156 REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC])
157 REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
158 REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])