comparison test/testplatform.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents f12379c41042
children 4da1ee79c9af
comparison
equal deleted inserted replaced
1661:281d3f4870e5 1662:782fd950bd46
8 /* 8 /*
9 * Watcom C flags these as Warning 201: "Unreachable code" if you just 9 * Watcom C flags these as Warning 201: "Unreachable code" if you just
10 * compare them directly, so we push it through a function to keep the 10 * compare them directly, so we push it through a function to keep the
11 * compiler quiet. --ryan. 11 * compiler quiet. --ryan.
12 */ 12 */
13 static int badsize(size_t sizeoftype, size_t hardcodetype) 13 static int
14 badsize (size_t sizeoftype, size_t hardcodetype)
14 { 15 {
15 return sizeoftype != hardcodetype; 16 return sizeoftype != hardcodetype;
16 } 17 }
17 18
18 int TestTypes(SDL_bool verbose) 19 int
19 { 20 TestTypes (SDL_bool verbose)
20 int error = 0; 21 {
21 22 int error = 0;
22 if ( badsize(sizeof(Uint8), 1) ) { 23
23 if ( verbose ) 24 if (badsize (sizeof (Uint8), 1)) {
24 printf("sizeof(Uint8) != 1, instead = %ul\n", 25 if (verbose)
25 sizeof(Uint8)); 26 printf ("sizeof(Uint8) != 1, instead = %ul\n", sizeof (Uint8));
26 ++error; 27 ++error;
27 } 28 }
28 if ( badsize(sizeof(Uint16), 2) ) { 29 if (badsize (sizeof (Uint16), 2)) {
29 if ( verbose ) 30 if (verbose)
30 printf("sizeof(Uint16) != 2, instead = %ul\n", 31 printf ("sizeof(Uint16) != 2, instead = %ul\n", sizeof (Uint16));
31 sizeof(Uint16)); 32 ++error;
32 ++error; 33 }
33 } 34 if (badsize (sizeof (Uint32), 4)) {
34 if ( badsize(sizeof(Uint32), 4) ) { 35 if (verbose)
35 if ( verbose ) 36 printf ("sizeof(Uint32) != 4, instead = %ul\n", sizeof (Uint32));
36 printf("sizeof(Uint32) != 4, instead = %ul\n", 37 ++error;
37 sizeof(Uint32)); 38 }
38 ++error;
39 }
40 #ifdef SDL_HAS_64BIT_TYPE 39 #ifdef SDL_HAS_64BIT_TYPE
41 if ( badsize(sizeof(Uint64), 8) ) { 40 if (badsize (sizeof (Uint64), 8)) {
42 if ( verbose ) 41 if (verbose)
43 printf("sizeof(Uint64) != 8, instead = %ul\n", 42 printf ("sizeof(Uint64) != 8, instead = %ul\n", sizeof (Uint64));
44 sizeof(Uint64)); 43 ++error;
45 ++error; 44 }
46 } 45 #else
47 #else 46 if (verbose) {
48 if ( verbose ) { 47 printf ("WARNING: No 64-bit datatype on this platform\n");
49 printf("WARNING: No 64-bit datatype on this platform\n"); 48 }
50 } 49 #endif
51 #endif 50 if (verbose && !error)
52 if ( verbose && !error ) 51 printf ("All data types are the expected size.\n");
53 printf("All data types are the expected size.\n"); 52
54 53 return (error ? 1 : 0);
55 return( error ? 1 : 0 ); 54 }
56 } 55
57 56 int
58 int TestEndian(SDL_bool verbose) 57 TestEndian (SDL_bool verbose)
59 { 58 {
60 int error = 0; 59 int error = 0;
61 Uint16 value = 0x1234; 60 Uint16 value = 0x1234;
62 int real_byteorder; 61 int real_byteorder;
63 Uint16 value16 = 0xCDAB; 62 Uint16 value16 = 0xCDAB;
64 Uint16 swapped16 = 0xABCD; 63 Uint16 swapped16 = 0xABCD;
65 Uint32 value32 = 0xEFBEADDE; 64 Uint32 value32 = 0xEFBEADDE;
66 Uint32 swapped32 = 0xDEADBEEF; 65 Uint32 swapped32 = 0xDEADBEEF;
67 #ifdef SDL_HAS_64BIT_TYPE 66 #ifdef SDL_HAS_64BIT_TYPE
68 Uint64 value64, swapped64; 67 Uint64 value64, swapped64;
69 value64 = 0xEFBEADDE; 68 value64 = 0xEFBEADDE;
70 value64 <<= 32; 69 value64 <<= 32;
71 value64 |= 0xCDAB3412; 70 value64 |= 0xCDAB3412;
72 swapped64 = 0x1234ABCD; 71 swapped64 = 0x1234ABCD;
73 swapped64 <<= 32; 72 swapped64 <<= 32;
74 swapped64 |= 0xDEADBEEF; 73 swapped64 |= 0xDEADBEEF;
75 #endif 74 #endif
76 75
77 if ( verbose ) { 76 if (verbose) {
78 printf("Detected a %s endian machine.\n", 77 printf ("Detected a %s endian machine.\n",
79 (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big"); 78 (SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");
80 } 79 }
81 if ( (*((char *)&value) >> 4) == 0x1 ) { 80 if ((*((char *) &value) >> 4) == 0x1) {
82 real_byteorder = SDL_BIG_ENDIAN; 81 real_byteorder = SDL_BIG_ENDIAN;
83 } else { 82 } else {
84 real_byteorder = SDL_LIL_ENDIAN; 83 real_byteorder = SDL_LIL_ENDIAN;
85 } 84 }
86 if ( real_byteorder != SDL_BYTEORDER ) { 85 if (real_byteorder != SDL_BYTEORDER) {
87 if ( verbose ) { 86 if (verbose) {
88 printf("Actually a %s endian machine!\n", 87 printf ("Actually a %s endian machine!\n",
89 (real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big"); 88 (real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big");
90 } 89 }
91 ++error; 90 ++error;
92 } 91 }
93 if ( verbose ) { 92 if (verbose) {
94 printf("Value 16 = 0x%X, swapped = 0x%X\n", value16, SDL_Swap16(value16)); 93 printf ("Value 16 = 0x%X, swapped = 0x%X\n", value16,
95 } 94 SDL_Swap16 (value16));
96 if ( SDL_Swap16(value16) != swapped16 ) { 95 }
97 if ( verbose ) { 96 if (SDL_Swap16 (value16) != swapped16) {
98 printf("16 bit value swapped incorrectly!\n"); 97 if (verbose) {
99 } 98 printf ("16 bit value swapped incorrectly!\n");
100 ++error; 99 }
101 } 100 ++error;
102 if ( verbose ) { 101 }
103 printf("Value 32 = 0x%X, swapped = 0x%X\n", value32, SDL_Swap32(value32)); 102 if (verbose) {
104 } 103 printf ("Value 32 = 0x%X, swapped = 0x%X\n", value32,
105 if ( SDL_Swap32(value32) != swapped32 ) { 104 SDL_Swap32 (value32));
106 if ( verbose ) { 105 }
107 printf("32 bit value swapped incorrectly!\n"); 106 if (SDL_Swap32 (value32) != swapped32) {
108 } 107 if (verbose) {
109 ++error; 108 printf ("32 bit value swapped incorrectly!\n");
110 } 109 }
110 ++error;
111 }
111 #ifdef SDL_HAS_64BIT_TYPE 112 #ifdef SDL_HAS_64BIT_TYPE
112 if ( verbose ) { 113 if (verbose) {
113 #ifdef _MSC_VER 114 #ifdef _MSC_VER
114 printf("Value 64 = 0x%I64X, swapped = 0x%I64X\n", value64, SDL_Swap64(value64)); 115 printf ("Value 64 = 0x%I64X, swapped = 0x%I64X\n", value64,
115 #else 116 SDL_Swap64 (value64));
116 printf("Value 64 = 0x%llX, swapped = 0x%llX\n", value64, SDL_Swap64(value64)); 117 #else
117 #endif 118 printf ("Value 64 = 0x%llX, swapped = 0x%llX\n", value64,
118 } 119 SDL_Swap64 (value64));
119 if ( SDL_Swap64(value64) != swapped64 ) { 120 #endif
120 if ( verbose ) { 121 }
121 printf("64 bit value swapped incorrectly!\n"); 122 if (SDL_Swap64 (value64) != swapped64) {
122 } 123 if (verbose) {
123 ++error; 124 printf ("64 bit value swapped incorrectly!\n");
124 } 125 }
125 #endif 126 ++error;
126 return( error ? 1 : 0 ); 127 }
127 } 128 #endif
128 129 return (error ? 1 : 0);
129 130 }
130 int TestCPUInfo(SDL_bool verbose) 131
131 { 132
132 if ( verbose ) { 133 int
133 printf("RDTSC %s\n", SDL_HasRDTSC() ? "detected" : "not detected"); 134 TestCPUInfo (SDL_bool verbose)
134 printf("MMX %s\n", SDL_HasMMX() ? "detected" : "not detected"); 135 {
135 printf("MMX Ext %s\n", SDL_HasMMXExt() ? "detected" : "not detected"); 136 if (verbose) {
136 printf("3DNow %s\n", SDL_Has3DNow() ? "detected" : "not detected"); 137 printf ("RDTSC %s\n", SDL_HasRDTSC ()? "detected" : "not detected");
137 printf("3DNow Ext %s\n", SDL_Has3DNowExt() ? "detected" : "not detected"); 138 printf ("MMX %s\n", SDL_HasMMX ()? "detected" : "not detected");
138 printf("SSE %s\n", SDL_HasSSE() ? "detected" : "not detected"); 139 printf ("MMX Ext %s\n",
139 printf("SSE2 %s\n", SDL_HasSSE2() ? "detected" : "not detected"); 140 SDL_HasMMXExt ()? "detected" : "not detected");
140 printf("AltiVec %s\n", SDL_HasAltiVec() ? "detected" : "not detected"); 141 printf ("3DNow %s\n", SDL_Has3DNow ()? "detected" : "not detected");
141 } 142 printf ("3DNow Ext %s\n",
142 return(0); 143 SDL_Has3DNowExt ()? "detected" : "not detected");
143 } 144 printf ("SSE %s\n", SDL_HasSSE ()? "detected" : "not detected");
144 145 printf ("SSE2 %s\n", SDL_HasSSE2 ()? "detected" : "not detected");
145 int main(int argc, char *argv[]) 146 printf ("AltiVec %s\n",
146 { 147 SDL_HasAltiVec ()? "detected" : "not detected");
147 SDL_bool verbose = SDL_TRUE; 148 }
148 int status = 0; 149 return (0);
149 150 }
150 if ( argv[1] && (SDL_strcmp(argv[1], "-q") == 0) ) { 151
151 verbose = SDL_FALSE; 152 int
152 } 153 main (int argc, char *argv[])
153 if ( verbose ) { 154 {
154 printf("This system is running %s\n", 155 SDL_bool verbose = SDL_TRUE;
156 int status = 0;
157
158 if (argv[1] && (SDL_strcmp (argv[1], "-q") == 0)) {
159 verbose = SDL_FALSE;
160 }
161 if (verbose) {
162 printf ("This system is running %s\n",
155 #if __AIX__ 163 #if __AIX__
156 "AIX" 164 "AIX"
157 #elif __AMIGA__ 165 #elif __AMIGA__
158 "AmigaOS" 166 "AmigaOS"
159 #elif __BEOS__ 167 #elif __BEOS__
160 "BeOS" 168 "BeOS"
161 #elif __BSDI__ 169 #elif __BSDI__
162 "BSDI" 170 "BSDI"
163 #elif __DREAMCAST__ 171 #elif __DREAMCAST__
164 "Dreamcast" 172 "Dreamcast"
165 #elif __FREEBSD__ 173 #elif __FREEBSD__
166 "FreeBSD" 174 "FreeBSD"
167 #elif __HPUX__ 175 #elif __HPUX__
168 "HP-UX" 176 "HP-UX"
169 #elif __IRIX__ 177 #elif __IRIX__
170 "Irix" 178 "Irix"
171 #elif __LINUX__ 179 #elif __LINUX__
172 "Linux" 180 "Linux"
173 #elif __MINT__ 181 #elif __MINT__
174 "Atari MiNT" 182 "Atari MiNT"
175 #elif __MACOS__ 183 #elif __MACOS__
176 "MacOS Classic" 184 "MacOS Classic"
177 #elif __MACOSX__ 185 #elif __MACOSX__
178 "Mac OS X" 186 "Mac OS X"
179 #elif __NETBSD__ 187 #elif __NETBSD__
180 "NetBSD" 188 "NetBSD"
181 #elif __OPENBSD__ 189 #elif __OPENBSD__
182 "OpenBSD" 190 "OpenBSD"
183 #elif __OS2__ 191 #elif __OS2__
184 "OS/2" 192 "OS/2"
185 #elif __OSF__ 193 #elif __OSF__
186 "OSF/1" 194 "OSF/1"
187 #elif __QNXNTO__ 195 #elif __QNXNTO__
188 "QNX Neutrino" 196 "QNX Neutrino"
189 #elif __RISCOS__ 197 #elif __RISCOS__
190 "RISC OS" 198 "RISC OS"
191 #elif __SOLARIS__ 199 #elif __SOLARIS__
192 "Solaris" 200 "Solaris"
193 #elif __WIN32__ 201 #elif __WIN32__
194 #ifdef _WIN32_WCE 202 #ifdef _WIN32_WCE
195 "Windows CE" 203 "Windows CE"
196 #else 204 #else
197 "Windows" 205 "Windows"
198 #endif 206 #endif
199 #else 207 #else
200 "an unknown operating system! (see SDL_platform.h)" 208 "an unknown operating system! (see SDL_platform.h)"
201 #endif 209 #endif
202 ); 210 );
203 } 211 }
204 212
205 status += TestTypes(verbose); 213 status += TestTypes (verbose);
206 status += TestEndian(verbose); 214 status += TestEndian (verbose);
207 status += TestCPUInfo(verbose); 215 status += TestCPUInfo (verbose);
208 return status; 216 return status;
209 } 217 }