changeset 2394:147d40b708ea

Copy improvements to the platform 32/64bit logic from th-libs.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 09 Jan 2020 20:59:20 +0200
parents 85700c9b7dc8
children e149fc273f2b
files src/dmlib.h src/dmres.c
diffstat 2 files changed, 30 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/dmlib.h	Thu Jan 09 20:54:57 2020 +0200
+++ b/src/dmlib.h	Thu Jan 09 20:59:20 2020 +0200
@@ -30,15 +30,35 @@
 
 // Check for arch bitness
 #if defined(__WIN64) || defined(_WIN64) || defined(_WIN32) || defined(__WIN32)
-#  define DM_WINDOWS 1
+#  define DM_PLAT_WINDOWS 1
 #  if defined(__MINGW32__) || defined(__MINGW64__)
 #     undef __USE_MINGW_ANSI_STDIO
 #     define __USE_MINGW_ANSI_STDIO 1
 #  endif
+#else
+#  define DM_PLAT_UNIX 1
+#endif
+
+// Check for arch bitness
+#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
 
 #if !defined(DM_ARCH)
-#  if defined(__LP64__) || defined(_LP64) || defined(__WIN64) || defined(_WIN64)
+#  if UINTPTR_MAX == 0xffffffff
+#    define DM_ARCH 32
+#  elif UINTPTR_MAX == 0xffffffffffffffff
+#    define DM_ARCH 64
+#  endif
+#endif
+
+
+#if !defined(DM_ARCH)
+#  if defined(__LP64__) || defined(_LP64)
 #    define DM_ARCH 64
 #  else
 #    define DM_ARCH 32
@@ -71,11 +91,17 @@
 #    define DM_PRId_SSIZE_T    PRId32
 #    define DM_PRIx_SIZE_T     PRIx32
 #    define DM_PRIX_SIZE_T     PRIX32
+#  ifdef DM_PLAT_WINDOWS
 #    define DM_PRId_OFF_T      "ld"
 #    define DM_PRIx_OFF_T      "lx"
 #    define DM_PRIX_OFF_T      "lX"
+#  else
+#    define DM_PRId_OFF_T      PRId32
+#    define DM_PRIx_OFF_T      PRIx32
+#    define DM_PRIX_OFF_T      PRIX32
+#  endif
 #elif DM_ARCH == 64
-#  ifdef DM_WINDOWS
+#  ifdef DM_PLAT_WINDOWS // Unsure if this is MinGW64 only thing?
 #    define DM_PRIu_SIZE_T     "I64u"
 #    define DM_PRId_SSIZE_T    "I64d"
 #    define DM_PRIx_SIZE_T     "I64x"
--- a/src/dmres.c	Thu Jan 09 20:54:57 2020 +0200
+++ b/src/dmres.c	Thu Jan 09 20:59:20 2020 +0200
@@ -352,7 +352,7 @@
 
 
 // Some mingw/windows headers define these as macros, which is bad for us
-#ifdef DM_WINDOWS
+#ifdef DM_PLAT_WINDOWS
 #  undef ferror
 #  undef feof
 #endif