|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: File: ConditionalMacros.h
24:
25: Contains: Set up for compiler independent conditionals
26:
27: Version: Universal Interface Files 3.2+
28:
29: DRI: Nick Kledzik
30:
31: Copyright: � 1993-1999 by Apple Computer, Inc., all rights reserved
32:
33: Warning: *** APPLE INTERNAL USE ONLY ***
34: This file may contain unreleased API's
35:
36: BuildInfo: Built by: Scott Roberts
37: On: 6/6/99 12:29 PM
38: With Interfacer: 3.0d13 (MPW PowerPC)
39: From: ConditionalMacros.i
40: Revision: 116
41: Dated: 5/19/99
42: Last change by: dle
43: Last comment: Allow developers to set single Carbon conditionals w/MachO
44:
45: Bugs: Report bugs to Radar component "System Interfaces", "Latest"
46: List the version information (from above) in the Problem Description.
47:
48: */
49: #ifndef __CONDITIONALMACROS__
50: #define __CONDITIONALMACROS__
51:
52: /****************************************************************************************************
53: UNIVERSAL_INTERFACES_VERSION
54:
55: 0x0320 => version 3.2
56: 0x0310 => version 3.1
57: 0x0301 => version 3.0.1
58: 0x0300 => version 3.0
59: 0x0210 => version 2.1
60: This conditional did not exist prior to version 2.1
61: ****************************************************************************************************/
62: #define UNIVERSAL_INTERFACES_VERSION 0x0321
63:
64: /****************************************************************************************************
65:
66: TARGET_CPU_�
67: These conditionals specify which microprocessor instruction set is being
68: generated. At most one of these is true, the rest are false.
69:
70: TARGET_CPU_PPC - Compiler is generating PowerPC instructions
71: TARGET_CPU_68K - Compiler is generating 680x0 instructions
72: TARGET_CPU_X86 - Compiler is generating x86 instructions
73: TARGET_CPU_MIPS - Compiler is generating MIPS instructions
74: TARGET_CPU_SPARC - Compiler is generating Sparc instructions
75: TARGET_CPU_ALPHA - Compiler is generating Dec Alpha instructions
76:
77:
78: TARGET_OS_�
79: These conditionals specify in which Operating System the generated code will
80: run. At most one of the these is true, the rest are false.
81:
82: TARGET_OS_MAC - Generate code will run under Mac OS
83: TARGET_OS_WIN32 - Generate code will run under 32-bit Windows
84: TARGET_OS_UNIX - Generate code will run under some unix
85:
86:
87: TARGET_RT_�
88: These conditionals specify in which runtime the generated code will
89: run. This is needed when the OS and CPU support more than one runtime
90: (e.g. MacOS on 68K supports CFM68K and Classic 68k).
91:
92: TARGET_RT_LITTLE_ENDIAN - Generated code uses little endian format for integers
93: TARGET_RT_BIG_ENDIAN - Generated code uses big endian format for integers
94: TARGET_RT_MAC_CFM - TARGET_OS_MAC is true and CFM68K or PowerPC CFM (TVectors) are used
95: TARGET_RT_MAC_MACHO - TARGET_OS_MAC is true and Mach-O style runtime
96: TARGET_RT_MAC_68881 - TARGET_OS_MAC is true and 68881 floating point instructions used
97:
98:
99: TARGET__API_�_�
100: These conditionals are used to differentiate between sets of API's on the same
101: processor under the same OS. The first section after _API_ is the OS. The
102: second section is the API set. Unlike TARGET_OS_ and TARGET_CPU_, these
103: conditionals are not mutally exclusive. This file will attempt to auto-configure
104: all TARGET_API_�_� values, but will often need a TARGET_API_�_� value predefined
105: in order to disambiguate.
106:
107: TARGET_API_MAC_OS8 - Code is being compiled to run on System 7 through Mac OS 8.x
108: TARGET_API_MAC_CARBON - Code is being compiled to run on Mac OS 8 and Mac OS X via CarbonLib
109: TARGET_API_MACOS_X - Code is being compiled to run on Mac OS X
110:
111:
112: PRAGMA_�
113: These conditionals specify whether the compiler supports particular #pragma's
114:
115: PRAGMA_IMPORT - Compiler supports: #pragma import on/off/reset
116: PRAGMA_ONCE - Compiler supports: #pragma once
117: PRAGMA_STRUCT_ALIGN - Compiler supports: #pragma options align=mac68k/power/reset
118: PRAGMA_STRUCT_PACK - Compiler supports: #pragma pack(n)
119: PRAGMA_STRUCT_PACKPUSH - Compiler supports: #pragma pack(push, n)/pack(pop)
120: PRAGMA_ENUM_PACK - Compiler supports: #pragma options(!pack_enums)
121: PRAGMA_ENUM_ALWAYSINT - Compiler supports: #pragma enumsalwaysint on/off/reset
122: PRAGMA_ENUM_OPTIONS - Compiler supports: #pragma options enum=int/small/reset
123:
124:
125: FOUR_CHAR_CODE
126: This conditional does the proper byte swapping to assue that a four character code (e.g. 'TEXT')
127: is compiled down to the correct value on all compilers.
128:
129: FOUR_CHAR_CODE('abcd') - Convert a four-char-code to the correct 32-bit value
130:
131:
132: TYPE_�
133: These conditionals specify whether the compiler supports particular types.
134:
135: TYPE_LONGLONG - Compiler supports "long long" 64-bit integers
136: TYPE_BOOL - Compiler supports "bool"
137: TYPE_EXTENDED - Compiler supports "extended" 80/96 bit floating point
138:
139:
140: FUNCTION_�
141: These conditionals specify whether the compiler supports particular language extensions
142: to function prototypes and definitions.
143:
144: FUNCTION_PASCAL - Compiler supports "pascal void Foo()"
145: FUNCTION_DECLSPEC - Compiler supports "__declspec(xxx) void Foo()"
146: FUNCTION_WIN32CC - Compiler supports "void __cdecl Foo()" and "void __stdcall Foo()"
147:
148: ****************************************************************************************************/
149:
150: #if defined(__MRC__)
151: /*
152: MrC[pp] compiler from Apple Computer, Inc.
153: */
154: #define TARGET_CPU_PPC 1
155: #define TARGET_CPU_68K 0
156: #define TARGET_CPU_X86 0
157: #define TARGET_CPU_MIPS 0
158: #define TARGET_CPU_SPARC 0
159: #define TARGET_CPU_ALPHA 0
160: #define TARGET_OS_MAC 0
161: #define TARGET_OS_WIN32 0
162: #define TARGET_OS_UNIX 0
163: #define TARGET_RT_LITTLE_ENDIAN 0
164: #define TARGET_RT_BIG_ENDIAN 1
165: #define TARGET_RT_MAC_CFM 1
166: #define TARGET_RT_MAC_MACHO 0
167: #define TARGET_RT_MAC_68881 0
168: #if (__MRC__ > 0x0200) && (__MRC__ < 0x0700)
169: #define PRAGMA_IMPORT 1
170: #else
171: #define PRAGMA_IMPORT 0
172: #endif
173: #define PRAGMA_STRUCT_ALIGN 1
174: #define PRAGMA_ONCE 1
175: #define PRAGMA_STRUCT_PACK 0
176: #define PRAGMA_STRUCT_PACKPUSH 0
177: #define PRAGMA_ENUM_PACK 1
178: #define PRAGMA_ENUM_ALWAYSINT 0
179: #define PRAGMA_ENUM_OPTIONS 0
180: #define FOUR_CHAR_CODE(x) (x)
181:
182: #if (__MRC__ > 0x0300) && (__MRC__ < 0x0700)
183: #if __option(longlong)
184: #define TYPE_LONGLONG 1
185: #else
186: #define TYPE_LONGLONG 0
187: #endif
188: #if __option(bool)
189: #define TYPE_BOOL 1
190: #else
191: #define TYPE_BOOL 0
192: #endif
193: #define SLASH_INCLUDES_UNSUPPORTED !__option(unix_includes)
194: #else
195: #define TYPE_LONGLONG 0
196: #define TYPE_BOOL 0
197: #define SLASH_INCLUDES_UNSUPPORTED 1
198: #endif
199: #define TYPE_EXTENDED 0
200:
201: #define FUNCTION_PASCAL 1
202: #define FUNCTION_DECLSPEC 0
203: #define FUNCTION_WIN32CC 0
204:
205:
206:
207: #elif defined(__SC__) && (defined(MPW_CPLUS) || defined(MPW_C))
208: /*
209: SC[pp] compiler from Apple Computer, Inc.
210: */
211: #define TARGET_CPU_PPC 0
212: #define TARGET_CPU_68K 1
213: #define TARGET_CPU_X86 0
214: #define TARGET_CPU_MIPS 0
215: #define TARGET_CPU_SPARC 0
216: #define TARGET_CPU_ALPHA 0
217: #define TARGET_OS_MAC 0
218: #define TARGET_OS_WIN32 0
219: #define TARGET_OS_UNIX 0
220: #define TARGET_RT_LITTLE_ENDIAN 0
221: #define TARGET_RT_BIG_ENDIAN 1
222: #if defined(__CFM68K__)
223: #define TARGET_RT_MAC_CFM 1
224: #else
225: #define TARGET_RT_MAC_CFM 0
226: #endif
227: #define TARGET_RT_MAC_MACHO 0
228: #if defined(mc68881)
229: #define TARGET_RT_MAC_68881 1
230: #else
231: #define TARGET_RT_MAC_68881 0
232: #endif
233: #if TARGET_RT_MAC_CFM
234: #define PRAGMA_IMPORT 1
235: #if (__SC__ <= 0x0810)
236: /* old versions of SC don't support �#pragma import reset� */
237: #define PRAGMA_IMPORT_OFF 1
238: #endif
239: #else
240: #define PRAGMA_IMPORT 0
241: #endif
242: #if (__SC__ >= 0x0801)
243: #define PRAGMA_STRUCT_ALIGN 1
244: #else
245: #define PRAGMA_STRUCT_ALIGN 0
246: #endif
247: #define PRAGMA_ONCE 0
248: #define PRAGMA_STRUCT_PACK 0
249: #define PRAGMA_STRUCT_PACKPUSH 0
250: #define PRAGMA_ENUM_PACK 1
251: #define PRAGMA_ENUM_ALWAYSINT 0
252: #define PRAGMA_ENUM_OPTIONS 0
253: #define FOUR_CHAR_CODE(x) (x)
254:
255: #define TYPE_LONGLONG 0
256: #define TYPE_EXTENDED 1
257: #if (__SC__ > 0x0810)
258: #if __option(bool)
259: #define TYPE_BOOL 1
260: #else
261: #define TYPE_BOOL 0
262: #endif
263: #else
264: #define TYPE_BOOL 0
265: #endif
266: #if TARGET_RT_MAC_CFM
267: #define FUNCTION_PASCAL 0
268: #else
269: #define FUNCTION_PASCAL 1
270: #endif
271: #define FUNCTION_DECLSPEC 0
272: #define FUNCTION_WIN32CC 0
273: #define SLASH_INCLUDES_UNSUPPORTED !__option(unix_includes)
274:
275:
276: #elif defined(__MWERKS__)
277: /*
278: CodeWarrior compiler from Metrowerks, Inc.
279: */
280: #if (__MWERKS__ < 0x0900) || macintosh
281: #define TARGET_OS_MAC 0
282: #define TARGET_OS_WIN32 0
283: #define TARGET_OS_UNIX 0
284: #define TARGET_CPU_X86 0
285: #define TARGET_CPU_MIPS 0
286: #define TARGET_CPU_SPARC 0
287: #define TARGET_CPU_ALPHA 0
288: #define TARGET_RT_LITTLE_ENDIAN 0
289: #define TARGET_RT_BIG_ENDIAN 1
290: #if powerc
291: #define TARGET_CPU_PPC 1
292: #define TARGET_CPU_68K 0
293: #define TARGET_RT_MAC_CFM 1
294: #define TARGET_RT_MAC_MACHO 0
295: #define TARGET_RT_MAC_68881 0
296: #else
297: #define TARGET_CPU_PPC 0
298: #define TARGET_CPU_68K 1
299: #if defined(__CFM68K__)
300: #define TARGET_RT_MAC_CFM 1
301: #else
302: #define TARGET_RT_MAC_CFM 0
303: #endif
304: #define TARGET_RT_MAC_MACHO 0
305: #if __MC68881__
306: #define TARGET_RT_MAC_68881 1
307: #else
308: #define TARGET_RT_MAC_68881 0
309: #endif
310: #endif
311: #define PRAGMA_ONCE 1
312: #if (__MWERKS__ >= 0x0700)
313: #define PRAGMA_IMPORT TARGET_RT_MAC_CFM
314: #else
315: #define PRAGMA_IMPORT 0
316: #endif
317: #define PRAGMA_STRUCT_ALIGN 1
318: #define PRAGMA_STRUCT_PACK 0
319: #define PRAGMA_STRUCT_PACKPUSH 0
320: #define PRAGMA_ENUM_PACK 0
321: #define PRAGMA_ENUM_ALWAYSINT 1
322: #define PRAGMA_ENUM_OPTIONS 0
323: #define FOUR_CHAR_CODE(x) (x)
324: #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM
325: #define FUNCTION_PASCAL 1
326: #else
327: #define FUNCTION_PASCAL 1
328: #endif
329: #if (__MWERKS__ >= 0x2000)
330: #define FUNCTION_DECLSPEC 1
331: #else
332: #define FUNCTION_DECLSPEC 0
333: #endif
334: #define FUNCTION_WIN32CC 0
335:
336:
337: #elif (__MWERKS__ >= 0x0900) && __INTEL__
338: #define TARGET_CPU_PPC 0
339: #define TARGET_CPU_68K 0
340: #define TARGET_CPU_X86 1
341: #define TARGET_CPU_MIPS 0
342: #define TARGET_CPU_SPARC 0
343: #define TARGET_CPU_ALPHA 0
344: #define TARGET_OS_MAC 0
345: #define TARGET_OS_WIN32 1
346: #define TARGET_OS_UNIX 0
347: #define TARGET_RT_LITTLE_ENDIAN 1
348: #define TARGET_RT_BIG_ENDIAN 0
349: #define PRAGMA_ONCE 1
350: #define PRAGMA_IMPORT 0
351: #define PRAGMA_STRUCT_ALIGN 0
352: #define PRAGMA_STRUCT_PACK 1
353: #define PRAGMA_STRUCT_PACKPUSH 1
354: #define PRAGMA_ENUM_PACK 0
355: #define PRAGMA_ENUM_ALWAYSINT 1
356: #define PRAGMA_ENUM_OPTIONS 0
357: #define FOUR_CHAR_CODE(x) (x)
358: #define FUNCTION_PASCAL 0
359: #define FUNCTION_DECLSPEC 1
360: #define FUNCTION_WIN32CC 1
361:
362:
363: #elif (__MWERKS__ >= 0x1900) && __MIPS__
364: #define TARGET_CPU_PPC 0
365: #define TARGET_CPU_68K 0
366: #define TARGET_CPU_X86 0
367: #define TARGET_CPU_MIPS 1
368: #define TARGET_CPU_SPARC 0
369: #define TARGET_CPU_ALPHA 0
370: #define TARGET_OS_MAC 0
371: #define TARGET_OS_WIN32 0
372: #define TARGET_OS_UNIX 1
373: #if __option(little_endian)
374: #define TARGET_RT_LITTLE_ENDIAN 1
375: #define TARGET_RT_BIG_ENDIAN 0
376: #else
377: #define TARGET_RT_LITTLE_ENDIAN 0
378: #define TARGET_RT_BIG_ENDIAN 1
379: #endif
380: #define PRAGMA_ONCE 1
381: #define PRAGMA_IMPORT 0
382: #define PRAGMA_STRUCT_ALIGN 0
383: #define PRAGMA_STRUCT_PACK 1
384: #define PRAGMA_STRUCT_PACKPUSH 0
385: #define PRAGMA_ENUM_PACK 0
386: #define PRAGMA_ENUM_ALWAYSINT 1
387: #define PRAGMA_ENUM_OPTIONS 0
388: #define FOUR_CHAR_CODE(x) (x)
389: #define FUNCTION_PASCAL 0
390: #define FUNCTION_DECLSPEC 0
391: #define FUNCTION_WIN32CC 0
392:
393:
394: #elif (__MWERKS__ >= 0x2110) && __MACH__
395: #define TARGET_CPU_PPC 1
396: #define TARGET_CPU_68K 0
397: #define TARGET_CPU_X86 0
398: #define TARGET_CPU_MIPS 0
399: #define TARGET_CPU_SPARC 0
400: #define TARGET_CPU_ALPHA 0
401: #define TARGET_OS_MAC 0
402: #define TARGET_OS_WIN32 0
403: #define TARGET_OS_UNIX 0
404: #if __option(little_endian)
405: #define TARGET_RT_LITTLE_ENDIAN 1
406: #define TARGET_RT_BIG_ENDIAN 0
407: #else
408: #define TARGET_RT_LITTLE_ENDIAN 0
409: #define TARGET_RT_BIG_ENDIAN 1
410: #endif
411: #define TARGET_RT_MAC_CFM 0
412: #define TARGET_RT_MAC_MACHO 1
413: #define TARGET_RT_MAC_68881 0
414: #define PRAGMA_ONCE 1
415: #define PRAGMA_IMPORT 0
416: #define PRAGMA_STRUCT_ALIGN 1
417: #define PRAGMA_STRUCT_PACK 1
418: #define PRAGMA_STRUCT_PACKPUSH 0
419: #define PRAGMA_ENUM_PACK 0
420: #define PRAGMA_ENUM_ALWAYSINT 1
421: #define PRAGMA_ENUM_OPTIONS 0
422: #define FOUR_CHAR_CODE(x) (x)
423: #define FUNCTION_PASCAL 1
424: #define FUNCTION_DECLSPEC 1
425: #define FUNCTION_WIN32CC 0
426: #else
427: #error unknown Metrowerks compiler
428: #endif
429:
430:
431: #if (__MWERKS__ >= 0x1100)
432: #if __option(longlong)
433: #define TYPE_LONGLONG 1
434: #else
435: #define TYPE_LONGLONG 0
436: #endif
437: #else
438: #define TYPE_LONGLONG 0
439: #endif
440: #if (__MWERKS__ >= 0x1000)
441: #if __option(bool)
442: #define TYPE_BOOL 1
443: #else
444: #define TYPE_BOOL 0
445: #endif
446: #else
447: #define TYPE_BOOL 0
448: #endif
449: #define TYPE_EXTENDED 0
450: #define SLASH_INCLUDES_UNSUPPORTED 1
451:
452:
453: #elif defined(SYMANTEC_CPLUS) || defined(SYMANTEC_C)
454: /*
455: C and C++ compiler from Symantec, Inc.
456: */
457: #define TARGET_OS_MAC 0
458: #define TARGET_OS_WIN32 0
459: #define TARGET_OS_UNIX 0
460: #define TARGET_CPU_X86 0
461: #define TARGET_CPU_MIPS 0
462: #define TARGET_CPU_SPARC 0
463: #define TARGET_CPU_ALPHA 0
464: #define TARGET_RT_LITTLE_ENDIAN 0
465: #define TARGET_RT_BIG_ENDIAN 1
466: #if powerc
467: #define TARGET_CPU_PPC 1
468: #define TARGET_CPU_68K 0
469: #define TARGET_RT_MAC_CFM 1
470: #define TARGET_RT_MAC_MACHO 0
471: #define TARGET_RT_MAC_68881 0
472: #else
473: #define TARGET_CPU_PPC 0
474: #define TARGET_CPU_68K 1
475: #if defined(__CFM68K)
476: #define TARGET_RT_MAC_CFM 1
477: #else
478: #define TARGET_RT_MAC_CFM 0
479: #endif
480: #define TARGET_RT_MAC_MACHO 0
481: #if mc68881
482: #define TARGET_RT_MAC_68881 1
483: #else
484: #define TARGET_RT_MAC_68881 0
485: #endif
486: #endif
487: #define PRAGMA_IMPORT 0
488: #define PRAGMA_ONCE 1
489: #define PRAGMA_STRUCT_ALIGN 1
490: #define PRAGMA_STRUCT_PACK 0
491: #define PRAGMA_STRUCT_PACKPUSH 0
492: #define PRAGMA_ENUM_PACK 1
493: #define PRAGMA_ENUM_ALWAYSINT 0
494: #define PRAGMA_ENUM_OPTIONS 0
495: #define FOUR_CHAR_CODE(x) (x)
496:
497: #if __useAppleExts__
498: #define TYPE_EXTENDED 1
499: #else
500: #define TYPE_EXTENDED 0
501: #endif
502: #define TYPE_LONGLONG 0
503: #define TYPE_BOOL 0
504:
505: #define FUNCTION_PASCAL 0
506: #define FUNCTION_DECLSPEC 0
507: #define FUNCTION_WIN32CC 0
508: #define SLASH_INCLUDES_UNSUPPORTED 1
509:
510:
511: #elif defined(THINK_C)
512: /*
513: THINK C compiler from Symantec, Inc. << WARNING: Unsupported Compiler >>
514: */
515: #define TARGET_CPU_PPC 0
516: #define TARGET_CPU_68K 1
517: #define TARGET_CPU_X86 0
518: #define TARGET_CPU_MIPS 0
519: #define TARGET_CPU_SPARC 0
520: #define TARGET_CPU_ALPHA 0
521: #define TARGET_OS_MAC 0
522: #define TARGET_OS_WIN32 0
523: #define TARGET_OS_UNIX 0
524: #define TARGET_RT_LITTLE_ENDIAN 0
525: #define TARGET_RT_BIG_ENDIAN 1
526: #define TARGET_RT_MAC_CFM 0
527: #define TARGET_RT_MAC_MACHO 0
528: #if defined(mc68881)
529: #define TARGET_RT_MAC_68881 1
530: #else
531: #define TARGET_RT_MAC_68881 0
532: #endif
533: #define PRAGMA_IMPORT 0
534: #define PRAGMA_STRUCT_ALIGN 0
535: #define PRAGMA_ONCE 1
536: #define PRAGMA_STRUCT_PACK 0
537: #define PRAGMA_STRUCT_PACKPUSH 0
538: #define PRAGMA_ENUM_PACK 1
539: #define PRAGMA_ENUM_ALWAYSINT 0
540: #define PRAGMA_ENUM_OPTIONS 0
541: #define FOUR_CHAR_CODE(x) (x)
542:
543: #define TYPE_EXTENDED 1
544: #define TYPE_LONGLONG 0
545: #define TYPE_BOOL 0
546:
547: #define FUNCTION_PASCAL 1
548: #define FUNCTION_DECLSPEC 0
549: #define FUNCTION_WIN32CC 0
550: #define SLASH_INCLUDES_UNSUPPORTED 1
551:
552:
553: #elif defined(__PPCC__)
554: /*
555: PPCC compiler from Apple Computer, Inc. << WARNING: Unsupported Compiler >>
556: */
557: #define TARGET_CPU_PPC 1
558: #define TARGET_CPU_68K 0
559: #define TARGET_CPU_X86 0
560: #define TARGET_CPU_MIPS 0
561: #define TARGET_CPU_SPARC 0
562: #define TARGET_CPU_ALPHA 0
563: #define TARGET_OS_MAC 0
564: #define TARGET_OS_WIN32 0
565: #define TARGET_OS_UNIX 0
566: #define TARGET_RT_LITTLE_ENDIAN 0
567: #define TARGET_RT_BIG_ENDIAN 1
568: #define TARGET_RT_MAC_CFM 1
569: #define TARGET_RT_MAC_MACHO 0
570: #define TARGET_RT_MAC_68881 0
571: #define PRAGMA_IMPORT 0
572: #define PRAGMA_STRUCT_ALIGN 1
573: #define PRAGMA_ONCE 0
574: #define PRAGMA_STRUCT_PACK 0
575: #define PRAGMA_STRUCT_PACKPUSH 0
576: #define PRAGMA_ENUM_PACK 0
577: #define PRAGMA_ENUM_ALWAYSINT 0
578: #define PRAGMA_ENUM_OPTIONS 0
579: #define FOUR_CHAR_CODE(x) (x)
580:
581: #define TYPE_EXTENDED 0
582: #define TYPE_LONGLONG 0
583: #define TYPE_BOOL 0
584:
585: #define FUNCTION_PASCAL 0
586: #define FUNCTION_DECLSPEC 0
587: #define FUNCTION_WIN32CC 0
588: #define SLASH_INCLUDES_UNSUPPORTED 1
589:
590:
591: #elif defined(applec) && !defined(__SC__)
592: /*
593: MPW C compiler from Apple Computer, Inc. << WARNING: Unsupported Compiler >>
594: */
595: #define TARGET_CPU_PPC 0
596: #define TARGET_CPU_68K 1
597: #define TARGET_CPU_X86 0
598: #define TARGET_CPU_MIPS 0
599: #define TARGET_CPU_SPARC 0
600: #define TARGET_CPU_ALPHA 0
601: #define TARGET_OS_MAC 0
602: #define TARGET_OS_WIN32 0
603: #define TARGET_OS_UNIX 0
604: #define TARGET_RT_LITTLE_ENDIAN 0
605: #define TARGET_RT_BIG_ENDIAN 1
606: #define TARGET_RT_MAC_CFM 0
607: #define TARGET_RT_MAC_MACHO 0
608: #if defined(mc68881)
609: #define TARGET_RT_MAC_68881 1
610: #else
611: #define TARGET_RT_MAC_68881 0
612: #endif
613: #define PRAGMA_IMPORT 0
614: #define PRAGMA_STRUCT_ALIGN 0
615: #define PRAGMA_ONCE 0
616: #define PRAGMA_STRUCT_PACK 0
617: #define PRAGMA_STRUCT_PACKPUSH 0
618: #define PRAGMA_ENUM_PACK 0
619: #define PRAGMA_ENUM_ALWAYSINT 0
620: #define PRAGMA_ENUM_OPTIONS 0
621: /* Note: MPW C 3.2 had a bug where MACRO('xx ') would cause 'xx ' to be misevaluated */
622: #define FOUR_CHAR_CODE
623:
624: #define TYPE_EXTENDED 1
625: #define TYPE_LONGLONG 0
626: #define TYPE_BOOL 0
627:
628: #define FUNCTION_PASCAL 1
629: #define FUNCTION_DECLSPEC 0
630: #define FUNCTION_WIN32CC 0
631: #define SLASH_INCLUDES_UNSUPPORTED 1
632:
633:
634: #elif defined(__GNUC__) && (defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__NEXT_CPP__))
635: /*
636: gcc based compilers used on OpenStep -> MacOS X -> Mac OS X
637: */
638: #if defined(__ppc__) || defined(powerpc) || defined(ppc)
639: #define TARGET_CPU_PPC 1
640: #define TARGET_CPU_68K 0
641: #define TARGET_CPU_X86 0
642: #define TARGET_CPU_MIPS 0
643: #define TARGET_CPU_SPARC 0
644: #define TARGET_CPU_ALPHA 0
645: #define TARGET_RT_MAC_CFM 0
646: #define TARGET_RT_MAC_MACHO 1
647: #define TARGET_RT_MAC_68881 0
648: #define TARGET_RT_LITTLE_ENDIAN 0
649: #define TARGET_RT_BIG_ENDIAN 1
650: #elif defined(m68k)
651: #define TARGET_CPU_PPC 0
652: #define TARGET_CPU_68K 1
653: #define TARGET_CPU_X86 0
654: #define TARGET_CPU_MIPS 0
655: #define TARGET_CPU_SPARC 0
656: #define TARGET_CPU_ALPHA 0
657: #define TARGET_RT_MAC_CFM 0
658: #define TARGET_RT_MAC_MACHO 1
659: #define TARGET_RT_MAC_68881 0
660: #define TARGET_RT_LITTLE_ENDIAN 0
661: #define TARGET_RT_BIG_ENDIAN 1
662: #elif defined(sparc)
663: #define TARGET_CPU_PPC 0
664: #define TARGET_CPU_68K 0
665: #define TARGET_CPU_X86 0
666: #define TARGET_CPU_MIPS 0
667: #define TARGET_CPU_SPARC 1
668: #define TARGET_CPU_ALPHA 0
669: #define TARGET_RT_MAC_CFM 0
670: #define TARGET_RT_MAC_MACHO 1
671: #define TARGET_RT_MAC_68881 0
672: #define TARGET_RT_LITTLE_ENDIAN 0
673: #define TARGET_RT_BIG_ENDIAN 1
674: #elif defined(__i386__) || defined(i386) || defined(intel)
675: #define TARGET_CPU_PPC 0
676: #define TARGET_CPU_68K 0
677: #define TARGET_CPU_X86 1
678: #define TARGET_CPU_MIPS 0
679: #define TARGET_CPU_SPARC 0
680: #define TARGET_CPU_ALPHA 0
681: #define TARGET_RT_MAC_CFM 0
682: #define TARGET_RT_MAC_MACHO 1
683: #define TARGET_RT_MAC_68881 0
684: #define TARGET_RT_LITTLE_ENDIAN 1
685: #define TARGET_RT_BIG_ENDIAN 0
686: #else
687: #error unrecognized GNU C compiler
688: #endif
689:
690:
691: #define TARGET_OS_MAC 0
692: #define TARGET_OS_WIN32 0
693: #define TARGET_OS_UNIX 0
694:
695: #define PRAGMA_IMPORT 0
696: #define PRAGMA_STRUCT_ALIGN 1
697: #define PRAGMA_ONCE 0
698: #define PRAGMA_STRUCT_PACK 0
699: #define PRAGMA_STRUCT_PACKPUSH 0
700: #define PRAGMA_ENUM_PACK 0
701: #define PRAGMA_ENUM_ALWAYSINT 0
702: #define PRAGMA_ENUM_OPTIONS 0
703: #define FOUR_CHAR_CODE(x) (x)
704:
705: #define TYPE_EXTENDED 0
706: #if __GNUC__ >= 2
707: #define TYPE_LONGLONG 1
708: #else
709: #define TYPE_LONGLONG 0
710: #endif
711: #ifdef __cplusplus
712: #define TYPE_BOOL 1
713: #else
714: #define TYPE_BOOL 0
715: #endif
716:
717: #define FUNCTION_PASCAL 0
718: #define FUNCTION_DECLSPEC 0
719: #define FUNCTION_WIN32CC 0
720:
721:
722: #if defined(forCarbon) && (forCarbon == 0)
723: /* BlueBox and Carbon both compile MI headers on MacOS X.
724: Since cpp-precomp doesn't understand #question(answer), we can't
725: use #system(macos) to tell the difference anymore. So the
726: solution is for BlueBox to -DforCarbon=0 on the compile line,
727: which we do NOT override here. */
728: /* BUT, we still need CFM=1, otherwise we get errors
729: for TempADBServiceRoutineUPP in DeskBus.i. Mabye
730: this is fixed in TOT MI, but that creates other
731: problems for BlueBox which still need to be solved. */
732: #undef TARGET_RT_MAC_CFM
733: #define TARGET_RT_MAC_CFM 1
734: #endif
735:
736:
737: #elif defined(__GNUC__) && defined(__linux__)
738: /*
739: gcc (egcs, really) for MkLinux. << WARNING: Unsupported Compiler >>
740: */
741: #if #cpu(powerpc)
742: #define TARGET_CPU_PPC 1
743: #define TARGET_CPU_68K 0
744: #define TARGET_CPU_X86 0
745: #define TARGET_CPU_MIPS 0
746: #define TARGET_CPU_SPARC 0
747: #define TARGET_CPU_ALPHA 0
748: #define TARGET_RT_MAC_CFM 1
749: #define TARGET_RT_MAC_MACHO 0
750: #define TARGET_RT_MAC_68881 0
751: #elif #cpu(m68k)
752: #define TARGET_CPU_PPC 0
753: #define TARGET_CPU_68K 1
754: #define TARGET_CPU_X86 0
755: #define TARGET_CPU_MIPS 0
756: #define TARGET_CPU_SPARC 0
757: #define TARGET_CPU_ALPHA 0
758: #define TARGET_RT_MAC_CFM 0
759: #define TARGET_RT_MAC_MACHO 0
760: #define TARGET_RT_MAC_68881 0
761: #else
762: #error unsupported GNU C compiler
763: #endif
764:
765: #if #system(macos)
766: #define TARGET_OS_MAC 0
767: #define TARGET_OS_WIN32 0
768: #define TARGET_OS_UNIX 0
769: #elif #system(unix)
770: #define TARGET_OS_MAC 0
771: #define TARGET_OS_WIN32 0
772: #define TARGET_OS_UNIX 1
773: #else
774: #error unsupported GNU C compiler
775: #endif
776:
777:
778:
779: #define TARGET_RT_LITTLE_ENDIAN 0
780: #define TARGET_RT_BIG_ENDIAN 1
781: #define PRAGMA_IMPORT 0
782: #define PRAGMA_STRUCT_ALIGN 0
783: #define PRAGMA_ONCE 0
784: #define PRAGMA_STRUCT_PACK 1
785: #define PRAGMA_STRUCT_PACKPUSH 0
786: #define PRAGMA_ENUM_PACK 0
787: #define PRAGMA_ENUM_ALWAYSINT 0
788: #define PRAGMA_ENUM_OPTIONS 0
789: #define FOUR_CHAR_CODE(x) (x)
790:
791: #define TYPE_EXTENDED 0
792: #ifdef _LONG_LONG
793: #define TYPE_LONGLONG 1
794: #else
795: #define TYPE_LONGLONG 0
796: #endif
797: #define TYPE_BOOL 0
798:
799: #define FUNCTION_PASCAL 0
800: #define FUNCTION_DECLSPEC 0
801: #define FUNCTION_WIN32CC 0
802:
803:
804: #elif defined(__GNUC__)
805: /*
806: gC for MPW from Free Software Foundation, Inc.
807: */
808: #if #cpu(powerpc)
809: #define TARGET_CPU_PPC 1
810: #define TARGET_CPU_68K 0
811: #define TARGET_CPU_X86 0
812: #define TARGET_CPU_MIPS 0
813: #define TARGET_CPU_SPARC 0
814: #define TARGET_CPU_ALPHA 0
815: #define TARGET_RT_MAC_CFM 1
816: #define TARGET_RT_MAC_MACHO 0
817: #define TARGET_RT_MAC_68881 0
818: #elif #cpu(m68k)
819: #define TARGET_CPU_PPC 0
820: #define TARGET_CPU_68K 1
821: #define TARGET_CPU_X86 0
822: #define TARGET_CPU_MIPS 0
823: #define TARGET_CPU_SPARC 0
824: #define TARGET_CPU_ALPHA 0
825: #define TARGET_RT_MAC_CFM 0
826: #define TARGET_RT_MAC_MACHO 0
827: #define TARGET_RT_MAC_68881 0
828: #else
829: #error unsupported GNU C compiler
830: #endif
831:
832: #if #system(macos)
833: #define TARGET_OS_MAC 0
834: #define TARGET_OS_WIN32 0
835: #define TARGET_OS_UNIX 0
836: #elif #system(unix)
837: #define TARGET_OS_MAC 0
838: #define TARGET_OS_WIN32 0
839: #define TARGET_OS_UNIX 1
840: #else
841: #error unsupported GNU C compiler
842: #endif
843:
844: #define TARGET_RT_LITTLE_ENDIAN 0
845: #define TARGET_RT_BIG_ENDIAN 1
846: #define PRAGMA_IMPORT 0
847: #define PRAGMA_STRUCT_ALIGN 1
848: #define PRAGMA_ONCE 0
849: #define PRAGMA_STRUCT_PACK 0
850: #define PRAGMA_STRUCT_PACKPUSH 0
851: #define PRAGMA_ENUM_PACK 0
852: #define PRAGMA_ENUM_ALWAYSINT 0
853: #define PRAGMA_ENUM_OPTIONS 0
854: #define FOUR_CHAR_CODE(x) (x)
855:
856: #define TYPE_EXTENDED 0
857: #ifdef _LONG_LONG
858: #define TYPE_LONGLONG 1
859: #else
860: #define TYPE_LONGLONG 0
861: #endif
862: #define TYPE_BOOL 0
863:
864: #define FUNCTION_PASCAL 0
865: #define FUNCTION_DECLSPEC 0
866: #define FUNCTION_WIN32CC 0
867:
868:
869: #elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__)
870: /*
871: xlc and xlC on RS/6000 from IBM, Inc.
872: */
873: #define TARGET_CPU_PPC 1
874: #define TARGET_CPU_68K 0
875: #define TARGET_CPU_X86 0
876: #define TARGET_CPU_MIPS 0
877: #define TARGET_CPU_SPARC 0
878: #define TARGET_CPU_ALPHA 0
879: #if defined(_AIX)
880: #define TARGET_OS_MAC 0
881: #define TARGET_OS_UNIX 1
882: #else
883: #define TARGET_OS_MAC 0
884: #define TARGET_OS_UNIX 0
885: #endif
886: #define TARGET_OS_WIN32 0
887: #define TARGET_RT_LITTLE_ENDIAN 0
888: #define TARGET_RT_BIG_ENDIAN 1
889: #define TARGET_RT_MAC_CFM 1
890: #define TARGET_RT_MAC_MACHO 0
891: #define TARGET_RT_MAC_68881 0
892: #define PRAGMA_IMPORT 0
893: #define PRAGMA_STRUCT_ALIGN 1
894: #define PRAGMA_ONCE 0
895: #define PRAGMA_STRUCT_PACK 0
896: #define PRAGMA_STRUCT_PACKPUSH 0
897: #define PRAGMA_ENUM_PACK 0
898: #define PRAGMA_ENUM_ALWAYSINT 0
899: #define PRAGMA_ENUM_OPTIONS 1
900: #define FOUR_CHAR_CODE(x) (x)
901:
902: #define TYPE_EXTENDED 0
903: #ifdef _LONG_LONG
904: #define TYPE_LONGLONG 1
905: #else
906: #define TYPE_LONGLONG 0
907: #endif
908: #define TYPE_BOOL 0
909:
910: #define FUNCTION_PASCAL 0
911: #define FUNCTION_DECLSPEC 0
912: #define FUNCTION_WIN32CC 0
913:
914:
915: #elif defined(_MSC_VER) && !defined(__MWERKS__)
916: /*
917: Visual C++ from Microsoft, Inc.
918: */
919: #if defined(_M_M68K) /* Visual C++ with Macintosh 68K target */
920: #define TARGET_CPU_PPC 0
921: #define TARGET_CPU_68K 1
922: #define TARGET_CPU_X86 0
923: #define TARGET_CPU_MIPS 0
924: #define TARGET_CPU_SPARC 0
925: #define TARGET_CPU_ALPHA 0
926: #define TARGET_OS_MAC 0
927: #define TARGET_OS_WIN32 0
928: #define TARGET_OS_UNIX 0
929: #define TARGET_RT_LITTLE_ENDIAN 0
930: #define TARGET_RT_BIG_ENDIAN 1
931: #define TARGET_RT_MAC_CFM 0
932: #define TARGET_RT_MAC_MACHO 0
933: #define TARGET_RT_MAC_68881 0
934: #define PRAGMA_IMPORT 0
935: #define PRAGMA_STRUCT_ALIGN 1
936: #define PRAGMA_ONCE 0
937: #define PRAGMA_STRUCT_PACK 1
938: #define PRAGMA_STRUCT_PACKPUSH 1
939: #define PRAGMA_ENUM_PACK 0
940: #define PRAGMA_ENUM_ALWAYSINT 0
941: #define PRAGMA_ENUM_OPTIONS 0
942: #define FOUR_CHAR_CODE(x) (x)
943: #define TYPE_EXTENDED 0
944: #define TYPE_LONGLONG 0
945: #define TYPE_BOOL 0
946: #define FUNCTION_PASCAL 1
947: #define FUNCTION_DECLSPEC 0
948: #define FUNCTION_WIN32CC 0
949:
950: #elif defined(_M_MPPC) /* Visual C++ with Macintosh PowerPC target */
951: #define TARGET_CPU_PPC 1
952: #define TARGET_CPU_68K 0
953: #define TARGET_CPU_X86 0
954: #define TARGET_CPU_MIPS 0
955: #define TARGET_CPU_SPARC 0
956: #define TARGET_CPU_ALPHA 0
957: #define TARGET_OS_MAC 0
958: #define TARGET_OS_WIN32 0
959: #define TARGET_OS_UNIX 0
960: #define TARGET_RT_LITTLE_ENDIAN 0
961: #define TARGET_RT_BIG_ENDIAN 1
962: #define TARGET_RT_MAC_CFM 1
963: #define TARGET_RT_MAC_MACHO 0
964: #define TARGET_RT_MAC_68881 0
965: #define PRAGMA_IMPORT 0
966: #define PRAGMA_STRUCT_ALIGN 1
967: #define PRAGMA_ONCE 0
968: #define PRAGMA_STRUCT_PACK 1
969: #define PRAGMA_STRUCT_PACKPUSH 1
970: #define PRAGMA_ENUM_PACK 0
971: #define PRAGMA_ENUM_ALWAYSINT 0
972: #define PRAGMA_ENUM_OPTIONS 0
973: #define FOUR_CHAR_CODE(x) (x)
974: #define TYPE_EXTENDED 0
975: #define TYPE_LONGLONG 0
976: #define TYPE_BOOL 0
977: #define FUNCTION_PASCAL 0
978: #define FUNCTION_DECLSPEC 0
979: #define FUNCTION_WIN32CC 0
980:
981: #elif defined(_M_IX86) /* Visual C++ with Intel x86 target */
982: #define TARGET_CPU_PPC 0
983: #define TARGET_CPU_68K 0
984: #define TARGET_CPU_X86 1
985: #define TARGET_CPU_MIPS 0
986: #define TARGET_CPU_SPARC 0
987: #define TARGET_CPU_ALPHA 0
988: #define TARGET_OS_MAC 0
989: #define TARGET_OS_WIN32 1
990: #define TARGET_OS_UNIX 0
991: #define TARGET_RT_LITTLE_ENDIAN 1
992: #define TARGET_RT_BIG_ENDIAN 0
993: #define PRAGMA_IMPORT 0
994: #define PRAGMA_STRUCT_ALIGN 0
995: #define PRAGMA_ONCE 0
996: #define PRAGMA_STRUCT_PACK 1
997: #define PRAGMA_STRUCT_PACKPUSH 1
998: #define PRAGMA_ENUM_PACK 0
999: #define PRAGMA_ENUM_ALWAYSINT 0
1000: #define PRAGMA_ENUM_OPTIONS 0
1001: #define FOUR_CHAR_CODE(x) (x)
1002: #define TYPE_EXTENDED 0
1003: #define TYPE_LONGLONG 0
1004: #if defined(__cplusplus) && (_MSC_VER >= 1100)
1005: #define TYPE_BOOL 1
1006: #else
1007: #define TYPE_BOOL 0
1008: #endif
1009: #define FUNCTION_PASCAL 0
1010: #define FUNCTION_DECLSPEC 1
1011: #define FUNCTION_WIN32CC 1
1012:
1013: #elif defined(_M_ALPHA) /* Visual C++ with Dec Alpha target */
1014: #define TARGET_CPU_PPC 0
1015: #define TARGET_CPU_68K 0
1016: #define TARGET_CPU_X86 0
1017: #define TARGET_CPU_MIPS 0
1018: #define TARGET_CPU_SPARC 0
1019: #define TARGET_CPU_ALPHA 1
1020: #define TARGET_OS_MAC 0
1021: #define TARGET_OS_WIN32 1
1022: #define TARGET_OS_UNIX 0
1023: #define TARGET_RT_LITTLE_ENDIAN 1
1024: #define TARGET_RT_BIG_ENDIAN 0
1025: #define PRAGMA_IMPORT 0
1026: #define PRAGMA_STRUCT_ALIGN 0
1027: #define PRAGMA_ONCE 0
1028: #define PRAGMA_STRUCT_PACK 1
1029: #define PRAGMA_STRUCT_PACKPUSH 1
1030: #define PRAGMA_ENUM_PACK 0
1031: #define PRAGMA_ENUM_ALWAYSINT 0
1032: #define PRAGMA_ENUM_OPTIONS 0
1033: #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \
1034: | (((unsigned long) ((x) & 0x0000FF00)) << 8) \
1035: | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \
1036: | (((unsigned long) ((x) & 0xFF000000)) >> 24)
1037: #define TYPE_EXTENDED 0
1038: #define TYPE_LONGLONG 0
1039: #define TYPE_BOOL 0
1040: #define FUNCTION_PASCAL 0
1041: #define FUNCTION_DECLSPEC 0
1042: #define FUNCTION_WIN32CC 0
1043:
1044: #elif defined(_M_PPC) /* Visual C++ for Windows NT on PowerPC target */
1045: #define TARGET_CPU_PPC 1
1046: #define TARGET_CPU_68K 0
1047: #define TARGET_CPU_X86 0
1048: #define TARGET_CPU_MIPS 0
1049: #define TARGET_CPU_SPARC 0
1050: #define TARGET_CPU_ALPHA 0
1051: #define TARGET_OS_MAC 0
1052: #define TARGET_OS_WIN32 1
1053: #define TARGET_OS_UNIX 0
1054: #define TARGET_RT_LITTLE_ENDIAN 1
1055: #define TARGET_RT_BIG_ENDIAN 0
1056: #define PRAGMA_IMPORT 0
1057: #define PRAGMA_STRUCT_ALIGN 0
1058: #define PRAGMA_ONCE 0
1059: #define PRAGMA_STRUCT_PACK 1
1060: #define PRAGMA_STRUCT_PACKPUSH 1
1061: #define PRAGMA_ENUM_PACK 0
1062: #define PRAGMA_ENUM_ALWAYSINT 0
1063: #define PRAGMA_ENUM_OPTIONS 0
1064: #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \
1065: | (((unsigned long) ((x) & 0x0000FF00)) << 8) \
1066: | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \
1067: | (((unsigned long) ((x) & 0xFF000000)) >> 24)
1068: #define TYPE_EXTENDED 0
1069: #define TYPE_LONGLONG 0
1070: #define TYPE_BOOL 0
1071: #define FUNCTION_PASCAL 0
1072: #define FUNCTION_DECLSPEC 0
1073: #define FUNCTION_WIN32CC 0
1074:
1075: #elif defined(_M_MRX000) /* Visual C++ for Windows NT on MIPS target */
1076: #define TARGET_CPU_PPC 0
1077: #define TARGET_CPU_68K 0
1078: #define TARGET_CPU_X86 0
1079: #define TARGET_CPU_MIPS 1
1080: #define TARGET_CPU_SPARC 0
1081: #define TARGET_CPU_ALPHA 0
1082: #define TARGET_OS_MAC 0
1083: #define TARGET_OS_WIN32 1
1084: #define TARGET_OS_UNIX 0
1085: #define TARGET_RT_LITTLE_ENDIAN 1
1086: #define TARGET_RT_BIG_ENDIAN 0
1087: #define PRAGMA_IMPORT 0
1088: #define PRAGMA_STRUCT_ALIGN 0
1089: #define PRAGMA_ONCE 0
1090: #define PRAGMA_STRUCT_PACK 1
1091: #define PRAGMA_STRUCT_PACKPUSH 1
1092: #define PRAGMA_ENUM_PACK 0
1093: #define PRAGMA_ENUM_ALWAYSINT 0
1094: #define PRAGMA_ENUM_OPTIONS 0
1095: #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \
1096: | (((unsigned long) ((x) & 0x0000FF00)) << 8) \
1097: | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \
1098: | (((unsigned long) ((x) & 0xFF000000)) >> 24)
1099: #define TYPE_EXTENDED 0
1100: #define TYPE_LONGLONG 0
1101: #define TYPE_BOOL 0
1102: #define FUNCTION_PASCAL 0
1103: #define FUNCTION_DECLSPEC 0
1104: #define FUNCTION_WIN32CC 0
1105: #endif
1106:
1107:
1108: #elif defined(__MOTO__)
1109: /*
1110: mcc from Motorola, Inc.
1111: */
1112: #define TARGET_CPU_PPC 1
1113: #define TARGET_CPU_68K 0
1114: #define TARGET_CPU_X86 0
1115: #define TARGET_CPU_MIPS 0
1116: #define TARGET_CPU_SPARC 0
1117: #define TARGET_CPU_ALPHA 0
1118: #define TARGET_OS_MAC 0
1119: #define TARGET_OS_WIN32 0
1120: #define TARGET_OS_UNIX 0
1121: #define TARGET_RT_LITTLE_ENDIAN 0
1122: #define TARGET_RT_BIG_ENDIAN 1
1123: #define TARGET_RT_MAC_CFM 1
1124: #define TARGET_RT_MAC_MACHO 0
1125: #define TARGET_RT_MAC_68881 0
1126: #define PRAGMA_IMPORT 0 /* how is this detected ?? */
1127: #define PRAGMA_STRUCT_ALIGN 1
1128: #if __MOTO__ >= 40702 /* MCC version 4.7.2 */
1129: #define PRAGMA_ONCE 1
1130: #else
1131: #define PRAGMA_ONCE 0
1132: #endif
1133: #define PRAGMA_STRUCT_PACK 0
1134: #define PRAGMA_STRUCT_PACKPUSH 0
1135: #define PRAGMA_ENUM_PACK 0
1136: #define PRAGMA_ENUM_ALWAYSINT 0
1137: #define PRAGMA_ENUM_OPTIONS 0
1138: #define FOUR_CHAR_CODE(x) (x)
1139: #define TYPE_LONGLONG 0 /* how is this detected ?? */
1140: #ifdef _BOOL
1141: #define TYPE_BOOL 1
1142: #else
1143: #define TYPE_BOOL 0
1144: #endif
1145: #define TYPE_EXTENDED 0
1146: #define FUNCTION_PASCAL 0
1147: #define FUNCTION_DECLSPEC 0
1148: #define FUNCTION_WIN32CC 0
1149:
1150:
1151:
1152: #elif defined(_MIPS_ISA)
1153: /*
1154: MIPSpro compiler from Silicon Graphics Inc.
1155: */
1156: #define TARGET_CPU_PPC 0
1157: #define TARGET_CPU_68K 0
1158: #define TARGET_CPU_X86 0
1159: #define TARGET_CPU_MIPS 1
1160: #define TARGET_CPU_SPARC 0
1161: #define TARGET_CPU_ALPHA 0
1162: #define TARGET_OS_MAC 0
1163: #define TARGET_OS_WIN32 0
1164: #define TARGET_OS_UNIX 1
1165: #define TARGET_RT_LITTLE_ENDIAN 0
1166: #define TARGET_RT_BIG_ENDIAN 1
1167: #define PRAGMA_IMPORT 0
1168: #define PRAGMA_STRUCT_ALIGN 0
1169: #define PRAGMA_ONCE 0
1170: #define PRAGMA_STRUCT_PACK 1
1171: #define PRAGMA_STRUCT_PACKPUSH 0
1172: #define PRAGMA_ENUM_PACK 0
1173: #define PRAGMA_ENUM_ALWAYSINT 0
1174: #define PRAGMA_ENUM_OPTIONS 0
1175: #define FOUR_CHAR_CODE(x) (x)
1176: #define TYPE_EXTENDED 0
1177: #define TYPE_LONGLONG 0
1178: #define TYPE_BOOL 0
1179: #define FUNCTION_PASCAL 0
1180: #define FUNCTION_DECLSPEC 0
1181: #define FUNCTION_WIN32CC 0
1182:
1183:
1184: #elif defined(__sparc)
1185: /*
1186: SPARCompiler compiler from Sun Microsystems Inc.
1187: */
1188: #define TARGET_CPU_PPC 0
1189: #define TARGET_CPU_68K 0
1190: #define TARGET_CPU_X86 0
1191: #define TARGET_CPU_MIPS 0
1192: #define TARGET_CPU_SPARC 1
1193: #define TARGET_CPU_ALPHA 0
1194: #define TARGET_OS_MAC 0
1195: #define TARGET_OS_WIN32 0
1196: #define TARGET_OS_UNIX 1
1197: #define TARGET_RT_LITTLE_ENDIAN 0
1198: #define TARGET_RT_BIG_ENDIAN 1
1199: #define PRAGMA_IMPORT 0
1200: #define PRAGMA_STRUCT_ALIGN 0
1201: #define PRAGMA_ONCE 0
1202: #define PRAGMA_STRUCT_PACK 1
1203: #define PRAGMA_STRUCT_PACKPUSH 0
1204: #define PRAGMA_ENUM_PACK 0
1205: #define PRAGMA_ENUM_ALWAYSINT 0
1206: #define PRAGMA_ENUM_OPTIONS 0
1207: #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \
1208: | (((unsigned long) ((x) & 0x0000FF00)) << 8) \
1209: | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \
1210: | (((unsigned long) ((x) & 0xFF000000)) >> 24)
1211: #define TYPE_EXTENDED 0
1212: #define TYPE_LONGLONG 0
1213: #define TYPE_BOOL 0
1214: #define FUNCTION_PASCAL 0
1215: #define FUNCTION_DECLSPEC 0
1216: #define FUNCTION_WIN32CC 0
1217:
1218:
1219: #else
1220: /*
1221: Unknown compiler, perhaps set up from the command line (e.g. -d TARGET_CPU_MIPS , etc.)
1222: */
1223: #if defined(TARGET_CPU_PPC) && TARGET_CPU_PPC
1224: #define TARGET_CPU_68K 0
1225: #define TARGET_CPU_X86 0
1226: #define TARGET_CPU_MIPS 0
1227: #define TARGET_CPU_SPARC 0
1228: #define TARGET_CPU_ALPHA 0
1229: #elif defined(TARGET_CPU_68K) && TARGET_CPU_68K
1230: #define TARGET_CPU_PPC 0
1231: #define TARGET_CPU_X86 0
1232: #define TARGET_CPU_MIPS 0
1233: #define TARGET_CPU_SPARC 0
1234: #define TARGET_CPU_ALPHA 0
1235: #elif defined(TARGET_CPU_X86) && TARGET_CPU_X86
1236: #define TARGET_CPU_PPC 0
1237: #define TARGET_CPU_68K 0
1238: #define TARGET_CPU_MIPS 0
1239: #define TARGET_CPU_SPARC 0
1240: #define TARGET_CPU_ALPHA 0
1241: #elif defined(TARGET_CPU_MIPS) && TARGET_CPU_MIPS
1242: #define TARGET_CPU_PPC 0
1243: #define TARGET_CPU_68K 0
1244: #define TARGET_CPU_X86 0
1245: #define TARGET_CPU_SPARC 0
1246: #define TARGET_CPU_ALPHA 0
1247: #elif defined(TARGET_CPU_SPARC) && TARGET_CPU_SPARC
1248: #define TARGET_CPU_PPC 0
1249: #define TARGET_CPU_68K 0
1250: #define TARGET_CPU_X86 0
1251: #define TARGET_CPU_MIPS 0
1252: #define TARGET_CPU_ALPHA 0
1253: #elif defined(TARGET_CPU_ALPHA) && TARGET_CPU_ALPHA
1254: #define TARGET_CPU_PPC 0
1255: #define TARGET_CPU_68K 0
1256: #define TARGET_CPU_X86 0
1257: #define TARGET_CPU_MIPS 0
1258: #define TARGET_CPU_SPARC 0
1259:
1260:
1261: #else
1262: /*
1263: NOTE: If your compiler errors out here then support for your compiler
1264: has not yet been added to ConditionalMacros.h.
1265:
1266: ConditionalMacros.h is designed to be plug-and-play. It auto detects
1267: which compiler is being run and configures the TARGET_ conditionals
1268: appropriately.
1269:
1270: The short term work around is to set the TARGET_CPU_ and TARGET_OS_
1271: on the command line to the compiler (e.g. d TARGET_CPU_MIPS -d TARGET_OS_UNIX)
1272:
1273: The long term solution is to add a new case to this file which
1274: auto detects your compiler and sets up the TARGET_ conditionals.
1275: If you do this, send the changes you made to [email protected]
1276: to get it integrated into the next release of ConditionalMacros.h.
1277: */
1278: #error ConditionalMacros.h: unknown compiler (see comment above)
1279: #define TARGET_CPU_PPC 0
1280: #define TARGET_CPU_68K 0
1281: #define TARGET_CPU_X86 0
1282: #define TARGET_CPU_MIPS 0
1283: #define TARGET_CPU_SPARC 0
1284: #define TARGET_CPU_ALPHA 0
1285: #endif
1286:
1287:
1288:
1289: #if defined(TARGET_OS_MAC) && TARGET_OS_MAC
1290: #define TARGET_OS_WIN32 0
1291: #define TARGET_OS_UNIX 0
1292: #elif defined(TARGET_OS_WIN32) && TARGET_OS_WIN32
1293: #define TARGET_OS_MAC 0
1294: #define TARGET_OS_UNIX 0
1295: #elif defined(TARGET_OS_UNIX) && TARGET_OS_UNIX
1296: #define TARGET_OS_MAC 0
1297: #define TARGET_OS_WIN32 0
1298: #elif TARGET_CPU_PPC || TARGET_CPU_68K
1299: #define TARGET_OS_MAC 0
1300: #define TARGET_OS_WIN32 0
1301: #define TARGET_OS_UNIX 0
1302: #else
1303: #error ConditionalMacros.h: unknown target OS (see comment above)
1304: #endif
1305:
1306: #if !defined(TARGET_RT_BIG_ENDIAN) && !defined(TARGET_RT_LITTLE_ENDIAN)
1307: #if TARGET_OS_MAC
1308: #define TARGET_RT_LITTLE_ENDIAN 0
1309: #define TARGET_RT_BIG_ENDIAN 1
1310: #elif TARGET_OS_WIN32
1311: #define TARGET_RT_LITTLE_ENDIAN 1
1312: #define TARGET_RT_BIG_ENDIAN 0
1313: #endif
1314: #endif
1315:
1316: #if defined(TARGET_RT_BIG_ENDIAN) && !defined(TARGET_RT_LITTLE_ENDIAN)
1317: #define TARGET_RT_LITTLE_ENDIAN !TARGET_RT_BIG_ENDIAN
1318: #elif !defined(TARGET_RT_BIG_ENDIAN) && defined(TARGET_RT_LITTLE_ENDIAN)
1319: #define TARGET_RT_BIG_ENDIAN !TARGET_RT_LITTLE_ENDIAN
1320: #endif
1321:
1322: #if !defined(TARGET_RT_BIG_ENDIAN) && !defined(TARGET_RT_LITTLE_ENDIAN)
1323: #error unknown endianess of target processor
1324: #endif
1325:
1326: #if TARGET_OS_MAC
1327: #ifndef TARGET_RT_MAC_CFM
1328: #define TARGET_RT_MAC_CFM TARGET_CPU_PPC
1329: #endif
1330: #ifndef TARGET_RT_MAC_68881
1331: #define TARGET_RT_MAC_68881 0
1332: #endif
1333: #ifndef TARGET_RT_MAC_MACHO
1334: #define TARGET_RT_MAC_MACHO !TARGET_RT_MAC_CFM
1335: #endif
1336: #endif
1337:
1338:
1339:
1340: #ifndef PRAGMA_IMPORT
1341: #define PRAGMA_IMPORT 0
1342: #endif
1343: #ifndef PRAGMA_STRUCT_ALIGN
1344: #define PRAGMA_STRUCT_ALIGN 0
1345: #endif
1346: #ifndef PRAGMA_ONCE
1347: #define PRAGMA_ONCE 0
1348: #endif
1349: #ifndef PRAGMA_STRUCT_PACK
1350: #define PRAGMA_STRUCT_PACK 0
1351: #endif
1352: #ifndef PRAGMA_STRUCT_PACKPUSH
1353: #define PRAGMA_STRUCT_PACKPUSH 0
1354: #endif
1355: #ifndef PRAGMA_ENUM_PACK
1356: #define PRAGMA_ENUM_PACK 0
1357: #endif
1358: #ifndef PRAGMA_ENUM_ALWAYSINT
1359: #define PRAGMA_ENUM_ALWAYSINT 0
1360: #endif
1361: #ifndef PRAGMA_ENUM_OPTIONS
1362: #define PRAGMA_ENUM_OPTIONS 0
1363: #endif
1364: #ifndef FOUR_CHAR_CODE
1365: #define FOUR_CHAR_CODE(x) (x)
1366: #endif
1367:
1368: #ifndef TYPE_EXTENDED
1369: #define TYPE_EXTENDED 0
1370: #endif
1371: #ifndef TYPE_LONGLONG
1372: #define TYPE_LONGLONG 0
1373: #endif
1374: #ifndef TYPE_BOOL
1375: #define TYPE_BOOL 0
1376: #endif
1377: #ifndef FUNCTION_PASCAL
1378: #define FUNCTION_PASCAL 0
1379: #endif
1380: #ifndef FUNCTION_DECLSPEC
1381: #define FUNCTION_DECLSPEC 0
1382: #endif
1383: #ifndef FUNCTION_WIN32CC
1384: #define FUNCTION_WIN32CC 0
1385: #endif
1386: #endif
1387:
1388:
1389:
1390:
1391: /****************************************************************************************************
1392:
1393: Under MacOS, the classic 68k runtime has two calling conventions: pascal or C
1394: Under Win32, there are two calling conventions: __cdecl or __stdcall
1395: Headers and implementation files can use the following macros to make their
1396: source more portable by hiding the calling convention details:
1397:
1398: EXTERN_API�
1399: These macros are used to specify the calling convention on a function prototype.
1400:
1401: EXTERN_API - Classic 68k: pascal, Win32: __cdecl
1402: EXTERN_API_C - Classic 68k: C, Win32: __cdecl
1403: EXTERN_API_STDCALL - Classic 68k: pascal, Win32: __stdcall
1404: EXTERN_API_C_STDCALL - Classic 68k: C, Win32: __stdcall
1405:
1406:
1407: DEFINE_API�
1408: These macros are used to specify the calling convention on a function definition.
1409:
1410: DEFINE_API - Classic 68k: pascal, Win32: __cdecl
1411: DEFINE_API_C - Classic 68k: C, Win32: __cdecl
1412: DEFINE_API_STDCALL - Classic 68k: pascal, Win32: __stdcall
1413: DEFINE_API_C_STDCALL - Classic 68k: C, Win32: __stdcall
1414:
1415:
1416: CALLBACK_API�
1417: These macros are used to specify the calling convention of a function pointer.
1418:
1419: CALLBACK_API - Classic 68k: pascal, Win32: __stdcall
1420: CALLBACK_API_C - Classic 68k: C, Win32: __stdcall
1421: CALLBACK_API_STDCALL - Classic 68k: pascal, Win32: __cdecl
1422: CALLBACK_API_C_STDCALL - Classic 68k: C, Win32: __cdecl
1423:
1424: ****************************************************************************************************/
1425: #if TARGET_OS_WIN32
1426: /* QuickTime for Windows builds do not want __declspec(dllimport) */
1427: #undef FUNCTION_DECLSPEC
1428: #define FUNCTION_DECLSPEC 0
1429: #endif
1430:
1431: #if FUNCTION_PASCAL && !FUNCTION_DECLSPEC && !FUNCTION_WIN32CC
1432: /* compiler supports pascal keyword only */
1433: #define EXTERN_API(_type) extern pascal _type
1434: #define EXTERN_API_C(_type) extern _type
1435: #define EXTERN_API_STDCALL(_type) extern pascal _type
1436: #define EXTERN_API_C_STDCALL(_type) extern _type
1437:
1438: #define DEFINE_API(_type) pascal _type
1439: #define DEFINE_API_C(_type) _type
1440: #define DEFINE_API_STDCALL(_type) pascal _type
1441: #define DEFINE_API_C_STDCALL(_type) _type
1442:
1443: #define CALLBACK_API(_type, _name) pascal _type (*_name)
1444: #define CALLBACK_API_C(_type, _name) _type (*_name)
1445: #define CALLBACK_API_STDCALL(_type, _name) pascal _type (*_name)
1446: #define CALLBACK_API_C_STDCALL(_type, _name) _type (*_name)
1447:
1448: #elif FUNCTION_PASCAL && FUNCTION_DECLSPEC && !FUNCTION_WIN32CC
1449: /* compiler supports pascal and __declspec() */
1450: #define EXTERN_API(_type) extern pascal __declspec(dllimport) _type
1451: #define EXTERN_API_C(_type) extern __declspec(dllimport) _type
1452: #define EXTERN_API_STDCALL(_type) extern pascal __declspec(dllimport) _type
1453: #define EXTERN_API_C_STDCALL(_type) extern __declspec(dllimport) _type
1454:
1455: #define DEFINE_API(_type) pascal __declspec(dllexport) _type
1456: #define DEFINE_API_C(_type) __declspec(dllexport) _type
1457: #define DEFINE_API_STDCALL(_type) pascal __declspec(dllexport) _type
1458: #define DEFINE_API_C_STDCALL(_type) __declspec(dllexport) _type
1459:
1460: #define CALLBACK_API(_type, _name) pascal _type (*_name)
1461: #define CALLBACK_API_C(_type, _name) _type (*_name)
1462: #define CALLBACK_API_STDCALL(_type, _name) pascal _type (*_name)
1463: #define CALLBACK_API_C_STDCALL(_type, _name) _type (*_name)
1464:
1465: #elif !FUNCTION_PASCAL && FUNCTION_DECLSPEC && !FUNCTION_WIN32CC
1466: /* compiler supports __declspec() */
1467: #define EXTERN_API(_type) extern __declspec(dllimport) _type
1468: #define EXTERN_API_C(_type) extern __declspec(dllimport) _type
1469: #define EXTERN_API_STDCALL(_type) extern __declspec(dllimport) _type
1470: #define EXTERN_API_C_STDCALL(_type) extern __declspec(dllimport) _type
1471:
1472: #define DEFINE_API(_type) __declspec(dllexport) _type
1473: #define DEFINE_API_C(_type) __declspec(dllexport) _type
1474: #define DEFINE_API_STDCALL(_type) __declspec(dllexport) _type
1475: #define DEFINE_API_C_STDCALL(_type) __declspec(dllexport) _type
1476:
1477: #define CALLBACK_API(_type, _name) _type ( * _name)
1478: #define CALLBACK_API_C(_type, _name) _type ( * _name)
1479: #define CALLBACK_API_STDCALL(_type, _name) _type ( * _name)
1480: #define CALLBACK_API_C_STDCALL(_type, _name) _type ( * _name)
1481:
1482: #elif !FUNCTION_PASCAL && FUNCTION_DECLSPEC && FUNCTION_WIN32CC
1483: /* compiler supports __declspec() and __cdecl */
1484: #define EXTERN_API(_type) __declspec(dllimport) _type __cdecl
1485: #define EXTERN_API_C(_type) __declspec(dllimport) _type __cdecl
1486: #define EXTERN_API_STDCALL(_type) __declspec(dllimport) _type __stdcall
1487: #define EXTERN_API_C_STDCALL(_type) __declspec(dllimport) _type __stdcall
1488:
1489: #define DEFINE_API(_type) __declspec(dllexport) _type __cdecl
1490: #define DEFINE_API_C(_type) __declspec(dllexport) _type __cdecl
1491: #define DEFINE_API_STDCALL(_type) __declspec(dllexport) _type __stdcall
1492: #define DEFINE_API_C_STDCALL(_type) __declspec(dllexport) _type __stdcall
1493:
1494: #define CALLBACK_API(_type, _name) _type (__cdecl * _name)
1495: #define CALLBACK_API_C(_type, _name) _type (__cdecl * _name)
1496: #define CALLBACK_API_STDCALL(_type, _name) _type (__stdcall * _name)
1497: #define CALLBACK_API_C_STDCALL(_type, _name) _type (__stdcall * _name)
1498:
1499: #elif !FUNCTION_PASCAL && !FUNCTION_DECLSPEC && FUNCTION_WIN32CC
1500: /* compiler supports __cdecl */
1501: #define EXTERN_API(_type) _type __cdecl
1502: #define EXTERN_API_C(_type) _type __cdecl
1503: #define EXTERN_API_STDCALL(_type) _type __stdcall
1504: #define EXTERN_API_C_STDCALL(_type) _type __stdcall
1505:
1506: #define DEFINE_API(_type) _type __cdecl
1507: #define DEFINE_API_C(_type) _type __cdecl
1508: #define DEFINE_API_STDCALL(_type) _type __stdcall
1509: #define DEFINE_API_C_STDCALL(_type) _type __stdcall
1510:
1511: #define CALLBACK_API(_type, _name) _type (__cdecl * _name)
1512: #define CALLBACK_API_C(_type, _name) _type (__cdecl * _name)
1513: #define CALLBACK_API_STDCALL(_type, _name) _type (__stdcall * _name)
1514: #define CALLBACK_API_C_STDCALL(_type, _name) _type (__stdcall * _name)
1515:
1516: #else
1517: /* compiler supports no extensions */
1518: #define EXTERN_API(_type) extern _type
1519: #define EXTERN_API_C(_type) extern _type
1520: #define EXTERN_API_STDCALL(_type) extern _type
1521: #define EXTERN_API_C_STDCALL(_type) extern _type
1522:
1523: #define DEFINE_API(_type) _type
1524: #define DEFINE_API_C(_type) _type
1525: #define DEFINE_API_STDCALL(_type) _type
1526: #define DEFINE_API_C_STDCALL(_type) _type
1527:
1528: #define CALLBACK_API(_type, _name) _type ( * _name)
1529: #define CALLBACK_API_C(_type, _name) _type ( * _name)
1530: #define CALLBACK_API_STDCALL(_type, _name) _type ( * _name)
1531: #define CALLBACK_API_C_STDCALL(_type, _name) _type ( * _name)
1532: #endif
1533:
1534: /****************************************************************************************************
1535:
1536: Set up TARGET_API_�_� values
1537:
1538: ****************************************************************************************************/
1539: #define TARGET_API_MACOS_X 1
1540: #if TARGET_OS_MAC
1541: #if !defined(TARGET_API_MAC_OS8) && !defined(TARGET_API_MACOS_X) && !defined(TARGET_API_MAC_CARBON)
1542: /* No TARGET_API_MAC_* predefind on command line */
1543: #if defined(TARGET_CARBON) && TARGET_CARBON
1544: /* grandfather in use of TARGET_CARBON */
1545: #define TARGET_API_MAC_OS8 0
1546: #define TARGET_API_MAC_CARBON 1
1547: #define TARGET_API_MACOS_X 0
1548: #elif defined(forCarbon) && forCarbon
1549: /* grandfather in use of forCarbon */
1550: #define TARGET_API_MAC_OS8 0
1551: #define TARGET_API_MAC_CARBON 1
1552: #define TARGET_API_MACOS_X 0
1553: #elif TARGET_CPU_PPC && TARGET_RT_MAC_CFM
1554: /* Looks like CFM style PPC compiler */
1555: #define TARGET_API_MAC_OS8 1
1556: #define TARGET_API_MAC_CARBON 1
1557: #define TARGET_API_MACOS_X 0
1558: #elif TARGET_RT_MAC_MACHO
1559: /* Looks like MachO style PPC compiler */
1560: #define TARGET_API_MAC_OS8 0
1561: #define TARGET_API_MAC_CARBON 1
1562: #define TARGET_API_MACOS_X 1
1563: #else
1564: /* 68k or some other compiler */
1565: #define TARGET_API_MAC_OS8 1
1566: #define TARGET_API_MAC_CARBON 0
1567: #define TARGET_API_MACOS_X 0
1568: #endif /* */
1569:
1570: #else
1571: #ifndef TARGET_API_MAC_OS8
1572: #define TARGET_API_MAC_OS8 0
1573: #endif /* !defined(TARGET_API_MAC_OS8) */
1574:
1575: #ifndef TARGET_API_MAC_CARBON
1576: #define TARGET_API_MAC_CARBON 0
1577: #endif /* !defined(TARGET_API_MAC_CARBON) */
1578:
1579: #ifndef TARGET_API_MACOS_X
1580: #define TARGET_API_MACOS_X 0
1581: #endif /* !defined(TARGET_API_MACOS_X) */
1582:
1583: #endif /* !defined(TARGET_API_MAC_OS8) && !defined(TARGET_API_MACOS_X) && !defined(TARGET_API_MAC_CARBON) */
1584:
1585: #if TARGET_API_MAC_OS8 && TARGET_API_MACOS_X
1586: #error TARGET_API_MAC_OS8 and TARGET_API_MACOS_X are mutually exclusive
1587: #endif /* TARGET_API_MAC_OS8 && TARGET_API_MACOS_X */
1588:
1589: #if !TARGET_API_MAC_OS8 && !TARGET_API_MAC_CARBON && !TARGET_API_MACOS_X
1590: #error At least one of TARGET_API_MAC_* must be true
1591: #endif /* !TARGET_API_MAC_OS8 && !TARGET_API_MAC_CARBON && !TARGET_API_MACOS_X */
1592:
1593: #endif /* TARGET_OS_MAC */
1594:
1595: /* Support source code still using TARGET_CARBON */
1596: #ifndef TARGET_CARBON
1597: #if TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8
1598: #define TARGET_CARBON 1
1599: #else
1600: #define TARGET_CARBON 0
1601: #endif /* TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 */
1602:
1603: #endif /* !defined(TARGET_CARBON) */
1604:
1605: /* Support source code still using TARGET_CARBON */
1606: #ifndef forCarbon
1607: #if TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8
1608: #define forCarbon 1
1609: #else
1610: #define forCarbon 0
1611: #endif /* TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 */
1612:
1613: #endif /* !defined(forCarbon) */
1614:
1615: /****************************************************************************************************
1616: Backward compatibility for clients expecting 2.x version on ConditionalMacros.h
1617:
1618: GENERATINGPOWERPC - Compiler is generating PowerPC instructions
1619: GENERATING68K - Compiler is generating 68k family instructions
1620: GENERATING68881 - Compiler is generating mc68881 floating point instructions
1621: GENERATINGCFM - Code being generated assumes CFM calling conventions
1622: CFMSYSTEMCALLS - No A-traps. Systems calls are made using CFM and UPP's
1623: PRAGMA_ALIGN_SUPPORTED - Compiler supports: #pragma options align=mac68k/power/reset
1624: PRAGMA_IMPORT_SUPPORTED - Compiler supports: #pragma import on/off/reset
1625: CGLUESUPPORTED - Clients can use all lowercase toolbox functions that take C strings instead of pascal strings
1626:
1627: ****************************************************************************************************/
1628: #if TARGET_OS_MAC && TARGET_API_MAC_OS8
1629: #define GENERATINGPOWERPC TARGET_CPU_PPC
1630: #define GENERATING68K TARGET_CPU_68K
1631: #define GENERATING68881 TARGET_RT_MAC_68881
1632: #define GENERATINGCFM TARGET_RT_MAC_CFM
1633: #define CFMSYSTEMCALLS TARGET_RT_MAC_CFM
1634: #ifndef CGLUESUPPORTED
1635: #define CGLUESUPPORTED 0
1636: #endif /* !defined(CGLUESUPPORTED) */
1637:
1638: #ifndef OLDROUTINELOCATIONS
1639: #define OLDROUTINELOCATIONS 0
1640: #endif /* !defined(OLDROUTINELOCATIONS) */
1641:
1642: #define PRAGMA_ALIGN_SUPPORTED PRAGMA_STRUCT_ALIGN
1643: #define PRAGMA_IMPORT_SUPPORTED PRAGMA_IMPORT
1644: #endif /* TARGET_OS_MAC && TARGET_API_MAC_OS8 */
1645:
1646:
1647:
1648: /****************************************************************************************************
1649:
1650: OLDROUTINENAMES - "Old" names for Macintosh system calls are allowed in source code.
1651: (e.g. DisposPtr instead of DisposePtr). The names of system routine
1652: are now more sensitive to change because CFM binds by name. In the
1653: past, system routine names were compiled out to just an A-Trap.
1654: Macros have been added that each map an old name to its new name.
1655: This allows old routine names to be used in existing source files,
1656: but the macros only work if OLDROUTINENAMES is true. This support
1657: will be removed in the near future. Thus, all source code should
1658: be changed to use the new names! You can set OLDROUTINENAMES to false
1659: to see if your code has any old names left in it.
1660:
1661: ****************************************************************************************************/
1662: #ifndef OLDROUTINENAMES
1663: #define OLDROUTINENAMES 0
1664: #endif /* !defined(OLDROUTINENAMES) */
1665:
1666:
1667:
1668: /****************************************************************************************************
1669: The following macros isolate the use of 68K inlines in function prototypes.
1670: On the Mac OS under the Classic 68K runtime, function prototypes were followed
1671: by a list of 68K opcodes which the compiler inserted in the generated code instead
1672: of a JSR. Under Classic 68K on the Mac OS, this macro will put the opcodes
1673: in the right syntax. For all other OS's and runtimes the macro suppress the opcodes.
1674: Example:
1675:
1676: EXTERN_P void DrawPicture(PicHandle myPicture, const Rect *dstRect)
1677: ONEWORDINLINE(0xA8F6);
1678:
1679: ****************************************************************************************************/
1680:
1681: #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1682: #define ONEWORDINLINE(w1) = w1
1683: #define TWOWORDINLINE(w1,w2) = {w1,w2}
1684: #define THREEWORDINLINE(w1,w2,w3) = {w1,w2,w3}
1685: #define FOURWORDINLINE(w1,w2,w3,w4) = {w1,w2,w3,w4}
1686: #define FIVEWORDINLINE(w1,w2,w3,w4,w5) = {w1,w2,w3,w4,w5}
1687: #define SIXWORDINLINE(w1,w2,w3,w4,w5,w6) = {w1,w2,w3,w4,w5,w6}
1688: #define SEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7) = {w1,w2,w3,w4,w5,w6,w7}
1689: #define EIGHTWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8) = {w1,w2,w3,w4,w5,w6,w7,w8}
1690: #define NINEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9) = {w1,w2,w3,w4,w5,w6,w7,w8,w9}
1691: #define TENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10) = {w1,w2,w3,w4,w5,w6,w7,w8,w9,w10}
1692: #define ELEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11) = {w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11}
1693: #define TWELVEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12) = {w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12}
1694: #else
1695: #define ONEWORDINLINE(w1)
1696: #define TWOWORDINLINE(w1,w2)
1697: #define THREEWORDINLINE(w1,w2,w3)
1698: #define FOURWORDINLINE(w1,w2,w3,w4)
1699: #define FIVEWORDINLINE(w1,w2,w3,w4,w5)
1700: #define SIXWORDINLINE(w1,w2,w3,w4,w5,w6)
1701: #define SEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7)
1702: #define EIGHTWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8)
1703: #define NINEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9)
1704: #define TENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10)
1705: #define ELEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11)
1706: #define TWELVEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12)
1707: #endif
1708:
1709:
1710: /****************************************************************************************************
1711:
1712: TARGET_CARBON - default: false. Switches all of the above as described. Overrides all others
1713: - NOTE: If you set TARGET_CARBON to 1, then the other switches will be setup by
1714: ConditionalMacros, and should not be set manually.
1715:
1716: If you wish to do development for pre-Carbon Systems, you can set the following:
1717:
1718: OPAQUE_TOOLBOX_STRUCTS - default: false. True for Carbon builds, hides struct fields.
1719: OPAQUE_UPP_TYPES - default: false. True for Carbon builds, UPP types are unique.
1720: ACCESSOR_CALLS_ARE_FUNCTIONS - default: false. True for Carbon builds, preserve old #define-style accessors
1721: CALL_NOT_IN_CARBON - default: true. False for Carbon builds, hide calls not supported in Carbon
1722:
1723: MIXEDMODE_CALLS_ARE_FUNCTIONS - deprecated.
1724:
1725: ****************************************************************************************************/
1726: #if TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8
1727: #ifndef OPAQUE_TOOLBOX_STRUCTS
1728: #define OPAQUE_TOOLBOX_STRUCTS 1
1729: #endif /* !defined(OPAQUE_TOOLBOX_STRUCTS) */
1730:
1731: #ifndef OPAQUE_UPP_TYPES
1732: #define OPAQUE_UPP_TYPES 1
1733: #endif /* !defined(OPAQUE_UPP_TYPES) */
1734:
1735: #ifndef ACCESSOR_CALLS_ARE_FUNCTIONS
1736: #define ACCESSOR_CALLS_ARE_FUNCTIONS 1
1737: #endif /* !defined(ACCESSOR_CALLS_ARE_FUNCTIONS) */
1738:
1739: #ifndef CALL_NOT_IN_CARBON
1740: #define CALL_NOT_IN_CARBON 0
1741: #endif /* !defined(CALL_NOT_IN_CARBON) */
1742:
1743: #ifndef MIXEDMODE_CALLS_ARE_FUNCTIONS
1744: #define MIXEDMODE_CALLS_ARE_FUNCTIONS 1
1745: #endif /* !defined(MIXEDMODE_CALLS_ARE_FUNCTIONS) */
1746:
1747: #else
1748: #ifndef OPAQUE_TOOLBOX_STRUCTS
1749: #define OPAQUE_TOOLBOX_STRUCTS 0
1750: #endif /* !defined(OPAQUE_TOOLBOX_STRUCTS) */
1751:
1752: #ifndef OPAQUE_UPP_TYPES
1753: #define OPAQUE_UPP_TYPES 0
1754: #endif /* !defined(OPAQUE_UPP_TYPES) */
1755:
1756: #ifndef ACCESSOR_CALLS_ARE_FUNCTIONS
1757: #define ACCESSOR_CALLS_ARE_FUNCTIONS 0
1758: #endif /* !defined(ACCESSOR_CALLS_ARE_FUNCTIONS) */
1759:
1760: /*
1761: * It's possible to have ACCESSOR_CALLS_ARE_FUNCTIONS set to true and OPAQUE_TOOLBOX_STRUCTS
1762: * set to false, but not the other way around, so make sure the defines are not set this way.
1763: */
1764: #if OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS
1765: #error OPAQUE_TOOLBOX_STRUCTS cannot be true when ACCESSOR_CALLS_ARE_FUNCTIONS is false
1766: #endif /* OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS */
1767:
1768: #ifndef CALL_NOT_IN_CARBON
1769: #define CALL_NOT_IN_CARBON 1
1770: #endif /* !defined(CALL_NOT_IN_CARBON) */
1771:
1772: #ifndef MIXEDMODE_CALLS_ARE_FUNCTIONS
1773: #define MIXEDMODE_CALLS_ARE_FUNCTIONS 0
1774: #endif /* !defined(MIXEDMODE_CALLS_ARE_FUNCTIONS) */
1775:
1776: #endif /* TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 */
1777:
1778:
1779: #endif /* __CONDITIONALMACROS__ */
1780:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.