Samuel:

What do you think of this patch?  It separates out the individual version 
checking to make the #define logic a little easier to read.

Index: include/hwloc/autogen/config.h.in
===================================================================
--- include/hwloc/autogen/config.h.in   (revision 4414)
+++ include/hwloc/autogen/config.h.in   (working copy)
@@ -34,11 +34,40 @@
  * well-known easy cases.
  */

+/* Some handy constants to make the logic below a little more readable */
+#if defined(__cplusplus) && \
+    (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))
+#define GXX_ABOVE_3_4 1
+#else
+#define GXX_ABOVE_3_4 0
+#endif
+
+#if !defined(__cplusplus) && \
+    (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
+#define GCC_ABOVE_2_95 1
+#else
+#define GCC_ABOVE_2_95 0
+#endif
+
+#if !defined(__cplusplus) && \
+    (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
+#define GCC_ABOVE_2_96 1
+#else
+#define GCC_ABOVE_2_96 0
+#endif
+
+#if !defined(__cplusplus) && \
+    (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
+#define GCC_ABOVE_3_3 1
+#else
+#define GCC_ABOVE_3_3 0
+#endif
+
 /* Maybe before gcc 2.95 too */
 #ifdef HWLOC_HAVE_ATTRIBUTE_UNUSED
 #define __HWLOC_HAVE_ATTRIBUTE_UNUSED HWLOC_HAVE_ATTRIBUTE_UNUSED 
 #elif defined(__GNUC__)
-# define __HWLOC_HAVE_ATTRIBUTE_UNUSED ((defined(__cplusplus) && (__GNUC__ > 3 
|| (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
(__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))))
+# define __HWLOC_HAVE_ATTRIBUTE_UNUSED (GXX_ABOVE_3_4 || GCC_ABOVE_2_95)
 #else
 # define __HWLOC_HAVE_ATTRIBUTE_UNUSED 0
 #endif
@@ -51,7 +80,7 @@
 #ifdef HWLOC_HAVE_ATTRIBUTE_MALLOC
 #define __HWLOC_HAVE_ATTRIBUTE_MALLOC HWLOC_HAVE_ATTRIBUTE_MALLOC 
 #elif defined(__GNUC__)
-# define __HWLOC_HAVE_ATTRIBUTE_MALLOC ((defined(__cplusplus) && (__GNUC__ > 3 
|| (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
(__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))))
+# define __HWLOC_HAVE_ATTRIBUTE_MALLOC (GXX_ABOVE_3_4 || GCC_ABOVE_2_96)
 #else
 # define __HWLOC_HAVE_ATTRIBUTE_MALLOC 0
 #endif
@@ -64,7 +93,7 @@
 #ifdef HWLOC_HAVE_ATTRIBUTE_CONST
 #define __HWLOC_HAVE_ATTRIBUTE_CONST HWLOC_HAVE_ATTRIBUTE_CONST 
 #elif defined(__GNUC__)
-# define __HWLOC_HAVE_ATTRIBUTE_CONST ((defined(__cplusplus) && (__GNUC__ > 3 
|| (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
(__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))))
+# define __HWLOC_HAVE_ATTRIBUTE_CONST (GXX_ABOVE_3_4 || GCC_ABOVE_2_95)
 #else
 # define __HWLOC_HAVE_ATTRIBUTE_CONST 0
 #endif
@@ -77,7 +106,7 @@
 #ifdef HWLOC_HAVE_ATTRIBUTE_PURE
 #define __HWLOC_HAVE_ATTRIBUTE_PURE HWLOC_HAVE_ATTRIBUTE_PURE 
 #elif defined(__GNUC__)
-# define __HWLOC_HAVE_ATTRIBUTE_PURE ((defined(__cplusplus) && (__GNUC__ > 3 
|| (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
(__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))))
+# define __HWLOC_HAVE_ATTRIBUTE_PURE (GXX_ABOVE_3_4 || GCC_ABOVE_2_96)
 #else
 # define __HWLOC_HAVE_ATTRIBUTE_PURE 0
 #endif
@@ -90,7 +119,7 @@
 #ifdef HWLOC_HAVE_ATTRIBUTE_DEPRECATED
 #define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED HWLOC_HAVE_ATTRIBUTE_DEPRECATED 
 #elif defined(__GNUC__)
-# define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED ((defined(__cplusplus) && (__GNUC__ 
> 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))))
+# define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED (GXX_ABOVE_3_4 || GCC_ABOVE_3_3)
 #else
 # define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED 0
 #endif


On Mar 17, 2012, at 7:45 PM, sthib...@osl.iu.edu wrote:

