[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/5] extern-inline: do not always suppress extern inline on OS X
From: |
Paul Eggert |
Subject: |
[PATCH 2/5] extern-inline: do not always suppress extern inline on OS X |
Date: |
Thu, 19 Sep 2013 14:27:50 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8 |
* m4/extern-inline.m4 (gl_EXTERN_INLINE): Suppress the use of
extern inline on Apple only if the particular compile-time
configuration is known to have the problem.
(_GL_EXTERN_INLINE_APPLE_BUG): New private macro, to implement this.
(_GL_EXTERN_LNLINE_IN_USE): New macro, intended for use by
other Gnulib modules.
---
ChangeLog | 8 ++++++++
m4/extern-inline.m4 | 17 +++++++++++++----
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1195414..39c2e12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2013-09-19 Paul Eggert <address@hidden>
+ extern-inline: do not always suppress extern inline on OS X
+ * m4/extern-inline.m4 (gl_EXTERN_INLINE): Suppress the use of
+ extern inline on Apple only if the particular compile-time
+ configuration is known to have the problem.
+ (_GL_EXTERN_INLINE_APPLE_BUG): New private macro, to implement this.
+ (_GL_EXTERN_LNLINE_IN_USE): New macro, intended for use by
+ other Gnulib modules.
+
extern-inline: document fixes for ctype and wctype macros
* doc/posix-functions/isalnum.texi, doc/posix-functions/isalpha.texi:
* doc/posix-functions/isascii.texi, doc/posix-functions/isblank.texi:
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
index c4c5e7f..4862d60 100644
--- a/m4/extern-inline.m4
+++ b/m4/extern-inline.m4
@@ -19,20 +19,28 @@ AC_DEFUN([gl_EXTERN_INLINE],
'reference to static identifier "f" in extern inline function'.
This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
- Suppress the use of extern inline on Apple's platforms, as Libc at least
- through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g.,
+ Suppress the use of extern inline on problematic Apple configurations, as
+ Libc at least through Libc-825.26 (2013-04-09) mishandles it; see, e.g.,
<http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
Perhaps Apple will fix this some day. */
+#if (defined __APPLE__ \
+ && ((! defined _DONT_USE_CTYPE_INLINE_ \
+ && (defined __GNUC__ || defined __cplusplus)) \
+ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+ && defined __GNUC__ && ! defined __cplusplus)))
+# define _GL_EXTERN_INLINE_APPLE_BUG
+#endif
#if ((__GNUC__ \
? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
: (199901L <= __STDC_VERSION__ \
&& !defined __HP_cc \
&& !(defined __SUNPRO_C && __STDC__))) \
- && !defined __APPLE__)
+ && !defined _GL_EXTERN_INLINE_APPLE_BUG)
# define _GL_INLINE inline
# define _GL_EXTERN_INLINE extern inline
+# define _GL_EXTERN_INLINE_IN_USE
#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
- && !defined __APPLE__)
+ && !defined _GL_EXTERN_INLINE_APPLE_BUG)
# if __GNUC_GNU_INLINE__
/* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
@@ -40,6 +48,7 @@ AC_DEFUN([gl_EXTERN_INLINE],
# define _GL_INLINE extern inline
# endif
# define _GL_EXTERN_INLINE extern
+# define _GL_EXTERN_INLINE_IN_USE
#else
# define _GL_INLINE static _GL_UNUSED
# define _GL_EXTERN_INLINE static _GL_UNUSED
--
1.8.3.1
- [PATCH 1/5] extern-inline: document fixes for ctype and wctype macros, Paul Eggert, 2013/09/19
- [PATCH 2/5] extern-inline: do not always suppress extern inline on OS X,
Paul Eggert <=
- [PATCH 3/5] signal: OS X port of sigaddset etc. + extern inline, Paul Eggert, 2013/09/19
- [PATCH 4/5] stdio: OS X port of putc_unlocked + extern inline, Paul Eggert, 2013/09/19
- [PATCH 5/5] timespec: new function make_timespec, and new constants, Paul Eggert, 2013/09/19
- Re: [PATCH 1/5] extern-inline: document fixes for ctype and wctype macros, Eric Blake, 2013/09/19