changeset 8357:e6c6a9a180a5

Provide missing frexpl(), ldexpl() declarations.
author Bruno Haible <bruno@clisp.org>
date Tue, 06 Mar 2007 03:38:53 +0000
parents 72f47158c694
children 02600ffa7298
files ChangeLog lib/printf-frexp.c m4/printf-frexpl.m4
diffstat 3 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-03-05  Bruno Haible  <bruno@clisp.org>
+
+	* m4/printf-frexpl.m4 (gl_FUNC_PRINTF_FREXPL): Also test whether
+	frexpl and ldexpl are declared.
+	* lib/printf-frexp.c (frexpl, ldexpl): Provide fallback declarations.
+
 2007-03-05  Bruno Haible  <bruno@clisp.org>
 
 	* gnulib-tool (func_get_automake_snippet): Don't synthesize an
--- a/lib/printf-frexp.c
+++ b/lib/printf-frexp.c
@@ -41,6 +41,14 @@
 #   define USE_FREXP_LDEXP
 #   define FREXP frexpl
 #   define LDEXP ldexpl
+    /* glibc (2.3..2.5 at least) and MacOS X 10.3 have frexpl and ldexpl in
+       libc, but don't declare them.  */
+#   if !HAVE_DECL_FREXPL
+extern long double frexpl (long double, int *);
+#   endif
+#   if !HAVE_DECL_LDEXPL
+extern long double ldexpl (long double, int);
+#   endif
 #  endif
 #  define L_(literal) literal##L
 # else
--- a/m4/printf-frexpl.m4
+++ b/m4/printf-frexpl.m4
@@ -1,4 +1,4 @@
-# printf-frexpl.m4 serial 1
+# printf-frexpl.m4 serial 2
 dnl Copyright (C) 2007 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -23,6 +23,9 @@
     if test $gl_cv_func_frexpl_no_libm = yes; then
       AC_DEFINE([HAVE_FREXPL_IN_LIBC], 1,
         [Define if the frexpl function is available in libc.])
+      dnl Also check whether it's declared. glibc (2.3..2.5 at least) and
+      dnl MacOS X 10.3 have frexpl() in libc but don't declare it in <math.h>.
+      AC_CHECK_DECLS([frexpl])
     fi
 
     AC_CACHE_CHECK([whether ldexpl can be used without linking with libm],
@@ -38,6 +41,9 @@
     if test $gl_cv_func_ldexpl_no_libm = yes; then
       AC_DEFINE([HAVE_LDEXPL_IN_LIBC], 1,
         [Define if the ldexpl function is available in libc.])
+      dnl Also check whether it's declared. glibc (2.3..2.5 at least) and
+      dnl MacOS X 10.3 have ldexpl() in libc but don't declare it in <math.h>.
+      AC_CHECK_DECLS([ldexpl])
     fi
   fi
 ])