stdopen: Fix compilation error with IRIX cc.
[gnulib.git] / m4 / log10l.m4
blobaf0afafe1a1a959ff976901daed5ad5842a36cf9
1 # log10l.m4 serial 5
2 dnl Copyright (C) 2011-2019 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_FUNC_LOG10L],
9   AC_REQUIRE([gl_MATH_H_DEFAULTS])
10   AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
11   AC_REQUIRE([gl_FUNC_LOG10])
13   dnl Persuade glibc <math.h> to declare log10l().
14   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
16   dnl Test whether log10l() is declared. On AIX 5.1 it is not declared.
17   AC_CHECK_DECL([log10l], , [HAVE_DECL_LOG10L=0], [[#include <math.h>]])
19   dnl Test whether log10l() exists. Assume that log10l(), if it exists, is
20   dnl defined in the same library as log10().
21   save_LIBS="$LIBS"
22   LIBS="$LIBS $LOG10_LIBM"
23   AC_CHECK_FUNCS([log10l])
24   LIBS="$save_LIBS"
25   if test $ac_cv_func_log10l = yes; then
26     LOG10L_LIBM="$LOG10_LIBM"
28     save_LIBS="$LIBS"
29     LIBS="$LIBS $LOG10L_LIBM"
30     gl_FUNC_LOG10L_WORKS
31     LIBS="$save_LIBS"
32     case "$gl_cv_func_log10l_works" in
33       *yes) ;;
34       *) REPLACE_LOG10L=1 ;;
35     esac
36   else
37     HAVE_LOG10L=0
38     dnl If the function is declared but does not appear to exist, it may be
39     dnl defined as an inline function. In order to avoid a conflict, we have
40     dnl to define rpl_log10l, not log10l.
41     AC_CHECK_DECLS([log10l], [REPLACE_LOG10L=1], , [[#include <math.h>]])
42   fi
43   if test $HAVE_LOG10L = 0 || test $REPLACE_LOG10L = 1; then
44     if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
45       LOG10L_LIBM="$LOG10_LIBM"
46     else
47       if test $HAVE_LOG10L = 0; then
48         AC_REQUIRE([gl_FUNC_LOGL])
49         LOG10L_LIBM="$LOGL_LIBM"
50       fi
51     fi
52   fi
53   AC_SUBST([LOG10L_LIBM])
56 dnl Test whether log10l() works.
57 dnl On OSF/1 5.1, log10l(-0.0L) is NaN.
58 dnl On IRIX 6.5, log10l(-0.0L) is an unnormalized negative infinity
59 dnl 0xFFF00000000000007FF0000000000000, should be
60 dnl 0xFFF00000000000000000000000000000.
61 dnl On AIX 5.1, log10l(-0.0L) is finite if it's not the first log10l call
62 dnl in the program.
63 AC_DEFUN([gl_FUNC_LOG10L_WORKS],
65   AC_REQUIRE([AC_PROG_CC])
66   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
67   AC_CACHE_CHECK([whether log10l works], [gl_cv_func_log10l_works],
68     [
69       AC_RUN_IFELSE(
70         [AC_LANG_SOURCE([[
71 #include <math.h>
72 #ifndef log10l /* for AIX */
73 extern
74 #ifdef __cplusplus
75 "C"
76 #endif
77 long double log10l (long double);
78 #endif
79 volatile long double x;
80 long double y;
81 int main ()
83   /* Dummy call, to trigger the AIX 5.1 bug.  */
84   x = 0.6L;
85   y = log10l (x);
86   /* This test fails on AIX 5.1, IRIX 6.5, OSF/1 5.1.  */
87   x = -0.0L;
88   y = log10l (x);
89   if (!(y + y == y))
90     return 1;
91   return 0;
93 ]])],
94         [gl_cv_func_log10l_works=yes],
95         [gl_cv_func_log10l_works=no],
96         [case "$host_os" in
97            aix* | irix* | osf*) gl_cv_func_log10l_works="guessing no" ;;
98                                 # Guess yes on native Windows.
99            mingw*)              gl_cv_func_log10l_works="guessing yes" ;;
100            *)                   gl_cv_func_log10l_works="guessing yes" ;;
101          esac
102         ])
103     ])