[Spice-devel] [protocol 1/3] macros: Improve the SPICE_GNUC_DEPRECATED* macros

Francois Gouget fgouget at codeweavers.com
Thu Aug 11 14:30:44 UTC 2016


If the user specifically requests access to the deprecated APIs by
defining the SPICE_DEPRECATED macro, then turn off the
SPICE_GNUC_DEPRECATED* warnings.
Also automatically use G_GNUC_DEPRECATED if available.
Add SPICE_GNUC_DEPRECATED_FOR().

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---
 spice/macros.h | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/spice/macros.h b/spice/macros.h
index a0413f3..6e2dbce 100644
--- a/spice/macros.h
+++ b/spice/macros.h
@@ -78,11 +78,25 @@
 #define SPICE_GNUC_NO_INSTRUMENT
 #endif  /* !__GNUC__ */
 
-#if    __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
-#define SPICE_GNUC_DEPRECATED  __attribute__((__deprecated__))
+#if     defined(SPICE_DEPRECATED)
+/* Don't warn when deprecated APIs have been explicitly asked for */
+#  define SPICE_GNUC_DEPRECATED
+#elif   defined(G_GNUC_DEPRECATED)
+#  define SPICE_GNUC_DEPRECATED G_GNUC_DEPRECATED
+#elif   __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
+#  define SPICE_GNUC_DEPRECATED  __attribute__((__deprecated__))
 #else
-#define SPICE_GNUC_DEPRECATED
-#endif /* __GNUC__ */
+#  define SPICE_GNUC_DEPRECATED
+#endif  /* __GNUC__ */
+
+#if     defined(SPICE_DEPRECATED)
+/* Don't warn when deprecated APIs have been explicitly asked for */
+#  define SPICE_GNUC_DEPRECATED_FOR(f)
+#elif   __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
+#  define SPICE_GNUC_DEPRECATED_FOR(f) __attribute__((deprecated("Use " #f " instead")))
+#else
+#  define SPICE_GNUC_DEPRECATED_FOR(f) SPICE_GNUC_DEPRECATED
+#endif  /* __GNUC__ */
 
 #if     __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
 #  define SPICE_GNUC_MAY_ALIAS __attribute__((may_alias))
-- 
2.8.1


More information about the Spice-devel mailing list