# HG changeset patch # User Matti Hamalainen # Date 1578596360 -7200 # Node ID 147d40b708ea30e96c66d277a8ced777d6a8ddf4 # Parent 85700c9b7dc80ca720931a04b16b5e428bbad6be Copy improvements to the platform 32/64bit logic from th-libs. diff -r 85700c9b7dc8 -r 147d40b708ea src/dmlib.h --- 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" diff -r 85700c9b7dc8 -r 147d40b708ea src/dmres.c --- 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