Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a defined(__GNUC__), and rework expression.
[simgrid.git] / include / xbt / misc.h
index 7d887b0..edd706a 100644 (file)
               __attribute__((__format__ (__scanf__, format_idx, arg_idx)))
 # define _XBT_GNUC_NORETURN __attribute__((__noreturn__))
 # define _XBT_GNUC_UNUSED  __attribute__((__unused__))
-# define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__ (prio)))
-# define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__ (prio)))
+/* Constructor priorities exist since gcc 4.3.  Apparently, they are however not
+ * supported on Macs. */
+# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && !defined(__APPLE__)
+#  define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__ (prio)))
+#  define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__ (prio)))
+# else
+#  define _XBT_GNUC_CONSTRUCTOR(prio) __attribute__((__constructor__))
+#  define _XBT_GNUC_DESTRUCTOR(prio) __attribute__((__destructor__))
+# endif
 # undef _XBT_NEED_INIT_PRAGMA
 
 #else                           /* !__GNUC__ */
 #define TRUE  1
 #define FALSE 0
 
-#define XBT_MAX_CHANNEL 10      /* FIXME: killme */
 /*! C++ users need love */
 #ifndef SG_BEGIN_DECL
 # ifdef __cplusplus