From 342910a2806aee312f61280c3329cac24c26cfd4 Mon Sep 17 00:00:00 2001 From: Tomi Ollila Date: Tue, 1 Mar 2016 21:30:07 +0200 Subject: [PATCH] lib: NOTMUCH_DEPRECATED macro also for older compilers Some compilers (older than gcc 4.5 and clang 2.9) do support __attribute__ ((deprecated)) but not __attribute__ ((deprecated("message"))). Check if clang version is at least 3.0, or gcc version is at least 4.5 to define NOTMUCH_DEPRECATED as the latter variant above. Otherwise define NOTMUCH_DEPRECATED as the former variant above. For a bit simpler implementation clang 2.9 is not included to use the newer variant. It is just one release, and the older one works fine. Clang 3.0 was released around 2011-11 and gcc 5.1 2015-04-22 (therefore newer macro for gcc 4.5+) --- lib/notmuch.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/notmuch.h b/lib/notmuch.h index 310a8b8a..cb46fc05 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -59,8 +59,17 @@ NOTMUCH_BEGIN_DECLS #define LIBNOTMUCH_MINOR_VERSION 3 #define LIBNOTMUCH_MICRO_VERSION 0 + +#if defined (__clang_major__) && __clang_major__ >= 3 \ + || defined (__GNUC__) && __GNUC__ >= 5 \ + || defined (__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ >= 5 #define NOTMUCH_DEPRECATED(major,minor) \ __attribute__ ((deprecated ("function deprecated as of libnotmuch " #major "." #minor))) +#else +#define NOTMUCH_DEPRECATED(major,minor) __attribute__ ((deprecated)) +#endif + + #endif /* __DOXYGEN__ */ /**