diff options
author | Thomas Haller <thaller@redhat.com> | 2014-10-31 20:46:39 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2014-10-31 21:00:50 +0100 |
commit | e2179f091105e4086338739ab9d2fbe36a367ab6 (patch) | |
tree | 240b7f5f27c196bbd218bbd732f964d423b2217b | |
parent | b0e29b5bd3a22f1366852cb2031090c6350e00f2 (diff) | |
download | NetworkManager-e2179f091105e4086338739ab9d2fbe36a367ab6.tar.gz |
all: add macros to suppress compiler warnings
Signed-off-by: Thomas Haller <thaller@redhat.com>
-rw-r--r-- | include/nm-utils-internal.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/nm-utils-internal.h b/include/nm-utils-internal.h index 1c746beac3..4f5850aace 100644 --- a/include/nm-utils-internal.h +++ b/include/nm-utils-internal.h @@ -23,6 +23,10 @@ #define __NM_UTILS_INTERNAL_H__ +#include <glib.h> + +/********************************************************/ + /* http://stackoverflow.com/a/11172679 */ #define _NM_UTILS_MACRO_FIRST(...) __NM_UTILS_MACRO_FIRST_HELPER(__VA_ARGS__, throwaway) #define __NM_UTILS_MACRO_FIRST_HELPER(first, ...) first @@ -40,5 +44,42 @@ TWOORMORE, TWOORMORE, TWOORMORE, ONE, throwaway) #define __NM_UTILS_MACRO_REST_SELECT_20TH(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, ...) a20 +/********************************************************/ + +#if defined (__GNUC__) +#define _NM_PRAGMA_WARNING_DO(warning) G_STRINGIFY(GCC diagnostic ignored warning) +#elif defined (__clang__) +#define _NM_PRAGMA_WARNING_DO(warning) G_STRINGIFY(clang diagnostic ignored warning) +#endif + +/* you can only suppress a specific warning that the compiler + * understands. Otherwise you will get another compiler warning + * about invalid pragma option. + * It's not that bad however, because gcc and clang often have the + * same name for the same warning. */ + +#if defined (__GNUC__) +#define NM_PRAGMA_WARNING_DISABLE(warning) \ + _Pragma("GCC diagnostic push"); \ + _Pragma(_NM_PRAGMA_WARNING_DO(warning)) +#elif defined (__clang__) +#define NM_PRAGMA_WARNING_DISABLE(warning) \ + _Pragma("clang diagnostic push"); \ + _Pragma(_NM_PRAGMA_WARNING_DO(warning)) +#else +#define NM_PRAGMA_WARNING_DISABLE(warning) +#endif + +#if defined (__GNUC__) +#define NM_PRAGMA_WARNING_REENABLE \ + _Pragma("GCC diagnostic pop") +#elif defined (__clang__) +#define NM_PRAGMA_WARNING_REENABLE \ + _Pragma("clang diagnostic pop") +#else +#define NM_PRAGMA_WARNING_REENABLE +#endif + +/********************************************************/ #endif |