/* Provide some OS/compiler macros. Note that a Mac has QB64_LINUX too * QB64_WINDOWS: Is this a Windows system? * QB64_BACKSLASH_FILESYSTEM: Does this system use \ for file paths (as opposed to /)? * QB64_MICROSOFT: Are we compiling with Visual Studio? * QB64_GCC: Are we compiling with gcc? * QB64_MINGW: Are we compiling with MinGW, specifically? (Set in addition to QB64_GCC) * QB64_LINUX: Is this a Unix system? (really should be QB64_UNIX) * QB64_MACOSX: Is this MacOSX, or MacOS or whatever Apple calls it now? * QB64_32: A 32bit system (the default) * QB64_64: A 64bit system (assumes all Macs are 64 bit) */ #ifdef WIN32 #define QB64_WINDOWS #define QB64_BACKSLASH_FILESYSTEM #ifdef _MSC_VER //Do we even support non-mingw compilers on Windows? #define QB64_MICROSOFT #else #define QB64_GCC #define QB64_MINGW #endif #else #define QB64_LINUX #define QB64_GCC #ifdef __APPLE__ #define QB64_MACOSX #endif #endif #if _WIN64 || __x86_64__ || __ppc64__ || QB64_MACOSX #define QB64_64 #else #define QB64_32 #endif /* common types (not quite an include guard, but allows an including * file to not have these included. * * Should this be adapted to check for each type before defining? */ #ifndef QB64_OS_H_NO_TYPES #ifdef QB64_WINDOWS #define uint64 unsigned __int64 #define uint32 unsigned __int32 #define uint16 unsigned __int16 #define uint8 unsigned __int8 #define int64 __int64 #define int32 __int32 #define int16 __int16 #define int8 __int8 #else #define int64 int64_t #define int32 int32_t #define int16 int16_t #define int8 int8_t #define uint64 uint64_t #define uint32 uint32_t #define uint16 uint16_t #define uint8 uint8_t #endif #ifdef QB64_64 #define ptrszint int64 #define uptrszint uint64 #define ptrsz 8 #else #define ptrszint int32 #define uptrszint uint32 #define ptrsz 4 #endif #endif