/* Provide some OS/compiler macros. * QB64_WINDOWS: Is this a Windows system? * QB64_LINUX: Is this a Linux system? * QB64_MACOSX: Is this MacOSX, or MacOS or whatever Apple calls it now? * QB64_UNIX: Is this a Unix-flavoured 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_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 #elif defined(__APPLE__) # define QB64_MACOSX # define QB64_UNIX # define QB64_GCC #elif defined(__linux__) # define QB64_LINUX # define QB64_UNIX # define QB64_GCC #else # error "Unknown system; refusing to build. Edit os.h if needed" #endif #if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__) || defined(QB64_MACOSX) || defined(__aarch64__) # define QB64_64 #else # define QB64_32 #endif #if !defined(i386) && !defined(__x86_64__) # define QB64_NOT_X86 #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