diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2013-08-14 18:13:45 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-08-14 18:25:09 +0200 |
commit | 3f74d9e76795ef20ee401bbe712dd72733bfa77f (patch) | |
tree | 708b6c9c01b3e325496c6fc224b91641e80b7d96 /include/osmocom/core | |
parent | 3c761c8d8a3c7c2ebad6b088e3a8ddeec9d690e0 (diff) |
core: Support clang with OSME_DEPRECATED
Separate feature checking from implementation. Supported are clang and
gcc.
Diffstat (limited to 'include/osmocom/core')
-rw-r--r-- | include/osmocom/core/defs.h | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/include/osmocom/core/defs.h b/include/osmocom/core/defs.h index e3afbff2..917a8c3a 100644 --- a/include/osmocom/core/defs.h +++ b/include/osmocom/core/defs.h @@ -26,14 +26,25 @@ /*! \brief Set the deprecated attribute with a message. */ -#if ! defined(__GNUC__) -# define OSMO_DEPRECATED(text) -#elif OSMO_GNUC_PREREQ(4,5) +#if defined(__clang__) +# define _OSMO_HAS_ATTRIBUTE_DEPRECATED __has_attribute(deprecated) +# define _OSMO_HAS_ATTRIBUTE_DEPRECATED_WITH_MESSAGE __has_extension(attribute_deprecated_with_message) +#elif defined(__GNUC__) +# define _OSMO_HAS_ATTRIBUTE_DEPRECATED 1 +# define _OSMO_HAS_ATTRIBUTE_DEPRECATED_WITH_MESSAGE OSMO_GNUC_PREREQ(4,5) +#endif + +#if defined(_OSMO_HAS_ATTRIBUTE_DEPRECATED_WITH_MESSAGE) # define OSMO_DEPRECATED(text) __attribute__((__deprecated__(text))) -#else +#elif defined(_OSMO_HAS_ATTRIBUTE_DEPRECATED) # define OSMO_DEPRECATED(text) __attribute__((__deprecated__)) +#else +# define OSMO_DEPRECATED(text) #endif +#undef _OSMO_HAS_ATTRIBUTE_DEPRECATED_WITH_MESSAGE +#undef _OSMO_HAS_ATTRIBUTE_DEPRECATED + /*! @} */ #endif |