>From 0225ce36c62830488e71bf2786316279f0d46411 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 17 Dec 2016 20:41:36 +0100 Subject: [PATCH 16/20] sinhf: Avoid redefinition error on MSVC. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_SINHF. * m4/sinhf.m4 (gl_FUNC_SINHF): Set REPLACE_SINHF to 1 if the function may be defined as an inline function. * modules/math (Makefile.am): Substitute REPLACE_SINHF. * lib/math.in.h (sinhf): Override if REPLACE_SINHF is 1. --- ChangeLog | 9 +++++++++ lib/math.in.h | 15 ++++++++++++--- m4/math_h.m4 | 1 + m4/sinhf.m4 | 6 +++++- modules/math | 1 + 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index fd9cba0..55393eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2016-12-17 Bruno Haible + sinhf: Avoid redefinition error on MSVC. + * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_SINHF. + * m4/sinhf.m4 (gl_FUNC_SINHF): Set REPLACE_SINHF to 1 if the function + may be defined as an inline function. + * modules/math (Makefile.am): Substitute REPLACE_SINHF. + * lib/math.in.h (sinhf): Override if REPLACE_SINHF is 1. + +2016-12-17 Bruno Haible + sinf: Avoid redefinition error on MSVC. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_SINF. * m4/sinf.m4 (gl_FUNC_SINF): Set REPLACE_SINF to 1 if the function diff --git a/lib/math.in.h b/lib/math.in.h index 34730f7..05aa8ea 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -1930,11 +1930,20 @@ _GL_WARN_ON_USE (sinl, "sinl is unportable - " #if @GNULIB_SINHF@ -# if address@hidden@ -# undef sinhf +# if @REPLACE_SINHF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef sinhf +# define sinhf rpl_sinhf +# endif +_GL_FUNCDECL_RPL (sinhf, float, (float x)); +_GL_CXXALIAS_RPL (sinhf, float, (float x)); +# else +# if address@hidden@ +# undef sinhf _GL_FUNCDECL_SYS (sinhf, float, (float x)); -# endif +# endif _GL_CXXALIAS_SYS (sinhf, float, (float x)); +# endif _GL_CXXALIASWARN (sinhf); #elif defined GNULIB_POSIXCHECK # undef sinhf diff --git a/m4/math_h.m4 b/m4/math_h.m4 index 538a650..eac8692 100644 --- a/m4/math_h.m4 +++ b/m4/math_h.m4 @@ -323,6 +323,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT]) REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC]) REPLACE_SINF=0; AC_SUBST([REPLACE_SINF]) + REPLACE_SINHF=0; AC_SUBST([REPLACE_SINHF]) REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL]) REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) diff --git a/m4/sinhf.m4 b/m4/sinhf.m4 index f20d4f9..e78d5e5 100644 --- a/m4/sinhf.m4 +++ b/m4/sinhf.m4 @@ -1,4 +1,4 @@ -# sinhf.m4 serial 2 +# sinhf.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_SINHF], SINHF_LIBM="$SINH_LIBM" else HAVE_SINHF=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_sinhf, not sinhf. + AC_CHECK_DECLS([sinhf], [REPLACE_SINHF=1], , [[#include ]]) SINHF_LIBM="$SINH_LIBM" fi AC_SUBST([SINHF_LIBM]) diff --git a/modules/math b/modules/math index d4e2486..d674e14 100644 --- a/modules/math +++ b/modules/math @@ -293,6 +293,7 @@ math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $( -e 's|@''REPLACE_SIGNBIT''@|$(REPLACE_SIGNBIT)|g' \ -e 's|@''REPLACE_SIGNBIT_USING_GCC''@|$(REPLACE_SIGNBIT_USING_GCC)|g' \ -e 's|@''REPLACE_SINF''@|$(REPLACE_SINF)|g' \ + -e 's|@''REPLACE_SINHF''@|$(REPLACE_SINHF)|g' \ -e 's|@''REPLACE_SQRTL''@|$(REPLACE_SQRTL)|g' \ -e 's|@''REPLACE_TRUNC''@|$(REPLACE_TRUNC)|g' \ -e 's|@''REPLACE_TRUNCF''@|$(REPLACE_TRUNCF)|g' \ -- 2.6.4