Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Latest commit

 

History

History
215 lines (202 loc) · 5.24 KB

testplatform.c

File metadata and controls

215 lines (202 loc) · 5.24 KB
 
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include "SDL.h"
#include "SDL_endian.h"
#include "SDL_cpuinfo.h"
/*
* Watcom C flags these as Warning 201: "Unreachable code" if you just
* compare them directly, so we push it through a function to keep the
* compiler quiet. --ryan.
*/
Jul 10, 2006
Jul 10, 2006
13
14
static int
badsize(size_t sizeoftype, size_t hardcodetype)
15
16
17
18
{
return sizeoftype != hardcodetype;
}
Jul 10, 2006
Jul 10, 2006
19
20
int
TestTypes(SDL_bool verbose)
Jul 10, 2006
Jul 10, 2006
22
int error = 0;
Jul 10, 2006
Jul 10, 2006
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
if (badsize(sizeof(Uint8), 1)) {
if (verbose)
printf("sizeof(Uint8) != 1, instead = %ul\n", sizeof(Uint8));
++error;
}
if (badsize(sizeof(Uint16), 2)) {
if (verbose)
printf("sizeof(Uint16) != 2, instead = %ul\n", sizeof(Uint16));
++error;
}
if (badsize(sizeof(Uint32), 4)) {
if (verbose)
printf("sizeof(Uint32) != 4, instead = %ul\n", sizeof(Uint32));
++error;
}
39
#ifdef SDL_HAS_64BIT_TYPE
Jul 10, 2006
Jul 10, 2006
40
41
42
43
44
if (badsize(sizeof(Uint64), 8)) {
if (verbose)
printf("sizeof(Uint64) != 8, instead = %ul\n", sizeof(Uint64));
++error;
}
Jul 10, 2006
Jul 10, 2006
46
47
48
if (verbose) {
printf("WARNING: No 64-bit datatype on this platform\n");
}
Jul 10, 2006
Jul 10, 2006
50
51
if (verbose && !error)
printf("All data types are the expected size.\n");
Jul 10, 2006
Jul 10, 2006
53
return (error ? 1 : 0);
Jul 10, 2006
Jul 10, 2006
56
57
int
TestEndian(SDL_bool verbose)
Jul 10, 2006
Jul 10, 2006
59
60
61
62
63
64
65
int error = 0;
Uint16 value = 0x1234;
int real_byteorder;
Uint16 value16 = 0xCDAB;
Uint16 swapped16 = 0xABCD;
Uint32 value32 = 0xEFBEADDE;
Uint32 swapped32 = 0xDEADBEEF;
66
#ifdef SDL_HAS_64BIT_TYPE
Jul 10, 2006
Jul 10, 2006
67
68
69
70
71
72
73
Uint64 value64, swapped64;
value64 = 0xEFBEADDE;
value64 <<= 32;
value64 |= 0xCDAB3412;
swapped64 = 0x1234ABCD;
swapped64 <<= 32;
swapped64 |= 0xDEADBEEF;
Jul 10, 2006
Jul 10, 2006
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
if (verbose) {
printf("Detected a %s endian machine.\n",
(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");
}
if ((*((char *) &value) >> 4) == 0x1) {
real_byteorder = SDL_BIG_ENDIAN;
} else {
real_byteorder = SDL_LIL_ENDIAN;
}
if (real_byteorder != SDL_BYTEORDER) {
if (verbose) {
printf("Actually a %s endian machine!\n",
(real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big");
}
++error;
}
if (verbose) {
printf("Value 16 = 0x%X, swapped = 0x%X\n", value16,
SDL_Swap16(value16));
}
if (SDL_Swap16(value16) != swapped16) {
if (verbose) {
printf("16 bit value swapped incorrectly!\n");
}
++error;
}
if (verbose) {
printf("Value 32 = 0x%X, swapped = 0x%X\n", value32,
SDL_Swap32(value32));
}
if (SDL_Swap32(value32) != swapped32) {
if (verbose) {
printf("32 bit value swapped incorrectly!\n");
}
++error;
}
112
#ifdef SDL_HAS_64BIT_TYPE
Jul 10, 2006
Jul 10, 2006
113
if (verbose) {
Mar 31, 2006
Mar 31, 2006
114
#ifdef _MSC_VER
Jul 10, 2006
Jul 10, 2006
115
116
printf("Value 64 = 0x%I64X, swapped = 0x%I64X\n", value64,
SDL_Swap64(value64));
Mar 31, 2006
Mar 31, 2006
117
#else
Jul 10, 2006
Jul 10, 2006
118
119
printf("Value 64 = 0x%llX, swapped = 0x%llX\n", value64,
SDL_Swap64(value64));
Mar 31, 2006
Mar 31, 2006
120
#endif
Jul 10, 2006
Jul 10, 2006
121
122
123
124
125
126
127
}
if (SDL_Swap64(value64) != swapped64) {
if (verbose) {
printf("64 bit value swapped incorrectly!\n");
}
++error;
}
Jul 10, 2006
Jul 10, 2006
129
return (error ? 1 : 0);
Jul 10, 2006
Jul 10, 2006
133
134
int
TestCPUInfo(SDL_bool verbose)
Jul 10, 2006
Jul 10, 2006
136
137
138
139
140
141
142
143
144
145
146
147
if (verbose) {
printf("RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected");
printf("MMX %s\n", SDL_HasMMX()? "detected" : "not detected");
printf("MMX Ext %s\n", SDL_HasMMXExt()? "detected" : "not detected");
printf("3DNow %s\n", SDL_Has3DNow()? "detected" : "not detected");
printf("3DNow Ext %s\n",
SDL_Has3DNowExt()? "detected" : "not detected");
printf("SSE %s\n", SDL_HasSSE()? "detected" : "not detected");
printf("SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected");
printf("AltiVec %s\n", SDL_HasAltiVec()? "detected" : "not detected");
}
return (0);
Jul 10, 2006
Jul 10, 2006
150
151
int
main(int argc, char *argv[])
Jul 10, 2006
Jul 10, 2006
153
154
SDL_bool verbose = SDL_TRUE;
int status = 0;
Jul 10, 2006
Jul 10, 2006
156
157
158
159
160
if (argv[1] && (SDL_strcmp(argv[1], "-q") == 0)) {
verbose = SDL_FALSE;
}
if (verbose) {
printf("This system is running %s\n",
Jul 10, 2006
Jul 10, 2006
162
"AIX"
163
#elif __BEOS__
Jul 10, 2006
Jul 10, 2006
164
"BeOS"
165
#elif __BSDI__
Jul 10, 2006
Jul 10, 2006
166
"BSDI"
167
#elif __DREAMCAST__
Jul 10, 2006
Jul 10, 2006
168
"Dreamcast"
169
#elif __FREEBSD__
Jul 10, 2006
Jul 10, 2006
170
"FreeBSD"
171
#elif __HPUX__
Jul 10, 2006
Jul 10, 2006
172
"HP-UX"
173
#elif __IRIX__
Jul 10, 2006
Jul 10, 2006
174
"Irix"
175
#elif __LINUX__
Jul 10, 2006
Jul 10, 2006
176
"Linux"
177
#elif __MINT__
Jul 10, 2006
Jul 10, 2006
178
"Atari MiNT"
179
#elif __MACOS__
Jul 10, 2006
Jul 10, 2006
180
"MacOS Classic"
181
#elif __MACOSX__
Jul 10, 2006
Jul 10, 2006
182
"Mac OS X"
183
#elif __NETBSD__
Jul 10, 2006
Jul 10, 2006
184
"NetBSD"
185
#elif __OPENBSD__
Jul 10, 2006
Jul 10, 2006
186
"OpenBSD"
187
#elif __OS2__
Jul 10, 2006
Jul 10, 2006
188
"OS/2"
189
#elif __OSF__
Jul 10, 2006
Jul 10, 2006
190
"OSF/1"
191
#elif __QNXNTO__
Jul 10, 2006
Jul 10, 2006
192
"QNX Neutrino"
193
#elif __RISCOS__
Jul 10, 2006
Jul 10, 2006
194
"RISC OS"
195
#elif __SOLARIS__
Jul 10, 2006
Jul 10, 2006
196
"Solaris"
197
198
#elif __WIN32__
#ifdef _WIN32_WCE
Jul 10, 2006
Jul 10, 2006
199
"Windows CE"
Jul 10, 2006
Jul 10, 2006
201
"Windows"
Oct 4, 2008
Oct 4, 2008
203
204
#elif __IPHONEOS__
"iPhone OS"
Jul 10, 2006
Jul 10, 2006
206
"an unknown operating system! (see SDL_platform.h)"
Jul 10, 2006
Jul 10, 2006
208
209
);
}
Jul 10, 2006
Jul 10, 2006
211
212
213
214
status += TestTypes(verbose);
status += TestEndian(verbose);
status += TestCPUInfo(verbose);
return status;