>From c3c53687f7772af44c67899be922b385a68533b0 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 17 Dec 2016 19:36:54 +0100 Subject: [PATCH 06/20] coshf: Avoid redefinition error on MSVC. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_COSHF. * m4/coshf.m4 (gl_FUNC_COSHF): Set REPLACE_COSHF to 1 if the function may be defined as an inline function. * modules/math (Makefile.am): Substitute REPLACE_COSHF. * lib/math.in.h (coshf): Override if REPLACE_COSHF is 1. --- ChangeLog | 9 +++++++++ lib/math.in.h | 15 ++++++++++++--- m4/coshf.m4 | 6 +++++- m4/math_h.m4 | 1 + modules/math | 1 + 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index b802d75..bca6f78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2016-12-17 Bruno Haible + coshf: Avoid redefinition error on MSVC. + * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_COSHF. + * m4/coshf.m4 (gl_FUNC_COSHF): Set REPLACE_COSHF to 1 if the function + may be defined as an inline function. + * modules/math (Makefile.am): Substitute REPLACE_COSHF. + * lib/math.in.h (coshf): Override if REPLACE_COSHF is 1. + +2016-12-17 Bruno Haible + cosf: Avoid redefinition error on MSVC. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_COSF. * m4/cosf.m4 (gl_FUNC_COSF): Set REPLACE_COSF to 1 if the function diff --git a/lib/math.in.h b/lib/math.in.h index 6065cfa..ccaf56c 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -564,11 +564,20 @@ _GL_WARN_ON_USE (cosl, "cosl is unportable - " #if @GNULIB_COSHF@ -# if address@hidden@ -# undef coshf +# if @REPLACE_COSHF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef coshf +# define coshf rpl_coshf +# endif +_GL_FUNCDECL_RPL (coshf, float, (float x)); +_GL_CXXALIAS_RPL (coshf, float, (float x)); +# else +# if address@hidden@ +# undef coshf _GL_FUNCDECL_SYS (coshf, float, (float x)); -# endif +# endif _GL_CXXALIAS_SYS (coshf, float, (float x)); +# endif _GL_CXXALIASWARN (coshf); #elif defined GNULIB_POSIXCHECK # undef coshf diff --git a/m4/coshf.m4 b/m4/coshf.m4 index 2cc0264..35977e2 100644 --- a/m4/coshf.m4 +++ b/m4/coshf.m4 @@ -1,4 +1,4 @@ -# coshf.m4 serial 2 +# coshf.m4 serial 3 dnl Copyright (C) 2011-2016 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,10 @@ AC_DEFUN([gl_FUNC_COSHF], COSHF_LIBM="$COSH_LIBM" else HAVE_COSHF=0 + dnl If the function is declared but does not appear to exist, it may be + dnl defined as an inline function. In order to avoid a conflict, we have + dnl to define rpl_coshf, not coshf. + AC_CHECK_DECLS([coshf], [REPLACE_COSHF=1], , [[#include ]]) COSHF_LIBM="$COSH_LIBM" fi AC_SUBST([COSHF_LIBM]) diff --git a/m4/math_h.m4 b/m4/math_h.m4 index 89d3ab2..6993389 100644 --- a/m4/math_h.m4 +++ b/m4/math_h.m4 @@ -266,6 +266,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF]) REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL]) REPLACE_COSF=0; AC_SUBST([REPLACE_COSF]) + REPLACE_COSHF=0; AC_SUBST([REPLACE_COSHF]) REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1]) REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F]) REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2]) diff --git a/modules/math b/modules/math index abe1db4..0fa946b 100644 --- a/modules/math +++ b/modules/math @@ -235,6 +235,7 @@ math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $( -e 's|@''REPLACE_CEILF''@|$(REPLACE_CEILF)|g' \ -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \ -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \ + -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \ -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \ -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \ -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \ -- 2.6.4