comparison src/dmlib.h @ 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
comparison
equal deleted inserted replaced
2393:85700c9b7dc8 2394:147d40b708ea
28 #endif 28 #endif
29 29
30 30
31 // Check for arch bitness 31 // Check for arch bitness
32 #if defined(__WIN64) || defined(_WIN64) || defined(_WIN32) || defined(__WIN32) 32 #if defined(__WIN64) || defined(_WIN64) || defined(_WIN32) || defined(__WIN32)
33 # define DM_WINDOWS 1 33 # define DM_PLAT_WINDOWS 1
34 # if defined(__MINGW32__) || defined(__MINGW64__) 34 # if defined(__MINGW32__) || defined(__MINGW64__)
35 # undef __USE_MINGW_ANSI_STDIO 35 # undef __USE_MINGW_ANSI_STDIO
36 # define __USE_MINGW_ANSI_STDIO 1 36 # define __USE_MINGW_ANSI_STDIO 1
37 # endif 37 # endif
38 #else
39 # define DM_PLAT_UNIX 1
40 #endif
41
42 // Check for arch bitness
43 #if !defined(DM_ARCH) && (defined(__WIN64) || defined(_WIN64))
44 # define DM_ARCH 64
45 #endif
46
47 #if !defined(DM_ARCH) && (defined(__WIN32) || defined(_WIN32))
48 # define DM_ARCH 32
38 #endif 49 #endif
39 50
40 #if !defined(DM_ARCH) 51 #if !defined(DM_ARCH)
41 # if defined(__LP64__) || defined(_LP64) || defined(__WIN64) || defined(_WIN64) 52 # if UINTPTR_MAX == 0xffffffff
53 # define DM_ARCH 32
54 # elif UINTPTR_MAX == 0xffffffffffffffff
55 # define DM_ARCH 64
56 # endif
57 #endif
58
59
60 #if !defined(DM_ARCH)
61 # if defined(__LP64__) || defined(_LP64)
42 # define DM_ARCH 64 62 # define DM_ARCH 64
43 # else 63 # else
44 # define DM_ARCH 32 64 # define DM_ARCH 32
45 # endif 65 # endif
46 #endif 66 #endif
69 #if DM_ARCH == 32 89 #if DM_ARCH == 32
70 # define DM_PRIu_SIZE_T PRIu32 90 # define DM_PRIu_SIZE_T PRIu32
71 # define DM_PRId_SSIZE_T PRId32 91 # define DM_PRId_SSIZE_T PRId32
72 # define DM_PRIx_SIZE_T PRIx32 92 # define DM_PRIx_SIZE_T PRIx32
73 # define DM_PRIX_SIZE_T PRIX32 93 # define DM_PRIX_SIZE_T PRIX32
94 # ifdef DM_PLAT_WINDOWS
74 # define DM_PRId_OFF_T "ld" 95 # define DM_PRId_OFF_T "ld"
75 # define DM_PRIx_OFF_T "lx" 96 # define DM_PRIx_OFF_T "lx"
76 # define DM_PRIX_OFF_T "lX" 97 # define DM_PRIX_OFF_T "lX"
98 # else
99 # define DM_PRId_OFF_T PRId32
100 # define DM_PRIx_OFF_T PRIx32
101 # define DM_PRIX_OFF_T PRIX32
102 # endif
77 #elif DM_ARCH == 64 103 #elif DM_ARCH == 64
78 # ifdef DM_WINDOWS 104 # ifdef DM_PLAT_WINDOWS // Unsure if this is MinGW64 only thing?
79 # define DM_PRIu_SIZE_T "I64u" 105 # define DM_PRIu_SIZE_T "I64u"
80 # define DM_PRId_SSIZE_T "I64d" 106 # define DM_PRId_SSIZE_T "I64d"
81 # define DM_PRIx_SIZE_T "I64x" 107 # define DM_PRIx_SIZE_T "I64x"
82 # define DM_PRIX_SIZE_T "I64X" 108 # define DM_PRIX_SIZE_T "I64X"
83 # define DM_PRId_OFF_T "I64d" 109 # define DM_PRId_OFF_T "I64d"