+/*#*
+ *#* $Log$
+ *#* Revision 1.43 2005/03/01 23:15:12 bernie
+ *#* Remove compatibility hack.
+ *#*
+ *#* Revision 1.42 2005/02/16 20:28:46 bernie
+ *#* Move PGM macros to mware/pgm.h
+ *#*
+ *#* Revision 1.41 2005/01/22 04:19:22 bernie
+ *#* MTIME_INFINITE: New constant.
+ *#*
+ *#* Revision 1.40 2005/01/20 18:46:04 aleph
+ *#* Add progmem datatypes; PSTR() definition.
+ *#*/
+#ifndef DEVLIB_COMPILER_H
+#define DEVLIB_COMPILER_H
+
+#include "cpu_detect.h"
+
+
+#if defined __GNUC__ && defined __GNUC_MINOR__
+ #define GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+ #define GNUC_PREREQ(maj, min) 0
+#endif
+
+/* Some CW versions do not allow enabling C99 from the settings panel. */
+#if defined(__MWERKS__)
+ #pragma c99 on
+#endif
+
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+ #define COMPILER_C99 1
+#else
+ #define COMPILER_C99 0
+#endif
+
+
+/*! Concatenate two different preprocessor tokens (allowing macros to expand) */
+#define PP_CAT(x,y) PP_CAT__(x,y)
+#define PP_CAT__(x,y) x ## y
+#define PP_CAT3(x,y,z) PP_CAT(PP_CAT(x,y),z)
+#define PP_CAT4(x,y,z,w) PP_CAT(PP_CAT3(x,y,z),w)
+#define PP_CAT5(x,y,z,w,j) PP_CAT(PP_CAT4(x,y,z,w),j)
+
+/*! String-ize a token (allowing macros to expand) */
+#define PP_STRINGIZE(x) PP_STRINGIZE__(x)
+#define PP_STRINGIZE__(x) #x