expm1l: Don't override undeclared system function on IRIX 6.5.
authorBruno Haible <bruno@clisp.org>
Thu, 8 Mar 2012 03:01:51 +0000 (04:01 +0100)
committerBruno Haible <bruno@clisp.org>
Thu, 8 Mar 2012 03:01:51 +0000 (04:01 +0100)
* lib/math.in.h (expm1l): Test HAVE_DECL_EXPM1L, not HAVE_EXPM1L.
* m4/expm1l.m4 (gl_FUNC_EXPM1L): Don't assume expm1l() is declared when
it exists. Set HAVE_DECL_EXPM1L.
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize HAVE_DECL_EXPM1L, not
HAVE_EXPM1L.
* modules/math (Makefile.am): Substitute HAVE_DECL_EXPM1L, not
HAVE_EXPM1L.
* doc/posix-functions/expm1l.texi: Mention missing declaration problem.

ChangeLog
doc/posix-functions/expm1l.texi
lib/math.in.h
m4/expm1l.m4
m4/math_h.m4
modules/math

index 8480c0c..800cc4e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2012-03-07  Bruno Haible  <bruno@clisp.org>
 
+       expm1l: Don't override undeclared system function on IRIX 6.5.
+       * lib/math.in.h (expm1l): Test HAVE_DECL_EXPM1L, not HAVE_EXPM1L.
+       * m4/expm1l.m4 (gl_FUNC_EXPM1L): Don't assume expm1l() is declared when
+       it exists. Set HAVE_DECL_EXPM1L.
+       * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize HAVE_DECL_EXPM1L, not
+       HAVE_EXPM1L.
+       * modules/math (Makefile.am): Substitute HAVE_DECL_EXPM1L, not
+       HAVE_EXPM1L.
+       * doc/posix-functions/expm1l.texi: Mention missing declaration problem.
+
+2012-03-07  Bruno Haible  <bruno@clisp.org>
+
        remainderl: Don't override undeclared system function on IRIX 6.5.
        * lib/math.in.h (remainderl): Test HAVE_DECL_REMAINDERL, not
        HAVE_REMAINDERL.
index b5a8217..131a7fd 100644 (file)
@@ -10,7 +10,10 @@ Portability problems fixed by Gnulib:
 @itemize
 @item
 This function is missing on some platforms:
-FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
+FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, Solaris 9, Cygwin, mingw, MSVC 9, Interix 3.5, BeOS.
+@item
+This function is not declared on some platforms:
+IRIX 6.5.
 @end itemize
 
 Portability problems not fixed by Gnulib:
