Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
26 | pmbaty | 1 | /* ACC -- Automatic Compiler Configuration |
2 | |||
3 | Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer |
||
4 | All Rights Reserved. |
||
5 | |||
6 | This software is a copyrighted work licensed under the terms of |
||
7 | the GNU General Public License. Please consult the file "ACC_LICENSE" |
||
8 | for details. |
||
9 | |||
10 | Markus F.X.J. Oberhumer |
||
11 | <markus@oberhumer.com> |
||
12 | http://www.oberhumer.com/ |
||
13 | */ |
||
14 | |||
15 | |||
16 | /*********************************************************************** |
||
17 | // |
||
18 | ************************************************************************/ |
||
19 | |||
20 | #if (ACC_CC_GNUC >= 0x020800ul) /* 2.8.0 */ |
||
21 | # define __acc_gnuc_extension__ __extension__ |
||
22 | #else |
||
23 | # define __acc_gnuc_extension__ |
||
24 | #endif |
||
25 | |||
26 | #if (SIZEOF_LONG_LONG > 0) |
||
27 | __acc_gnuc_extension__ typedef long long acc_llong_t; |
||
28 | #endif |
||
29 | #if (SIZEOF_UNSIGNED_LONG_LONG > 0) |
||
30 | __acc_gnuc_extension__ typedef unsigned long long acc_ullong_t; |
||
31 | #endif |
||
32 | |||
33 | #if (!(SIZEOF_SHORT > 0 && SIZEOF_INT > 0 && SIZEOF_LONG > 0)) |
||
34 | # error "missing defines for sizes" |
||
35 | #endif |
||
36 | #if (!(SIZEOF_PTRDIFF_T > 0 && SIZEOF_SIZE_T > 0 && SIZEOF_VOID_P > 0 && SIZEOF_CHAR_P > 0)) |
||
37 | # error "missing defines for sizes" |
||
38 | #endif |
||
39 | |||
40 | |||
41 | /*********************************************************************** |
||
42 | // some <stdint.h> types: |
||
43 | // required: least & fast: acc_int32l_t, acc_int32f_t |
||
44 | // optional: exact32 acc_int32e_t |
||
45 | // optional: least64 acc_int64l_t |
||
46 | ************************************************************************/ |
||
47 | |||
48 | /* acc_int32e_t is int32_t in <stdint.h> terminology */ |
||
49 | #if !defined(acc_int32e_t) |
||
50 | #if (SIZEOF_INT == 4) |
||
51 | # define acc_int32e_t int |
||
52 | # define acc_uint32e_t unsigned int |
||
53 | # define ACC_INT32E_C(c) c |
||
54 | # define ACC_UINT32E_C(c) c##U |
||
55 | #elif (SIZEOF_LONG == 4) |
||
56 | # define acc_int32e_t long int |
||
57 | # define acc_uint32e_t unsigned long int |
||
58 | # define ACC_INT32E_C(c) c##L |
||
59 | # define ACC_UINT32E_C(c) c##UL |
||
60 | #elif (SIZEOF_SHORT == 4) |
||
61 | # define acc_int32e_t short int |
||
62 | # define acc_uint32e_t unsigned short int |
||
63 | # define ACC_INT32E_C(c) c |
||
64 | # define ACC_UINT32E_C(c) c##U |
||
65 | #elif (SIZEOF_LONG_LONG == 4 && SIZEOF_UNSIGNED_LONG_LONG == 4) |
||
66 | # define acc_int32e_t acc_llong_t |
||
67 | # define acc_uint32e_t acc_ullong_t |
||
68 | # define ACC_INT32E_C(c) c##LL |
||
69 | # define ACC_UINT32E_C(c) c##ULL |
||
70 | #elif (SIZEOF___INT32 == 4 && SIZEOF_UNSIGNED___INT32 == 4) |
||
71 | # define acc_int32e_t __int32 |
||
72 | # define acc_uint32e_t unsigned __int32 |
||
73 | # if (SIZEOF_INT > 4) |
||
74 | # define ACC_INT32E_C(c) c |
||
75 | # define ACC_UINT32E_C(c) c##U |
||
76 | # elif (SIZEOF_LONG > 4) |
||
77 | # define ACC_INT32E_C(c) c##L |
||
78 | # define ACC_UINT32E_C(c) c##UL |
||
79 | # else |
||
80 | # define ACC_INT32E_C(c) c##i32 |
||
81 | # define ACC_UINT32E_C(c) c##ui32 |
||
82 | # endif |
||
83 | #else |
||
84 | /* no exact 32-bit integral type on this machine */ |
||
85 | #endif |
||
86 | #endif |
||
87 | #if defined(acc_int32e_t) |
||
88 | # define SIZEOF_ACC_INT32E_T 4 |
||
89 | #endif |
||
90 | |||
91 | |||
92 | /* acc_int32l_t is int_least32_t in <stdint.h> terminology */ |
||
93 | #if !defined(acc_int32l_t) |
||
94 | #if defined(acc_int32e_t) |
||
95 | # define acc_int32l_t acc_int32e_t |
||
96 | # define acc_uint32l_t acc_uint32e_t |
||
97 | # define ACC_INT32L_C(c) ACC_INT32E_C(c) |
||
98 | # define ACC_UINT32L_C(c) ACC_UINT32E_C(c) |
||
99 | # define SIZEOF_ACC_INT32L_T SIZEOF_ACC_INT32E_T |
||
100 | #elif (SIZEOF_INT > 4) |
||
101 | # define acc_int32l_t int |
||
102 | # define acc_uint32l_t unsigned int |
||
103 | # define ACC_INT32L_C(c) c |
||
104 | # define ACC_UINT32L_C(c) c##U |
||
105 | # define SIZEOF_ACC_INT32L_T SIZEOF_INT |
||
106 | #elif (SIZEOF_LONG > 4) |
||
107 | # define acc_int32l_t long int |
||
108 | # define acc_uint32l_t unsigned long int |
||
109 | # define ACC_INT32L_C(c) c##L |
||
110 | # define ACC_UINT32L_C(c) c##UL |
||
111 | # define SIZEOF_ACC_INT32L_T SIZEOF_LONG |
||
112 | #else |
||
113 | # error "acc_int32l_t" |
||
114 | #endif |
||
115 | #endif |
||
116 | |||
117 | |||
118 | /* acc_int32f_t is int_fast32_t in <stdint.h> terminology */ |
||
119 | #if !defined(acc_int32f_t) |
||
120 | #if (SIZEOF_INT >= 4) |
||
121 | # define acc_int32f_t int |
||
122 | # define acc_uint32f_t unsigned int |
||
123 | # define ACC_INT32F_C(c) c |
||
124 | # define ACC_UINT32F_C(c) c##U |
||
125 | # define SIZEOF_ACC_INT32F_T SIZEOF_INT |
||
126 | #elif (SIZEOF_LONG >= 4) |
||
127 | # define acc_int32f_t long int |
||
128 | # define acc_uint32f_t unsigned long int |
||
129 | # define ACC_INT32F_C(c) c##L |
||
130 | # define ACC_UINT32F_C(c) c##UL |
||
131 | # define SIZEOF_ACC_INT32F_T SIZEOF_LONG |
||
132 | #elif defined(acc_int32e_t) |
||
133 | # define acc_int32f_t acc_int32e_t |
||
134 | # define acc_uint32f_t acc_uint32e_t |
||
135 | # define ACC_INT32F_C(c) ACC_INT32E_C(c) |
||
136 | # define ACC_UINT32F_C(c) ACC_UINT32E_C(c) |
||
137 | # define SIZEOF_ACC_INT32F_T SIZEOF_ACC_INT32E_T |
||
138 | #else |
||
139 | # error "acc_int32f_t" |
||
140 | #endif |
||
141 | #endif |
||
142 | |||
143 | |||
144 | /* acc_int64l_t is int_least64_t in <stdint.h> terminology */ |
||
145 | #if !defined(acc_int64l_t) |
||
146 | #if (SIZEOF___INT64 >= 8 && SIZEOF_UNSIGNED___INT64 >= 8) |
||
147 | # if (ACC_CC_BORLANDC) && !defined(ACC_CONFIG_PREFER___INT64) |
||
148 | # define ACC_CONFIG_PREFER___INT64 1 |
||
149 | # endif |
||
150 | #endif |
||
151 | #if (SIZEOF_INT >= 8) |
||
152 | # define acc_int64l_t int |
||
153 | # define acc_uint64l_t unsigned int |
||
154 | # define ACC_INT64L_C(c) c |
||
155 | # define ACC_UINT64L_C(c) c##U |
||
156 | # define SIZEOF_ACC_INT64L_T SIZEOF_INT |
||
157 | #elif (SIZEOF_LONG >= 8) |
||
158 | # define acc_int64l_t long int |
||
159 | # define acc_uint64l_t unsigned long int |
||
160 | # define ACC_INT64L_C(c) c##L |
||
161 | # define ACC_UINT64L_C(c) c##UL |
||
162 | # define SIZEOF_ACC_INT64L_T SIZEOF_LONG |
||
163 | #elif (SIZEOF_LONG_LONG >= 8 && SIZEOF_UNSIGNED_LONG_LONG >= 8) && !defined(ACC_CONFIG_PREFER___INT64) |
||
164 | # define acc_int64l_t acc_llong_t |
||
165 | # define acc_uint64l_t acc_ullong_t |
||
166 | # if (ACC_CC_BORLANDC) |
||
167 | # define ACC_INT64L_C(c) ((c) + 0ll) |
||
168 | # define ACC_UINT64L_C(c) ((c) + 0ull) |
||
169 | # else |
||
170 | # define ACC_INT64L_C(c) c##LL |
||
171 | # define ACC_UINT64L_C(c) c##ULL |
||
172 | # endif |
||
173 | # define SIZEOF_ACC_INT64L_T SIZEOF_LONG_LONG |
||
174 | #elif (SIZEOF___INT64 >= 8 && SIZEOF_UNSIGNED___INT64 >= 8) |
||
175 | # define acc_int64l_t __int64 |
||
176 | # define acc_uint64l_t unsigned __int64 |
||
177 | # if (ACC_CC_BORLANDC) |
||
178 | # define ACC_INT64L_C(c) ((c) + 0i64) |
||
179 | # define ACC_UINT64L_C(c) ((c) + 0ui64) |
||
180 | # else |
||
181 | # define ACC_INT64L_C(c) c##i64 |
||
182 | # define ACC_UINT64L_C(c) c##ui64 |
||
183 | # endif |
||
184 | # define SIZEOF_ACC_INT64L_T SIZEOF___INT64 |
||
185 | #else |
||
186 | /* no least 64-bit integral type on this machine */ |
||
187 | #endif |
||
188 | #endif |
||
189 | |||
190 | |||
191 | #if !defined(acc_intptr_t) |
||
192 | #if (ACC_ARCH_IA32 && ACC_CC_MSC && (_MSC_VER >= 1300)) |
||
193 | typedef __w64 int acc_intptr_t; |
||
194 | typedef __w64 unsigned int acc_uintptr_t; |
||
195 | # define acc_intptr_t acc_intptr_t |
||
196 | # define acc_uintptr_t acc_uintptr_t |
||
197 | # define SIZEOF_ACC_INTPTR_T SIZEOF_INT |
||
198 | #elif (SIZEOF_INT >= SIZEOF_VOID_P) |
||
199 | # define acc_intptr_t int |
||
200 | # define acc_uintptr_t unsigned int |
||
201 | # define SIZEOF_ACC_INTPTR_T SIZEOF_INT |
||
202 | #elif (SIZEOF_LONG >= SIZEOF_VOID_P) |
||
203 | # define acc_intptr_t long |
||
204 | # define acc_uintptr_t unsigned long |
||
205 | # define SIZEOF_ACC_INTPTR_T SIZEOF_LONG |
||
206 | #elif (SIZEOF_ACC_INT64L_T >= SIZEOF_VOID_P) |
||
207 | # define acc_intptr_t acc_int64l_t |
||
208 | # define acc_uintptr_t acc_uint64l_t |
||
209 | # define SIZEOF_ACC_INTPTR_T SIZEOF_ACC_INT64L_T |
||
210 | #else |
||
211 | # error "acc_intptr_t" |
||
212 | #endif |
||
213 | #endif |
||
214 | |||
215 | |||
216 | /* workaround for broken compilers */ |
||
217 | #if (ACC_BROKEN_INTEGRAL_CONSTANTS) |
||
218 | # undef ACC_INT32E_C |
||
219 | # undef ACC_UINT32E_C |
||
220 | # undef ACC_INT32L_C |
||
221 | # undef ACC_UINT32L_C |
||
222 | # undef ACC_INT32F_C |
||
223 | # undef ACC_UINT32F_C |
||
224 | # if (SIZEOF_INT == 4) |
||
225 | # define ACC_INT32E_C(c) ((c) + 0) |
||
226 | # define ACC_UINT32E_C(c) ((c) + 0U) |
||
227 | # define ACC_INT32L_C(c) ((c) + 0) |
||
228 | # define ACC_UINT32L_C(c) ((c) + 0U) |
||
229 | # define ACC_INT32F_C(c) ((c) + 0) |
||
230 | # define ACC_UINT32F_C(c) ((c) + 0U) |
||
231 | # elif (SIZEOF_LONG == 4) |
||
232 | # define ACC_INT32E_C(c) ((c) + 0L) |
||
233 | # define ACC_UINT32E_C(c) ((c) + 0UL) |
||
234 | # define ACC_INT32L_C(c) ((c) + 0L) |
||
235 | # define ACC_UINT32L_C(c) ((c) + 0UL) |
||
236 | # define ACC_INT32F_C(c) ((c) + 0L) |
||
237 | # define ACC_UINT32F_C(c) ((c) + 0UL) |
||
238 | # else |
||
239 | # error "integral constants" |
||
240 | # endif |
||
241 | #endif |
||
242 | |||
243 | |||
244 | /*********************************************************************** |
||
245 | // calling conventions |
||
246 | ************************************************************************/ |
||
247 | |||
248 | #if (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64) |
||
249 | # if (ACC_CC_GNUC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_PACIFICC) |
||
250 | # elif (ACC_CC_DMC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC) |
||
251 | # define __acc_cdecl __cdecl |
||
252 | # define __acc_cdecl_atexit |
||
253 | # define __acc_cdecl_main __cdecl |
||
254 | # if (ACC_OS_OS2 && (ACC_CC_DMC || ACC_CC_SYMANTECC)) |
||
255 | # define __acc_cdecl_qsort __pascal |
||
256 | # elif (ACC_OS_OS2 && (ACC_CC_ZORTECHC)) |
||
257 | # define __acc_cdecl_qsort _stdcall |
||
258 | # else |
||
259 | # define __acc_cdecl_qsort __cdecl |
||
260 | # endif |
||
261 | # elif (ACC_CC_WATCOMC) |
||
262 | # define __acc_cdecl __cdecl |
||
263 | # else |
||
264 | # define __acc_cdecl __cdecl |
||
265 | # define __acc_cdecl_atexit __cdecl |
||
266 | # define __acc_cdecl_main __cdecl |
||
267 | # define __acc_cdecl_qsort __cdecl |
||
268 | # endif |
||
269 | # if (ACC_CC_GNUC || ACC_CC_HIGHC || ACC_CC_NDPC || ACC_CC_PACIFICC || ACC_CC_WATCOMC) |
||
270 | # elif (ACC_OS_OS2 && (ACC_CC_DMC || ACC_CC_SYMANTECC)) |
||
271 | # define __acc_cdecl_sighandler __pascal |
||
272 | # elif (ACC_OS_OS2 && (ACC_CC_ZORTECHC)) |
||
273 | # define __acc_cdecl_sighandler _stdcall |
||
274 | # elif (ACC_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE) |
||
275 | # define __acc_cdecl_sighandler __clrcall |
||
276 | # elif (ACC_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700)) |
||
277 | # if defined(_DLL) |
||
278 | # define __acc_cdecl_sighandler _far _cdecl _loadds |
||
279 | # elif defined(_MT) |
||
280 | # define __acc_cdecl_sighandler _far _cdecl |
||
281 | # else |
||
282 | # define __acc_cdecl_sighandler _cdecl |
||
283 | # endif |
||
284 | # else |
||
285 | # define __acc_cdecl_sighandler __cdecl |
||
286 | # endif |
||
287 | #elif (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC)) |
||
288 | # define __acc_cdecl cdecl |
||
289 | #endif |
||
290 | |||
291 | #if !defined(__acc_cdecl) |
||
292 | # define __acc_cdecl |
||
293 | #endif |
||
294 | #if !defined(__acc_cdecl_atexit) |
||
295 | # define __acc_cdecl_atexit |
||
296 | #endif |
||
297 | #if !defined(__acc_cdecl_main) |
||
298 | # define __acc_cdecl_main |
||
299 | #endif |
||
300 | #if !defined(__acc_cdecl_qsort) |
||
301 | # define __acc_cdecl_qsort |
||
302 | #endif |
||
303 | #if !defined(__acc_cdecl_sighandler) |
||
304 | # define __acc_cdecl_sighandler |
||
305 | #endif |
||
306 | #if !defined(__acc_cdecl_va) |
||
307 | # define __acc_cdecl_va __acc_cdecl |
||
308 | #endif |
||
309 | |||
310 | #if (ACC_BROKEN_CDECL_ALT_SYNTAX) |
||
311 | typedef void __acc_cdecl_sighandler (*acc_sighandler_t)(int); |
||
312 | #elif defined(RETSIGTYPE) |
||
313 | typedef RETSIGTYPE (__acc_cdecl_sighandler *acc_sighandler_t)(int); |
||
314 | #else |
||
315 | typedef void (__acc_cdecl_sighandler *acc_sighandler_t)(int); |
||
316 | #endif |
||
317 | |||
318 | |||
319 | /* |
||
320 | vi:ts=4:et |
||
321 | */ |