Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a defined(__GNUC__), and rework expression.
[simgrid.git] / include / xbt / misc.h
index ed4bc8a..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__ */