X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fextern-inline.m4;h=600c8d3fa17a8d89a14d583aaec97c929807672f;hb=03ea4328ae1ea7e985f7fd9a42ebf77bc64bd47c;hp=f019ad7873ca872e5a71694f7030401b130889fa;hpb=f97192f62226734f9813010d1068cef4fbe95076;p=gnulib.git diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4 index f019ad787..600c8d3fa 100644 --- a/m4/extern-inline.m4 +++ b/m4/extern-inline.m4 @@ -10,7 +10,7 @@ AC_DEFUN([gl_EXTERN_INLINE], AC_REQUIRE([AC_C_INLINE]) AH_VERBATIM([extern_inline], [/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'. - _GL_EXTERN_INLINE is a portable alternative to 'extern linline'. + _GL_EXTERN_INLINE is a portable alternative to 'extern inline'. _GL_INLINE_HEADER_BEGIN contains useful stuff to put in an include file, before uses of _GL_INLINE. It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic, @@ -18,22 +18,39 @@ AC_DEFUN([gl_EXTERN_INLINE], . _GL_INLINE_HEADER_END contains useful stuff to put in the same include file, after uses of _GL_INLINE. */ -#if __GNUC__ ? __GNUC_STDC_INLINE__ : 199901L <= __STDC_VERSION__ +#if (__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : 199901L <= __STDC_VERSION__) # define _GL_INLINE inline # define _GL_EXTERN_INLINE extern inline -# if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__ -# define _GL_INLINE_HEADER_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") -# define _GL_INLINE_HEADER_END \ - _Pragma ("GCC diagnostic pop") +#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# if __GNUC_GNU_INLINE__ + /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ +# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) +# else +# define _GL_INLINE extern inline # endif +# define _GL_EXTERN_INLINE extern #else # define _GL_INLINE static inline # define _GL_EXTERN_INLINE static inline #endif -#ifndef _GL_INLINE_HEADER_BEGIN +#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) +# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ +# define _GL_INLINE_HEADER_CONST_PRAGMA +# else +# define _GL_INLINE_HEADER_CONST_PRAGMA \ + _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") +# endif +# define _GL_INLINE_HEADER_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ + _GL_INLINE_HEADER_CONST_PRAGMA +# define _GL_INLINE_HEADER_END \ + _Pragma ("GCC diagnostic pop") +#else # define _GL_INLINE_HEADER_BEGIN # define _GL_INLINE_HEADER_END #endif])