We don't want to maintain more macros than necessary and in the end the equivalent G_GNUC_XXX macros should be preferred. Should any project actually depend on these macros they can keep using them by defining the usual SPICE_DEPRECATED macro until they migrate away from them or the macros are reinstated. Signed-off-by: Francois Gouget <fgouget@xxxxxxxxxxxxxxx> --- Is this what you had in mind? spice/macros.h | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/spice/macros.h b/spice/macros.h index 1f8a5c8..29eaf10 100644 --- a/spice/macros.h +++ b/spice/macros.h @@ -34,17 +34,25 @@ #include <spice/types.h> #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) -#define SPICE_GNUC_PURE __attribute__((__pure__)) #define SPICE_GNUC_MALLOC __attribute__((__malloc__)) #else -#define SPICE_GNUC_PURE #define SPICE_GNUC_MALLOC #endif -#if __GNUC__ >= 4 -#define SPICE_GNUC_NULL_TERMINATED __attribute__((__sentinel__)) +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) +#define SPICE_GNUC_PURE +#elif defined(SPICE_DEPRECATED) +#define SPICE_GNUC_PURE __attribute__((__pure__)) #else +#define SPICE_GNUC_PURE __attribute__((__pure__, warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_PURE instead"))) +#endif + +#if __GNUC__ < 4 #define SPICE_GNUC_NULL_TERMINATED +#elif defined(SPICE_DEPRECATED) +#define SPICE_GNUC_NULL_TERMINATED __attribute__((__sentinel__)) +#else +#define SPICE_GNUC_NULL_TERMINATED __attribute__((__sentinel__, warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_NULL_TERMINATED instead"))) #endif #ifndef __has_feature @@ -62,21 +70,31 @@ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4) #define SPICE_GNUC_PRINTF( format_idx, arg_idx ) __attribute__((__format__ (__printf__, format_idx, arg_idx))) -#define SPICE_GNUC_SCANF( format_idx, arg_idx ) __attribute__((__format__ (__scanf__, format_idx, arg_idx))) -#define SPICE_GNUC_FORMAT( arg_idx ) __attribute__((__format_arg__ (arg_idx))) #define SPICE_GNUC_NORETURN __attribute__((__noreturn__)) -#define SPICE_GNUC_CONST __attribute__((__const__)) #define SPICE_GNUC_UNUSED __attribute__((__unused__)) -#define SPICE_GNUC_NO_INSTRUMENT __attribute__((__no_instrument_function__)) #else /* !__GNUC__ */ #define SPICE_GNUC_PRINTF( format_idx, arg_idx ) +#define SPICE_GNUC_NORETURN +#define SPICE_GNUC_UNUSED +#endif /* !__GNUC__ */ + +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ <= 4) #define SPICE_GNUC_SCANF( format_idx, arg_idx ) #define SPICE_GNUC_FORMAT( arg_idx ) -#define SPICE_GNUC_NORETURN #define SPICE_GNUC_CONST -#define SPICE_GNUC_UNUSED #define SPICE_GNUC_NO_INSTRUMENT -#endif /* !__GNUC__ */ +#elif defined(SPICE_DEPRECATED) +#define SPICE_GNUC_SCANF( format_idx, arg_idx ) __attribute__((__format__ (__scanf__, format_idx, arg_idx))) +#define SPICE_GNUC_FORMAT( arg_idx ) __attribute__((__format_arg__ (arg_idx))) +#define SPICE_GNUC_CONST __attribute__((__const__)) +#define SPICE_GNUC_NO_INSTRUMENT __attribute__((__no_instrument_function__)) +#else +#define SPICE_GNUC_SCANF( format_idx, arg_idx ) __attribute__((__format__ (__scanf__, format_idx, arg_idx), warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_SCANF instead"))) +#define SPICE_GNUC_FORMAT( arg_idx ) __attribute__((__format_arg__ (arg_idx), warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_FORMAT instead"))) +#define SPICE_GNUC_CONST __attribute__((__const__, warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_CONST instead"))) +#define SPICE_GNUC_NO_INSTRUMENT __attribute__((__no_instrument_function__, warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_NO_INSTRUMENT instead"))) + +#endif #ifdef G_DEPRECATED #define SPICE_GNUC_DEPRECATED G_DEPRECATED @@ -88,10 +106,12 @@ #define SPICE_GNUC_DEPRECATED #endif -#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) +#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 3) +# define SPICE_GNUC_MAY_ALIAS +#elif defined(SPICE_DEPRECATED) # define SPICE_GNUC_MAY_ALIAS __attribute__((may_alias)) #else -# define SPICE_GNUC_MAY_ALIAS +# define SPICE_GNUC_MAY_ALIAS __attribute__((may_alias, warning("deprecated, use -DSPICE_DEPRECATED or G_GNUC_MAY_ALIAS instead"))) #endif #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) -- 2.10.2 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel