Mercurial > hg > dmlib
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"