From: Paul Eggert Date: Thu, 19 Sep 2013 20:21:39 +0000 (-0700) Subject: extern-inline: do not always suppress extern inline on OS X X-Git-Tag: v0.1~43 X-Git-Url: http://erislabs.net/gitweb/?p=gnulib.git;a=commitdiff_plain;h=ddd30c54b57a59f64a42783b0b206d04e0dfad41 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. --- diff --git a/ChangeLog b/ChangeLog index 4def49a93..d3491e35d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2013-09-19 Paul Eggert + 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 c4c5e7f22..4862d60d8 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., . 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