summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2016-12-17 19:21:51 +0100
committerBruno Haible <bruno@clisp.org>2016-12-17 23:09:02 +0100
commit4d3d2763fe89ba36c256f496f0e095c650756705 (patch)
treed60089c9fc63acee2938864500b6e69590ca6dd4
parent6cd601d2b97592e7bd603bd8e0ec8aec7034faec (diff)
downloadgnulib-4d3d2763fe89ba36c256f496f0e095c650756705.tar.gz
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.
-rw-r--r--ChangeLog9
-rw-r--r--lib/math.in.h15
-rw-r--r--m4/atanf.m46
-rw-r--r--m4/math_h.m41
-rw-r--r--modules/math1
5 files changed, 28 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 9789472144..b03ae87bb1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2016-12-17 Bruno Haible <bruno@clisp.org>
+ 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 <bruno@clisp.org>
+
asinf: Avoid redefinition error on MSVC.
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_ASINF.
* m4/asinf.m4 (gl_FUNC_ASINF): Set REPLACE_ASINF to 1 if the function
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 <math.h>]])
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' \