Code

d941bc334758dd6985f886f4f0dfb629566a6384
[nagiosplug.git] / gl / m4 / math_h.m4
1 # math_h.m4 serial 14
2 dnl Copyright (C) 2007-2008 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.
7 AC_DEFUN([gl_MATH_H],
8 [
9   AC_REQUIRE([gl_MATH_H_DEFAULTS])
10   gl_CHECK_NEXT_HEADERS([math.h])
11   AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
12     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
13       [[/* Solaris 10 has a broken definition of NAN.  Other platforms
14         fail to provide NAN, or provide it only in C99 mode; this
15         test only needs to fail when NAN is provided but wrong.  */
16          float f = 1.0f;
17 #ifdef NAN
18          f = NAN;
19 #endif
20          return f == 0;]])],
21       [gl_cv_header_math_nan_works=yes],
22       [gl_cv_header_math_nan_works=no])])
23   if test $gl_cv_header_math_nan_works = no; then
24     REPLACE_NAN=1
25   fi
26   AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
27     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
28       [[/* Solaris 10 has a broken definition of HUGE_VAL.  */
29          double d = HUGE_VAL;
30          return d == 0;]])],
31       [gl_cv_header_math_huge_val_works=yes],
32       [gl_cv_header_math_huge_val_works=no])])
33   if test $gl_cv_header_math_huge_val_works = no; then
34     REPLACE_HUGE_VAL=1
35   fi
36 ])
38 AC_DEFUN([gl_MATH_MODULE_INDICATOR],
39 [
40   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
41   AC_REQUIRE([gl_MATH_H_DEFAULTS])
42   GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
43 ])
45 AC_DEFUN([gl_MATH_H_DEFAULTS],
46 [
47   GNULIB_CEILF=0;    AC_SUBST([GNULIB_CEILF])
48   GNULIB_CEILL=0;    AC_SUBST([GNULIB_CEILL])
49   GNULIB_FLOORF=0;   AC_SUBST([GNULIB_FLOORF])
50   GNULIB_FLOORL=0;   AC_SUBST([GNULIB_FLOORL])
51   GNULIB_FREXP=0;    AC_SUBST([GNULIB_FREXP])
52   GNULIB_FREXPL=0;   AC_SUBST([GNULIB_FREXPL])
53   GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
54   GNULIB_ISINF=0;    AC_SUBST([GNULIB_ISINF])
55   GNULIB_ISNAN=0;    AC_SUBST([GNULIB_ISNAN])
56   GNULIB_ISNANF=0;   AC_SUBST([GNULIB_ISNANF])
57   GNULIB_ISNAND=0;   AC_SUBST([GNULIB_ISNAND])
58   GNULIB_ISNANL=0;   AC_SUBST([GNULIB_ISNANL])
59   GNULIB_LDEXPL=0;   AC_SUBST([GNULIB_LDEXPL])
60   GNULIB_MATHL=0;    AC_SUBST([GNULIB_MATHL])
61   GNULIB_ROUND=0;    AC_SUBST([GNULIB_ROUND])
62   GNULIB_ROUNDF=0;   AC_SUBST([GNULIB_ROUNDF])
63   GNULIB_ROUNDL=0;   AC_SUBST([GNULIB_ROUNDL])
64   GNULIB_SIGNBIT=0;  AC_SUBST([GNULIB_SIGNBIT])
65   GNULIB_TRUNC=0;    AC_SUBST([GNULIB_TRUNC])
66   GNULIB_TRUNCF=0;   AC_SUBST([GNULIB_TRUNCF])
67   GNULIB_TRUNCL=0;   AC_SUBST([GNULIB_TRUNCL])
68   dnl Assume proper GNU behavior unless another module says otherwise.
69   HAVE_ISNANF=1;               AC_SUBST([HAVE_ISNANF])
70   HAVE_ISNAND=1;               AC_SUBST([HAVE_ISNAND])
71   HAVE_ISNANL=1;               AC_SUBST([HAVE_ISNANL])
72   HAVE_DECL_ACOSL=1;           AC_SUBST([HAVE_DECL_ACOSL])
73   HAVE_DECL_ASINL=1;           AC_SUBST([HAVE_DECL_ASINL])
74   HAVE_DECL_ATANL=1;           AC_SUBST([HAVE_DECL_ATANL])
75   HAVE_DECL_COSL=1;            AC_SUBST([HAVE_DECL_COSL])
76   HAVE_DECL_EXPL=1;            AC_SUBST([HAVE_DECL_EXPL])
77   HAVE_DECL_FREXPL=1;          AC_SUBST([HAVE_DECL_FREXPL])
78   HAVE_DECL_LDEXPL=1;          AC_SUBST([HAVE_DECL_LDEXPL])
79   HAVE_DECL_LOGL=1;            AC_SUBST([HAVE_DECL_LOGL])
80   HAVE_DECL_SINL=1;            AC_SUBST([HAVE_DECL_SINL])
81   HAVE_DECL_SQRTL=1;           AC_SUBST([HAVE_DECL_SQRTL])
82   HAVE_DECL_TANL=1;            AC_SUBST([HAVE_DECL_TANL])
83   HAVE_DECL_TRUNC=1;           AC_SUBST([HAVE_DECL_TRUNC])
84   HAVE_DECL_TRUNCF=1;          AC_SUBST([HAVE_DECL_TRUNCF])
85   REPLACE_CEILF=0;             AC_SUBST([REPLACE_CEILF])
86   REPLACE_CEILL=0;             AC_SUBST([REPLACE_CEILL])
87   REPLACE_FLOORF=0;            AC_SUBST([REPLACE_FLOORF])
88   REPLACE_FLOORL=0;            AC_SUBST([REPLACE_FLOORL])
89   REPLACE_FREXP=0;             AC_SUBST([REPLACE_FREXP])
90   REPLACE_FREXPL=0;            AC_SUBST([REPLACE_FREXPL])
91   REPLACE_HUGE_VAL=0;          AC_SUBST([REPLACE_HUGE_VAL])
92   REPLACE_ISFINITE=0;          AC_SUBST([REPLACE_ISFINITE])
93   REPLACE_ISINF=0;             AC_SUBST([REPLACE_ISINF])
94   REPLACE_ISNAN=0;             AC_SUBST([REPLACE_ISNAN])
95   REPLACE_LDEXPL=0;            AC_SUBST([REPLACE_LDEXPL])
96   REPLACE_NAN=0;               AC_SUBST([REPLACE_NAN])
97   REPLACE_ROUND=0;             AC_SUBST([REPLACE_ROUND])
98   REPLACE_ROUNDF=0;            AC_SUBST([REPLACE_ROUNDF])
99   REPLACE_ROUNDL=0;            AC_SUBST([REPLACE_ROUNDL])
100   REPLACE_SIGNBIT=0;           AC_SUBST([REPLACE_SIGNBIT])
101   REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
102   REPLACE_TRUNCL=0;            AC_SUBST([REPLACE_TRUNCL])
103 ])