# HG changeset patch # User Paul Eggert # Date 1379622099 25200 # Node ID e1987e37f6585392d47f719a65f54621cb0ed92a # Parent fc6f79af802f61d16a1524cef17a706c7a6c81d8 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 --- 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 --- a/m4/extern-inline.m4 +++ b/m4/extern-inline.m4 @@ -19,20 +19,28 @@ '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 @@ # 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