-typedef unsigned short guint16;
-typedef unsigned int guint32;
-typedef short gint16;
-typedef int gint32;
-#define UINT32_MAX (4294967295U)
-#endif //HAVE_NO_STDINT_H
-#endif
+#ifdef CMAKE_HAVE_INTTYPES_H
+ // Old system only have this
+ #include <inttypes.h> // For uint8_t uint16_t and uint32_t
+#else
+// Broken plateforms do not respect C99 and do not provide those typedef
+// Special case for recent Borland compiler, comes with stdint.h
+#if defined(_MSC_VER) || defined(__BORLANDC__) && (__BORLANDC__ < 0x0560) \
+ || defined(__MINGW32__)
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed int int32_t;
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+#else
+#error "Sorry your plateform is not supported"
+#endif // defined(_MSC_VER) || defined(__BORLANDC__) && (__BORLANDC__ < 0x0560) || defined(__MINGW32__)
+#endif // CMAKE_HAVE_INTTYPES_H
+#endif // CMAKE_HAVE_STDINT_H