1+ #include < stdio.h>
2+ #include < cstring>
3+ #include < stdlib.h> // for malloc
4+ #include < unistd.h> // for rmdir
5+ #include < sys/fcntl.h>
6+ #include < sys/stat.h>
7+ #include < sys/types.h>
8+ #include < sys/param.h>
9+ #include < errno.h>
10+ #include < stdarg.h>
11+ #include < ctype.h>
12+ #include < limits.h> // for PAGESIZE...
13+ #include < math.h>
14+ #include < algorithm> // for min max
15+
16+ #include < string>
17+ #include < alloca.h>
18+ #include < pthread.h>
19+ #include < fcntl.h>
20+ #include < sys/mman.h> // for mmap / munmap
21+ #include < dirent.h>
22+ #include < utime.h>
23+
24+ #include < SDL2/SDL.h>
25+ #define CONFIG_USE_SDL
26+
27+ #define _LINUX // for GameSpy
28+
29+ #if !defined(__INTEL_COMPILER)
30+ #define _alloca alloca
31+ #endif
32+
33+ #define _MAX_PATH PATH_MAX + 1
34+ #define MAX_PATH PATH_MAX + 1
35+
36+ #define WINAPI
37+
38+ #define _copysign copysign
39+
40+ #define _cdecl // __attribute__((cdecl))
41+ #define _stdcall // __attribute__((stdcall))
42+ #define _fastcall // __attribute__((fastcall))
43+
44+ #define __cdecl
45+ #define __stdcall
46+ #define __fastcall
47+ // #define __declspec
48+ #define __forceinline FORCE_INLINE
49+ #define __pragma
50+ #define __declspec (x )
51+ #define CALLBACK
52+
53+ /*
54+ static inline long InterlockedExchange(volatile long *val, long new_val)
55+ {
56+ long old_val;
57+ do {
58+ old_val = *val;
59+ } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
60+ return old_val;
61+ }
62+ */
63+ // TODO: Implement more platform independend atomic operations: https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/Common/Atomic_GCC.h
64+ inline void InterlockedExchange (volatile unsigned int & target, unsigned int value)
65+ {
66+ __sync_add_and_fetch (&target, value);
67+ }
68+
69+ inline pthread_t GetCurrentThreadId ()
70+ {
71+ return pthread_self ();
72+ }
73+
74+ inline void Sleep (int ms)
75+ {
76+ SDL_Delay (ms);
77+ }
78+
79+ inline void _splitpath (
80+ const char *path, // Path Input
81+ char *drive, // Drive : Output
82+ char *dir, // Directory : Output
83+ char *fname, // Filename : Output
84+ char *ext // Extension : Output
85+ ){}
86+
87+ inline unsigned long GetLastError ()
88+ {
89+ return 0 ;
90+ }
91+
92+ #define xr_unlink unlink
93+
94+ typedef int BOOL;
95+ typedef char * LPSTR;
96+ typedef char * PSTR;
97+ typedef char * LPTSTR;
98+ typedef const char * LPCSTR;
99+ typedef const char * LPCTSTR;
100+ typedef unsigned char BYTE;
101+ typedef unsigned char * LPBYTE;
102+ typedef unsigned int UINT;
103+ typedef int INT;
104+ typedef long LONG;
105+
106+ typedef unsigned short WORD;
107+ typedef unsigned short * LPWORD;
108+ typedef unsigned long DWORD;
109+ typedef unsigned long * LPDWORD;
110+ typedef const void *LPCVOID;
111+
112+ #define WAVE_FORMAT_PCM 0x0001
113+
114+ typedef struct {
115+ WORD wFormatTag;
116+ WORD nChannels;
117+ DWORD nSamplesPerSec;
118+ DWORD nAvgBytesPerSec;
119+ WORD nBlockAlign;
120+ WORD wBitsPerSample;
121+ WORD cbSize;
122+ } WAVEFORMATEX;
123+
124+ typedef struct _EXCEPTION_POINTERS {
125+ } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
126+
127+ #ifdef XR_X64
128+ typedef int64_t INT_PTR;
129+ typedef uint16_t UINT_PTR;
130+ typedef int64_t LONG_PTR;
131+ #else
132+ typedef int INT_PTR;
133+ typedef unsigned int UINT_PTR;
134+ typedef long LONG_PTR;
135+ #endif // XR_X64
136+
137+ typedef void *HANDLE;
138+ typedef void *HMODULE;
139+ typedef void *LPVOID;
140+ typedef UINT_PTR WPARAM;
141+ typedef LONG_PTR LPARAM;
142+ typedef long HRESULT;
143+ typedef long LRESULT;
144+ typedef long _W64;
145+ // typedef void *HWND;
146+ typedef SDL_Window *HWND;
147+ typedef void *HDC;
148+ // typedef void *HGLRC;
149+ typedef SDL_GLContext HGLRC;
150+ typedef float FLOAT;
151+ typedef unsigned char UINT8;
152+
153+ typedef struct _RECT {
154+ long left;
155+ long top;
156+ long right;
157+ long bottom;
158+ } RECT, *PRECT;
159+
160+ typedef struct tagPOINT {
161+ long x;
162+ long y;
163+ } POINT, *PPOINT, *LPPOINT;
164+
165+ #define WM_USER 0x0400
166+
167+ #define TRUE 1
168+ #define FALSE 0
169+ #define NONE 0
170+ #define CONST const
171+
172+ typedef dirent DirEntryType;
173+
174+ #define _O_WRONLY O_WRONLY
175+ #define _O_RDONLY O_RDONLY
176+ #define _O_TRUNC O_TRUNC
177+ #define _O_CREAT O_CREAT
178+ #define _S_IWRITE S_IWRITE
179+ #define _S_IREAD S_IREAD
180+ #define _O_BINARY 0
181+ #define O_BINARY 0
182+ #define O_SEQUENTIAL 0
183+ #define SH_DENYWR 0
184+
185+ #define _stricmp stricmp
186+ #define strcmpi stricmp
187+ #define stricmp strcasecmp
188+ #define strncpy_s (dest, size, source, num ) strncpy(dest, source, num)
189+ #define strcpy_s (dest, num, source ) strcpy(dest, source)
190+ #define _vsnprintf vsnprintf
191+ #define _alloca alloca
192+ #define _snprintf snprintf
193+ #define sprintf_s (buffer, buffer_size, stringbuffer, ...) sprintf(buffer, stringbuffer, ##__VA_ARGS__)
194+ #define GetProcAddress (handle, name ) dlsym(handle, name)
195+ #define _chdir chdir
196+ #define _strnicmp strnicmp
197+ #define strnicmp strncasecmp
198+ #define _getcwd getcwd
199+ #define _snwprintf swprintf
200+ #define swprintf_s swprintf
201+ #define wcsicmp _wcsicmp
202+ #define _wcsicmp wcscmp
203+ #define _tempnam tempnam
204+ #define _unlink unlink
205+ #define _access access
206+ #define _open open
207+ #define _close close
208+ #define _sopen open
209+ #define _sopen_s (handle, filename, ...) open(filename, O_RDONLY)
210+ #define _fdopen fdopen
211+ #define _rmdir rmdir
212+ #define _write write
213+ #define _strupr strupr
214+ #define _read read
215+ #define _set_new_handler std::set_new_handler
216+ #define _finite isfinite
217+ #define _mkdir (dir ) mkdir(dir, S_IRWXU)
218+ #define _wtoi (arg ) wcstol(arg, NULL , 10 )
219+ #define _wtoi64 (arg ) wcstoll(arg, NULL , 10 )
220+ #undef min
221+ #undef max
222+ #define __max (a, b ) std::max(a, b)
223+ #define __min (a, b ) std::min(a, b)
224+
225+ #define ZeroMemory (p, sz ) memset((p), 0 , (sz))
226+ #define CopyMemory (d, s, n ) memcpy(d, s, n)
227+
228+ #define RGB (r,g,b ) ( ((DWORD)(BYTE)r)|((DWORD)((BYTE)g)<<8 )|((DWORD)((BYTE)b)<<16 ) )
229+ #define SUCCEEDED (hr ) (((HRESULT)(hr)) >= 0 )
230+ #define FAILED (hr ) (((HRESULT)(hr)) < 0 )
231+ #define S_OK 0x00000000
232+ #define S_FALSE 0x10000000
233+ #define E_FAIL 0x80004005
234+
235+ #define STUBBED (txt ) do { \
236+ static bool already_seen = false ; \
237+ if (!already_seen) { \
238+ already_seen = true ; \
239+ fprintf (stderr, " STUBBED: %s in %s, line %d.\n " , txt, __FILE__, __LINE__); \
240+ } \
241+ } while (0 )
0 commit comments