From e5eb401fcd0f5d125741f171b5cb98da884174e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Sun, 19 Jun 2011 10:43:12 -0700 Subject: [PATCH] simplify checking and start to use __has_extension --- include/krb5-types.cross | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/include/krb5-types.cross b/include/krb5-types.cross index 6f67443ba..ee43abd4a 100644 --- a/include/krb5-types.cross +++ b/include/krb5-types.cross @@ -13,8 +13,17 @@ typedef socklen_t krb5_socklen_t; #include typedef ssize_t krb5_ssize_t; +#if !defined(__has_extension) +#define __has_extension(x) 0 +#endif + +#define KRB5TYPES_REQUIRE_GNUC(m,n,p) \ + (((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100) + __GNUC_PATCHLEVEL__) >= \ + (((m) * 10000) + ((n) * 100) + (p))) + + #ifndef HEIMDAL_DEPRECATED -#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 ))) +#if __has_extension(deprecated) || KRB5TYPES_REQUIRE_GNUC(3,1,0) #define HEIMDAL_DEPRECATED __attribute__((deprecated)) #elif defined(_MSC_VER) && (_MSC_VER>1200) #define HEIMDAL_DEPRECATED __declspec(deprecated) @@ -24,7 +33,7 @@ typedef ssize_t krb5_ssize_t; #endif #ifndef HEIMDAL_PRINTF_ATTRIBUTE -#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 ))) +#if __has_extension(format) || KRB5TYPES_REQUIRE_GNUC(3,1,0) #define HEIMDAL_PRINTF_ATTRIBUTE(x) __attribute__((format x)) #else #define HEIMDAL_PRINTF_ATTRIBUTE(x) @@ -32,7 +41,7 @@ typedef ssize_t krb5_ssize_t; #endif #ifndef HEIMDAL_NORETURN_ATTRIBUTE -#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 ))) +#if __has_extension(noreturn) || KRB5TYPES_REQUIRE_GNUC(3,1,0) #define HEIMDAL_NORETURN_ATTRIBUTE __attribute__((noreturn)) #else #define HEIMDAL_NORETURN_ATTRIBUTE @@ -40,7 +49,7 @@ typedef ssize_t krb5_ssize_t; #endif #ifndef HEIMDAL_UNUSED_ATTRIBUTE -#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1 ))) +#if __has_extension(unused) || KRB5TYPES_REQUIRE_GNUC(3,1,0) #define HEIMDAL_UNUSED_ATTRIBUTE __attribute__((unused)) #else #define HEIMDAL_UNUSED_ATTRIBUTE