]> Savannah Git Hosting - gnulib.git/commitdiff
expf: Avoid redefinition error on MSVC.
authorBruno Haible <bruno@clisp.org>
Sat, 17 Dec 2016 18:41:12 +0000 (19:41 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 17 Dec 2016 22:09:07 +0000 (23:09 +0100)
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_EXPF.
* m4/expf.m4 (gl_FUNC_EXPF): Set REPLACE_EXPF to 1 if the function
may be defined as an inline function.
* modules/math (Makefile.am): Substitute REPLACE_EXPF.
* lib/math.in.h (expf): Override if REPLACE_EXPF is 1.

ChangeLog
lib/math.in.h
m4/expf.m4
m4/math_h.m4
modules/math

index bca6f7897d489be9a59cd5bfd33e8085181f14e0..cb25d65c24a7ba6dfddaa3dc46f6a72b65f65701 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2016-12-17  Bruno Haible  <bruno@clisp.org>
+
+       expf: Avoid redefinition error on MSVC.
+       * m4/math_h.m4 (gl_MATH_H_DEFAULTS): Define REPLACE_EXPF.
+       * m4/expf.m4 (gl_FUNC_EXPF): Set REPLACE_EXPF to 1 if the function
+       may be defined as an inline function.
+       * modules/math (Makefile.am): Substitute REPLACE_EXPF.
+       * lib/math.in.h (expf): Override if REPLACE_EXPF is 1.
+
 2016-12-17  Bruno Haible  <bruno@clisp.org>
 
        coshf: Avoid redefinition error on MSVC.
index ccaf56cc7aa0d72a1d3a93d290ffe36e1206b28a..cc76a64ef004bd0648ee7dc72c02c3ddbb34194f 100644 (file)
@@ -589,11 +589,20 @@ _GL_WARN_ON_USE (coshf, "coshf is unportable - "
 
 
 #if @GNULIB_EXPF@
-# if !@HAVE_EXPF@
-#  undef expf
+# if @REPLACE_EXPF@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef expf
+#   define expf rpl_expf
+#  endif
+_GL_FUNCDECL_RPL (expf, float, (float x));
+_GL_CXXALIAS_RPL (expf, float, (float x));
+# else
+#  if !@HAVE_EXPF@
+#   undef expf
 _GL_FUNCDECL_SYS (expf, float, (float x));
-# endif
+#  endif
 _GL_CXXALIAS_SYS (expf, float, (float x));
+# endif
 _GL_CXXALIASWARN (expf);
 #elif defined GNULIB_POSIXCHECK
 # undef expf
index b2ff3f6ce8edfb5440bb19d7cc97d4b61390d6c3..83d3de938a8a722eb0995247674ca53ac654e55d 100644 (file)
@@ -1,4 +1,4 @@
-# expf.m4 serial 2
+# expf.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_EXPF],
     EXPF_LIBM="$EXP_LIBM"
   else
     HAVE_EXPF=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_expf, not expf.
+    AC_CHECK_DECLS([expf], [REPLACE_EXPF=1], , [[#include <math.h>]])
     EXPF_LIBM="$EXP_LIBM"
   fi
   AC_SUBST([EXPF_LIBM])
index 69933897ffb5b73d7b10b0cb02b6481d46527710..ac7a72d78d218a93df35b83cc68f1948cacbc3c5 100644 (file)
@@ -267,6 +267,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
   REPLACE_CEILL=0;             AC_SUBST([REPLACE_CEILL])
   REPLACE_COSF=0;              AC_SUBST([REPLACE_COSF])
   REPLACE_COSHF=0;             AC_SUBST([REPLACE_COSHF])
+  REPLACE_EXPF=0;              AC_SUBST([REPLACE_EXPF])
   REPLACE_EXPM1=0;             AC_SUBST([REPLACE_EXPM1])
   REPLACE_EXPM1F=0;            AC_SUBST([REPLACE_EXPM1F])
   REPLACE_EXP2=0;              AC_SUBST([REPLACE_EXP2])
index 0fa946b96bb0f7845480d732ef66d4f2d467effd..497c692d24ebb216c09b19208f51d527e1fd1406 100644 (file)
@@ -236,6 +236,7 @@ math.h: math.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
              -e 's|@''REPLACE_CEILL''@|$(REPLACE_CEILL)|g' \
              -e 's|@''REPLACE_COSF''@|$(REPLACE_COSF)|g' \
              -e 's|@''REPLACE_COSHF''@|$(REPLACE_COSHF)|g' \
+             -e 's|@''REPLACE_EXPF''@|$(REPLACE_EXPF)|g' \
              -e 's|@''REPLACE_EXPM1''@|$(REPLACE_EXPM1)|g' \
              -e 's|@''REPLACE_EXPM1F''@|$(REPLACE_EXPM1F)|g' \
              -e 's|@''REPLACE_EXP2''@|$(REPLACE_EXP2)|g' \