-#if ( defined(_MSC_VER) && (_MSC_VER <= 1000) ) || (defined(__BORLANDC__) && (__BORLANDC__ < 0x500))
-typedef unsigned int bool;
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER == 1020)
-#define bool unsigned int
+#if defined( __MWERKS__ )
+ #if (__MWERKS__ < 0x1000) || !__option(bool)
+ typedef unsigned int bool;
+ #endif
+#elif defined(_MSC_VER) && (_MSC_VER <= 1000)
+ typedef unsigned int bool;
+#elif defined(_MSC_VER) && (_MSC_VER == 1020)
+ #define bool unsigned int
+#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
+ typedef unsigned int bool;
+#elif defined(__WATCOMC__)
+ typedef unsigned int bool;
+#elif defined(__SUNCC__)
+ // If we use int, we get identically overloaded functions in config.cpp
+ typedef unsigned char bool;