changeset 1145:af2c9f76c782

MinGW does not define PRI* format specifiers, so define them ourselves :S
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 05 Mar 2015 02:37:10 +0200
parents 7842e977d3df
children b412470ec606
files src/dmlib.h
diffstat 1 files changed, 47 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/dmlib.h	Thu Mar 05 02:35:21 2015 +0200
+++ b/src/dmlib.h	Thu Mar 05 02:37:10 2015 +0200
@@ -29,6 +29,53 @@
 #     define __USE_MINGW_ANSI_STDIO 1
 #  endif
 #endif
+
+#if !defined(DM_ARCH)
+#  if defined(__LP64__) || defined(_LP64)
+#    define DM_ARCH 64
+#  else
+#    define DM_ARCH 32
+#  endif
+#endif
+
+#if !defined(DM_ARCH) && (defined(__WIN64) || defined(_WIN64))
+#  define DM_ARCH 64
+#endif
+
+#if !defined(DM_ARCH) && (defined(__WIN32) || defined(_WIN32))
+#  define DM_ARCH 32
+#endif
+
+
+// Do we have a valid arch?
+// If so, set some printf specifiers
+#if DM_ARCH == 32
+#  define DM_ARCH_32BIT    1
+#  define DM_PRIu32        "u"
+#  define DM_PRId32        "d"
+#  define DM_PRIx32        "x"
+#  define DM_PRIu64        "llu"
+#  define DM_PRId64        "lld"
+#  define DM_PRIx64        "llx"
+#  define DM_PRIu_SIZE_T   "u"
+#  define DM_PRId_SSIZE_T  "d"
+#  define DM_PRIx_SIZE_T   "x"
+#elif DM_ARCH == 64
+#  define DM_ARCH_64BIT    1
+#  define DM_PRIu32        "u"
+#  define DM_PRId32        "d"
+#  define DM_PRIx32        "x"
+#  define DM_PRIu64        "lu"
+#  define DM_PRId64        "ld"
+#  define DM_PRIx64        "lx"
+#  define DM_PRIu_SIZE_T   "lu"
+#  define DM_PRId_SSIZE_T  "ld"
+#  define DM_PRIx_SIZE_T   "lx"
+#else
+#  error Could not determine architecture (32/64bit), please define DM_ARCH=32 or 64
+#endif
+
+
 #ifdef __cplusplus
 extern "C" {
 #endif