Mercurial > hg > octave-nkf > gnulib-hg
changeset 16602:549120e12a45
roundl: Don't override undeclared system function on IRIX 6.5.
* m4/roundl.m4 (gl_FUNC_ROUNDL): Search for roundl() in the libraries
also when it is not declared. Set HAVE_ROUNDL. For replacement code,
test HAVE_ROUNDL, not HAVE_DECL_ROUNDL.
* modules/roundl (configure.ac): For replacement code, test
HAVE_ROUNDL, not HAVE_DECL_ROUNDL.
(Depends-on): Update conditions.
* doc/posix-functions/roundl.texi: Mention the IRIX problem.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Thu, 08 Mar 2012 02:06:10 +0100 |
parents | 3846767a473f |
children | f57d6aac15ce |
files | ChangeLog doc/posix-functions/roundl.texi m4/roundl.m4 modules/roundl |
diffstat | 4 files changed, 37 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2012-03-07 Bruno Haible <bruno@clisp.org> + + roundl: Don't override undeclared system function on IRIX 6.5. + * m4/roundl.m4 (gl_FUNC_ROUNDL): Search for roundl() in the libraries + also when it is not declared. Set HAVE_ROUNDL. For replacement code, + test HAVE_ROUNDL, not HAVE_DECL_ROUNDL. + * modules/roundl (configure.ac): For replacement code, test + HAVE_ROUNDL, not HAVE_DECL_ROUNDL. + (Depends-on): Update conditions. + * doc/posix-functions/roundl.texi: Mention the IRIX problem. + 2012-03-07 Bruno Haible <bruno@clisp.org> roundf: Don't override undeclared system function on IRIX 6.5.
--- a/doc/posix-functions/roundl.texi +++ b/doc/posix-functions/roundl.texi @@ -10,10 +10,10 @@ @itemize @item This function is missing on some platforms: -FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS. +FreeBSD 5.2.1, NetBSD 5.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, older IRIX 6.5, OSF/1 4.0, Solaris 9, Cygwin, MSVC 9, Interix 3.5, BeOS. @item This function is not declared on some platforms: -glibc 2.8, OSF/1 5.1. +glibc 2.8, IRIX 6.5, OSF/1 5.1. @end itemize Portability problems fixed by Gnulib module @code{roundl-ieee}:
--- a/m4/roundl.m4 +++ b/m4/roundl.m4 @@ -1,4 +1,4 @@ -# roundl.m4 serial 13 +# roundl.m4 serial 14 dnl Copyright (C) 2007, 2009-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, @@ -13,12 +13,19 @@ dnl Persuade glibc <math.h> to declare roundl(). AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_CHECK_DECLS([roundl], , , [[#include <math.h>]]) - if test "$ac_cv_have_decl_roundl" = yes; then - gl_CHECK_MATH_LIB([ROUNDL_LIBM], [x = roundl (x);]) - if test "$ROUNDL_LIBM" = missing; then - REPLACE_ROUNDL=1 - fi + gl_CHECK_MATH_LIB([ROUNDL_LIBM], [x = roundl (x);], + [extern + #ifdef __cplusplus + "C" + #endif + long double roundl (long double); + ]) + if test "$ROUNDL_LIBM" != missing; then + HAVE_ROUNDL=1 + dnl Also check whether it's declared. + dnl IRIX 6.5 has roundl() in libm but doesn't declare it in <math.h>. + AC_CHECK_DECLS([roundl], , [HAVE_DECL_ROUNDL=0], [[#include <math.h>]]) + m4_ifdef([gl_FUNC_ROUNDL_IEEE], [ if test $gl_roundl_required = ieee && test $REPLACE_ROUNDL = 0; then AC_CACHE_CHECK([whether roundl works according to ISO C 99 with IEC 60559], @@ -32,6 +39,11 @@ # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> +extern +#ifdef __cplusplus +"C" +#endif +long double roundl (long double); ]gl_LONG_DOUBLE_MINUS_ZERO_CODE[ ]gl_LONG_DOUBLE_SIGNBIT_CODE[ static long double dummy (long double f) { return 0; } @@ -60,9 +72,10 @@ fi ]) else + HAVE_ROUNDL=0 HAVE_DECL_ROUNDL=0 fi - if test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; then + if test $HAVE_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; then dnl Find libraries needed to link lib/roundl.c. if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then AC_REQUIRE([gl_FUNC_ROUND])
--- a/modules/roundl +++ b/modules/roundl @@ -12,12 +12,12 @@ Depends-on: math extensions -round [{ test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1] -float [{ test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0] +round [{ test $HAVE_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1] +float [{ test $HAVE_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; } && test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 0] configure.ac: gl_FUNC_ROUNDL -if test $HAVE_DECL_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; then +if test $HAVE_ROUNDL = 0 || test $REPLACE_ROUNDL = 1; then AC_LIBOBJ([roundl]) fi gl_MATH_MODULE_INDICATOR([roundl])