index 162f546..3e20788 100644 (file)
@@ -579,7 +579,7 @@ _GL_WARN_ON_USE (expm1, "expm1 is unportable - "
 #endif
 
 #if @GNULIB_EXPM1L@
-# if !@HAVE_EXPM1L@
+# if !@HAVE_DECL_EXPM1L@
 _GL_FUNCDECL_SYS (expm1l, long double, (long double x));
 # endif
 _GL_CXXALIAS_SYS (expm1l, long double, (long double x));
index e5dca74..68b2dd3 100644 (file)
@@ -1,4 +1,4 @@
-# expm1l.m4 serial 1
+# expm1l.m4 serial 2
 dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -22,6 +22,11 @@ AC_DEFUN([gl_FUNC_EXPM1L],
              # define __NO_MATH_INLINES 1 /* for glibc */
              #endif
              #include <math.h>
+             extern
+             #ifdef __cplusplus
+             "C"
+             #endif
+             long double expm1l (long double);
              long double (*funcptr) (long double) = expm1l;
              long double x;]],
            [[return funcptr (x) > 0.5
@@ -41,6 +46,11 @@ AC_DEFUN([gl_FUNC_EXPM1L],
                # define __NO_MATH_INLINES 1 /* for glibc */
                #endif
                #include <math.h>
+               extern
+               #ifdef __cplusplus
+               "C"
+               #endif
+               long double expm1l (long double);
                long double (*funcptr) (long double) = expm1l;
                long double x;]],
              [[return funcptr (x) > 0.5
@@ -53,9 +63,15 @@ AC_DEFUN([gl_FUNC_EXPM1L],
       EXPM1L_LIBM=-lm
     fi
   fi
-  if test $gl_cv_func_expm1l_no_libm = no \
-     && test $gl_cv_func_expm1l_in_libm = no; then
+  if test $gl_cv_func_expm1l_no_libm = yes \
+     || test $gl_cv_func_expm1l_in_libm = yes; then
+    HAVE_EXPM1L=1
+    dnl Also check whether it's declared.
+    dnl IRIX 6.5 has expm1l() in libm but doesn't declare it in <math.h>.
+    AC_CHECK_DECL([expm1l], , [HAVE_DECL_EXPM1L=0], [[#include <math.h>]])
+  else
     HAVE_EXPM1L=0
+    HAVE_DECL_EXPM1L=0
     dnl Find libraries needed to link lib/expm1l.c.
     if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
       AC_REQUIRE([gl_FUNC_EXPM1])
index 6aa6831..c45fc5b 100644 (file)
@@ -1,4 +1,4 @@
-# math_h.m4 serial 87
+# math_h.m4 serial 88
 dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -159,7 +159,6 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
   HAVE_EXPL=1;                 AC_SUBST([HAVE_EXPL])
   HAVE_EXPM1=1;                AC_SUBST([HAVE_EXPM1])
   HAVE_EXPM1F=1;               AC_SUBST([HAVE_EXPM1F])
-  HAVE_EXPM1L=1;               AC_SUBST([HAVE_EXPM1L])
   HAVE_FABSF=1;                AC_SUBST([HAVE_FABSF])
   HAVE_FABSL=1;                AC_SUBST([HAVE_FABSL])
   HAVE_FMA=1;                  AC_SUBST([HAVE_FMA])
@@ -203,6 +202,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
   HAVE_DECL_COPYSIGNF=1;       AC_SUBST([HAVE_DECL_COPYSIGNF])
   HAVE_DECL_COSL=1;            AC_SUBST([HAVE_DECL_COSL])
   HAVE_DECL_EXPL=1;            AC_SUBST([HAVE_DECL_EXPL])
+  HAVE_DECL_EXPM1L=1;          AC_SUBST([HAVE_DECL_EXPM1L])
   HAVE_DECL_FLOORF=1;          AC_SUBST([HAVE_DECL_FLOORF])
   HAVE_DECL_FLOORL=1;          AC_SUBST([HAVE_DECL_FLOORL])
   HAVE_DECL_FREXPL=1;          AC_SUBST([HAVE_DECL_FREXPL])
index d2e7abf..0d84caf 100644 (file)
@@ -127,7 +127,6 @@ math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
              -e 's|@''HAVE_EXPL''@|$(HAVE_EXPL)|g' \
              -e 's|@''HAVE_EXPM1''@|$(HAVE_EXPM1)|g' \
              -e 's|@''HAVE_EXPM1F''@|$(HAVE_EXPM1F)|g' \
-             -e 's|@''HAVE_EXPM1L''@|$(HAVE_EXPM1L)|g' \
              -e 's|@''HAVE_FABSF''@|$(HAVE_FABSF)|g' \
              -e 's|@''HAVE_FABSL''@|$(HAVE_FABSL)|g' \
              -e 's|@''HAVE_FMA''@|$(HAVE_FMA)|g' \
@@ -171,6 +170,7 @@ math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
              -e 's|@''HAVE_DECL_COPYSIGNF''@|$(HAVE_DECL_COPYSIGNF)|g' \
              -e 's|@''HAVE_DECL_COSL''@|$(HAVE_DECL_COSL)|g' \
              -e 's|@''HAVE_DECL_EXPL''@|$(HAVE_DECL_EXPL)|g' \
+             -e 's|@''HAVE_DECL_EXPM1L''@|$(HAVE_DECL_EXPM1L)|g' \
              -e 's|@''HAVE_DECL_FLOORF''@|$(HAVE_DECL_FLOORF)|g' \
              -e 's|@''HAVE_DECL_FLOORL''@|$(HAVE_DECL_FLOORL)|g' \
              -e 's|@''HAVE_DECL_FREXPL''@|$(HAVE_DECL_FREXPL)|g' \