> Author: sthibaul
> Date: 2012-03-17 19:45:42 EDT (Sat, 17 Mar 2012)
> New Revision: 4409
> URL: https://svn.open-mpi.org/trac/hwloc/changeset/4409
> 
> Log:
> Disable attribute use with g++ < 3.4, these do not understand them.
> Text files modified: 
>   trunk/include/hwloc/autogen/config.h.in |    10 +++++-----                  
>             
>   1 files changed, 5 insertions(+), 5 deletions(-)
> 
> Modified: trunk/include/hwloc/autogen/config.h.in
> ==============================================================================
> --- trunk/include/hwloc/autogen/config.h.in   (original)
> +++ trunk/include/hwloc/autogen/config.h.in   2012-03-17 19:45:42 EDT (Sat, 
> 17 Mar 2012)
> @@ -38,7 +38,7 @@
> #ifdef HWLOC_HAVE_ATTRIBUTE_UNUSED
> #define __HWLOC_HAVE_ATTRIBUTE_UNUSED HWLOC_HAVE_ATTRIBUTE_UNUSED 
> #elif defined(__GNUC__)
> -# define __HWLOC_HAVE_ATTRIBUTE_UNUSED (__GNUC__ > 2 || (__GNUC__ == 2 && 
> __GNUC_MINOR__ >= 95))
> +# define __HWLOC_HAVE_ATTRIBUTE_UNUSED ((defined(__cplusplus) && (__GNUC__ > 
> 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
> (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))))
> #else
> # define __HWLOC_HAVE_ATTRIBUTE_UNUSED 0
> #endif
> @@ -51,7 +51,7 @@
> #ifdef HWLOC_HAVE_ATTRIBUTE_MALLOC
> #define __HWLOC_HAVE_ATTRIBUTE_MALLOC HWLOC_HAVE_ATTRIBUTE_MALLOC 
> #elif defined(__GNUC__)
> -# define __HWLOC_HAVE_ATTRIBUTE_MALLOC (__GNUC__ > 2 || (__GNUC__ == 2 && 
> __GNUC_MINOR__ >= 96))
> +# define __HWLOC_HAVE_ATTRIBUTE_MALLOC ((defined(__cplusplus) && (__GNUC__ > 
> 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
> (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))))
> #else
> # define __HWLOC_HAVE_ATTRIBUTE_MALLOC 0
> #endif
> @@ -64,7 +64,7 @@
> #ifdef HWLOC_HAVE_ATTRIBUTE_CONST
> #define __HWLOC_HAVE_ATTRIBUTE_CONST HWLOC_HAVE_ATTRIBUTE_CONST 
> #elif defined(__GNUC__)
> -# define __HWLOC_HAVE_ATTRIBUTE_CONST (__GNUC__ > 2 || (__GNUC__ == 2 && 
> __GNUC_MINOR__ >= 95))
> +# define __HWLOC_HAVE_ATTRIBUTE_CONST ((defined(__cplusplus) && (__GNUC__ > 
> 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
> (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))))
> #else
> # define __HWLOC_HAVE_ATTRIBUTE_CONST 0
> #endif
> @@ -77,7 +77,7 @@
> #ifdef HWLOC_HAVE_ATTRIBUTE_PURE
> #define __HWLOC_HAVE_ATTRIBUTE_PURE HWLOC_HAVE_ATTRIBUTE_PURE 
> #elif defined(__GNUC__)
> -# define __HWLOC_HAVE_ATTRIBUTE_PURE (__GNUC__ > 2 || (__GNUC__ == 2 && 
> __GNUC_MINOR__ >= 96))
> +# define __HWLOC_HAVE_ATTRIBUTE_PURE ((defined(__cplusplus) && (__GNUC__ > 3 
> || (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || (!defined(__cplusplus) && 
> (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))))
> #else
> # define __HWLOC_HAVE_ATTRIBUTE_PURE 0
> #endif
> @@ -90,7 +90,7 @@
> #ifdef HWLOC_HAVE_ATTRIBUTE_DEPRECATED
> #define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED HWLOC_HAVE_ATTRIBUTE_DEPRECATED 
> #elif defined(__GNUC__)
> -# define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED (__GNUC__ > 3 || (__GNUC__ == 3 
> && __GNUC_MINOR__ >= 3))
> +# define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED ((defined(__cplusplus) && 
> (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR >= 4))) || 
> (!defined(__cplusplus) && (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ 
> >= 3))))
> #else
> # define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED 0
> #endif
> _______________________________________________
> hwloc-svn mailing list
> hwloc-...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/hwloc-svn


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to