From 4d3d2763fe89ba36c256f496f0e095c650756705 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 17 Dec 2016 19:21:51 +0100 Subject: [PATCH] atanf: Avoid redefinition error on MSVC. * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_ATANF. * m4/atanf.m4 (gl_FUNC_ATANF): Set REPLACE_ATANF to 1 if the function may be defined as an inline function. * modules/math (Makefile.am): Substitute REPLACE_ATANF. * lib/math.in.h (atanf): Override if REPLACE_ATANF is 1. --- ChangeLog | 9 +++++++++ lib/math.in.h | 15 ++++++++++++--- m4/atanf.m4 | 6 +++++- m4/math_h.m4 | 1 + modules/math | 1 + 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9789472144..b03ae87bb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2016-12-17 Bruno Haible + + atanf: Avoid redefinition error on MSVC. + * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_ATANF. + * m4/atanf.m4 (gl_FUNC_ATANF): Set REPLACE_ATANF to 1 if the function + may be defined as an inline function. + * modules/math (Makefile.am): Substitute REPLACE_ATANF. + * lib/math.in.h (atanf): Override if REPLACE_ATANF is 1. + 2016-12-17 Bruno Haible asinf: Avoid redefinition error on MSVC. diff --git a/lib/math.in.h b/lib/math.in.h index f76f6c6aab..04bbd4ef7e 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -292,11 +292,20 @@ _GL_WARN_ON_USE (asinl, "asinl is unportable - " #if @GNULIB_ATANF@ -# if !@HAVE_ATANF@ -# undef atanf +# if @REPLACE_ATANF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# undef atanf +# define atanf rpl_atanf +# endif +_GL_FUNCDECL_RPL (atanf, float, (float x)); +_GL_CXXALIAS_RPL (atanf, float, (float x)); +# else +# if !@HAVE_ATANF@ +# undef atanf _GL_FUNCDECL_SYS (atanf, float, (float x)); -# endif +# endif _GL_CXXALIAS_SYS (atanf, float, (float x)); +# endif _GL_CXXALIASWARN (atanf); #elif defined GNULIB_POSIXCHECK # undef atanf diff --git a/m4/atanf.m4 b/m4/atanf.m4 index f7e4a07ece..178cefe895 100644 --- a/m4/atanf.m4 +++ b/m4/atanf.m4 @@ -1,4 +1,4 @@ -# atanf.m4 serial 2 +# atanf.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_ATANF], ATANF_LIBM="$ATAN_LIBM" else HAVE_ATANF=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_atanf, not atanf. + AC_CHECK_DECLS([atanf], [REPLACE_ATANF=1], , [[#include ]]) ATANF_LIBM="$ATAN_LIBM" fi AC_SUBST([ATANF_LIBM]) diff --git a/m4/math_h.m4 b/m4/math_h.m4 index 9abf7a9c84..7b2aa5ad35 100644 --- a/m4/math_h.m4 +++ b/m4/math_h.m4 @@ -258,6 +258,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL]) REPLACE_ACOSF=0; AC_SUBST([REPLACE_ACOSF]) REPLACE_ASINF=0; AC_SUBST([REPLACE_ASINF]) + REPLACE_ATANF=0; AC_SUBST([REPLACE_ATANF]) REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF]) REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL]) REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL]) diff --git a/modules/math b/modules/math index 07a9f47dcd..bc8bc7b03f 100644 --- a/modules/math +++ b/modules/math @@ -227,6 +227,7 @@ math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $( | \ sed -e 's|@''REPLACE_ACOSF''@|$(REPLACE_ACOSF)|g' \ -e 's|@''REPLACE_ASINF''@|$(REPLACE_ASINF)|g' \ + -e 's|@''REPLACE_ATANF''@|$(REPLACE_ATANF)|g' \ -e 's|@''REPLACE_CBRTF''@|$(REPLACE_CBRTF)|g' \ -e 's|@''REPLACE_CBRTL''@|$(REPLACE_CBRTL)|g' \ -e 's|@''REPLACE_CEIL''@|$(REPLACE_CEIL)|g' \ -- 2.39.5