diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/conditionalmacros.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/conditionalmacros.h')
| -rw-r--r-- | common/quicktime_win32/conditionalmacros.h | 1866 |
1 files changed, 1866 insertions, 0 deletions
diff --git a/common/quicktime_win32/conditionalmacros.h b/common/quicktime_win32/conditionalmacros.h new file mode 100644 index 0000000..2c18904 --- /dev/null +++ b/common/quicktime_win32/conditionalmacros.h @@ -0,0 +1,1866 @@ +/* + File: ConditionalMacros.h + + Contains: Set up for compiler independent conditionals + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1993-2001 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __CONDITIONALMACROS__ +#define __CONDITIONALMACROS__ + +/**************************************************************************************************** + UNIVERSAL_INTERFACES_VERSION + + 0x0400 --> version 4.0 (Mac OS X only) + 0x0335 --> version 3.4 + 0x0331 --> version 3.3.1 + 0x0330 --> version 3.3 + 0x0320 --> version 3.2 + 0x0310 --> version 3.1 + 0x0301 --> version 3.0.1 + 0x0300 --> version 3.0 + 0x0210 --> version 2.1 + This conditional did not exist prior to version 2.1 +****************************************************************************************************/ +#define UNIVERSAL_INTERFACES_VERSION 0x0340 +#define UNIVERSAL_INTERFACES_SEED_VERSION 22 + + +/**************************************************************************************************** + + TARGET_CPU_* + These conditionals specify which microprocessor instruction set is being + generated. At most one of these is true, the rest are false. + + TARGET_CPU_PPC - Compiler is generating PowerPC instructions + TARGET_CPU_68K - Compiler is generating 680x0 instructions + TARGET_CPU_X86 - Compiler is generating x86 instructions + TARGET_CPU_MIPS - Compiler is generating MIPS instructions + TARGET_CPU_SPARC - Compiler is generating Sparc instructions + TARGET_CPU_ALPHA - Compiler is generating Dec Alpha instructions + + + TARGET_OS_* + These conditionals specify in which Operating System the generated code will + run. At most one of the these is true, the rest are false. + + TARGET_OS_MAC - Generate code will run under Mac OS + TARGET_OS_WIN32 - Generate code will run under 32-bit Windows + TARGET_OS_UNIX - Generate code will run under some unix + + + TARGET_RT_* + These conditionals specify in which runtime the generated code will + run. This is needed when the OS and CPU support more than one runtime + (e.g. MacOS on 68K supports CFM68K and Classic 68k). + + TARGET_RT_LITTLE_ENDIAN - Generated code uses little endian format for integers + TARGET_RT_BIG_ENDIAN - Generated code uses big endian format for integers + TARGET_RT_MAC_CFM - TARGET_OS_MAC is true and CFM68K or PowerPC CFM (TVectors) are used + TARGET_RT_MAC_MACHO - TARGET_OS_MAC is true and Mach-O style runtime + TARGET_RT_MAC_68881 - TARGET_OS_MAC is true and 68881 floating point instructions used + + + TARGET__API_*_* + These conditionals are used to differentiate between sets of API's on the same + processor under the same OS. The first section after _API_ is the OS. The + second section is the API set. Unlike TARGET_OS_ and TARGET_CPU_, these + conditionals are not mutally exclusive. This file will attempt to auto-configure + all TARGET_API_*_* values, but will often need a TARGET_API_*_* value predefined + in order to disambiguate. + + TARGET_API_MAC_OS8 - Code is being compiled to run on System 7 through Mac OS 8.x + TARGET_API_MAC_CARBON - Code is being compiled to run on Mac OS 8 and Mac OS X via CarbonLib + TARGET_API_MAC_OSX - Code is being compiled to run on Mac OS X + + + PRAGMA_* + These conditionals specify whether the compiler supports particular #pragma's + + PRAGMA_IMPORT - Compiler supports: #pragma import on/off/reset + PRAGMA_ONCE - Compiler supports: #pragma once + PRAGMA_STRUCT_ALIGN - Compiler supports: #pragma options align=mac68k/power/reset + PRAGMA_STRUCT_PACK - Compiler supports: #pragma pack(n) + PRAGMA_STRUCT_PACKPUSH - Compiler supports: #pragma pack(push, n)/pack(pop) + PRAGMA_ENUM_PACK - Compiler supports: #pragma options(!pack_enums) + PRAGMA_ENUM_ALWAYSINT - Compiler supports: #pragma enumsalwaysint on/off/reset + PRAGMA_ENUM_OPTIONS - Compiler supports: #pragma options enum=int/small/reset + + + FOUR_CHAR_CODE + This conditional does the proper byte swapping to assue that a four character code (e.g. 'TEXT') + is compiled down to the correct value on all compilers. + + FOUR_CHAR_CODE('abcd') - Convert a four-char-code to the correct 32-bit value + + + TYPE_* + These conditionals specify whether the compiler supports particular types. + + TYPE_LONGLONG - Compiler supports "long long" 64-bit integers + TYPE_BOOL - Compiler supports "bool" + TYPE_EXTENDED - Compiler supports "extended" 80/96 bit floating point + TYPE_LONGDOUBLE_IS_DOUBLE - Compiler implements "long double" same as "double" + + + FUNCTION_* + These conditionals specify whether the compiler supports particular language extensions + to function prototypes and definitions. + + FUNCTION_PASCAL - Compiler supports "pascal void Foo()" + FUNCTION_DECLSPEC - Compiler supports "__declspec(xxx) void Foo()" + FUNCTION_WIN32CC - Compiler supports "void __cdecl Foo()" and "void __stdcall Foo()" + +****************************************************************************************************/ + +#if defined(__MRC__) + /* + MrC[pp] compiler from Apple Computer, Inc. + */ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #if (__MRC__ > 0x0200) && (__MRC__ < 0x0700) + #define PRAGMA_IMPORT 1 + #else + #define PRAGMA_IMPORT 0 + #endif + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 1 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 1 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #if (__MRC__ > 0x0300) && (__MRC__ < 0x0700) + #if __option(longlong) + + + #define TYPE_LONGLONG 1 + + + #else + #define TYPE_LONGLONG 0 + #endif + #if __option(bool) + #define TYPE_BOOL 1 + #else + #define TYPE_BOOL 0 + #endif + #define SLASH_INCLUDES_UNSUPPORTED !__option(unix_includes) + #else + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define SLASH_INCLUDES_UNSUPPORTED 1 + #endif + #define TYPE_EXTENDED 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 0 + + #define FUNCTION_PASCAL 1 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + + +#elif defined(__SC__) && (defined(MPW_CPLUS) || defined(MPW_C)) + /* + SC[pp] compiler from Apple Computer, Inc. + */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #if defined(__CFM68K__) + #define TARGET_RT_MAC_CFM 1 + #else + #define TARGET_RT_MAC_CFM 0 + #endif + #define TARGET_RT_MAC_MACHO 0 + #if defined(mc68881) + #define TARGET_RT_MAC_68881 1 + #else + #define TARGET_RT_MAC_68881 0 + #endif + #if TARGET_RT_MAC_CFM + #define PRAGMA_IMPORT 1 + #if (__SC__ <= 0x0810) + /* old versions of SC don't support �#pragma import reset� */ + #define PRAGMA_IMPORT_OFF 1 + #endif + #else + #define PRAGMA_IMPORT 0 + #endif + #if (__SC__ >= 0x0801) + #define PRAGMA_STRUCT_ALIGN 1 + #else + #define PRAGMA_STRUCT_ALIGN 0 + #endif + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 1 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_LONGLONG 0 + #define TYPE_EXTENDED 1 + #define TYPE_LONGDOUBLE_IS_DOUBLE 0 + #if (__SC__ > 0x0810) + #if __option(bool) + #define TYPE_BOOL 1 + #else + #define TYPE_BOOL 0 + #endif + #else + #define TYPE_BOOL 0 + #endif + #if TARGET_RT_MAC_CFM + #define FUNCTION_PASCAL 0 + #else + #define FUNCTION_PASCAL 1 + #endif + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #define SLASH_INCLUDES_UNSUPPORTED !__option(unix_includes) + + +#elif defined(__MWERKS__) + /* + CodeWarrior compiler from Metrowerks, Inc. + */ + #if (__MWERKS__ < 0x0900) || macintosh + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #if powerc + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #else + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #if defined(__CFM68K__) + #define TARGET_RT_MAC_CFM 1 + #else + #define TARGET_RT_MAC_CFM 0 + #endif + #define TARGET_RT_MAC_MACHO 0 + #if __MC68881__ + #define TARGET_RT_MAC_68881 1 + #else + #define TARGET_RT_MAC_68881 0 + #endif + #if __option(IEEEdoubles) + #define TYPE_LONGDOUBLE_IS_DOUBLE 0 + #else + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #endif + #endif + #define PRAGMA_ONCE 1 + #if (__MWERKS__ >= 0x0700) + #define PRAGMA_IMPORT TARGET_RT_MAC_CFM + #else + #define PRAGMA_IMPORT 0 + #endif + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 1 + #define PRAGMA_ENUM_OPTIONS 0 + #if __option(enumsalwaysint) && __option(ANSI_strict) + #define FOUR_CHAR_CODE(x) ((long)(x)) /* otherwise compiler will complain about values with high bit set */ + #else + #define FOUR_CHAR_CODE(x) (x) + #endif + #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM + #define FUNCTION_PASCAL 1 + #else + #define FUNCTION_PASCAL 1 + #endif + #if (__MWERKS__ >= 0x2000) + #define FUNCTION_DECLSPEC 1 + #else + #define FUNCTION_DECLSPEC 0 + #endif + #define FUNCTION_WIN32CC 0 + + + #elif (__MWERKS__ >= 0x0900) && __INTEL__ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 1 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 1 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #define __COREAUDIO_USE_FLAT_INCLUDES__ 1 + #define PRAGMA_ONCE 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 1 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define FUNCTION_PASCAL 0 + #ifndef FUNCTION_DECLSPEC /* allow use of __declspec(dllimport) to be enabled */ + #define FUNCTION_DECLSPEC 0 /* QuickTime for Windows cannot use dllimport */ + #endif + #ifndef FUNCTION_WIN32CC /* allow calling convention to be overriddden */ + #define FUNCTION_WIN32CC 1 + #endif + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + + + #elif (__MWERKS__ >= 0x1900) && __MIPS__ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 1 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 1 + #if __option(little_endian) + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #else + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #endif + #define PRAGMA_ONCE 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 1 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + + + #elif (__MWERKS__ >= 0x2110) && __MACH__ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #if __option(little_endian) + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #else + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #endif + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 1 + #define TARGET_RT_MAC_68881 0 + #define PRAGMA_ONCE 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 1 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define FUNCTION_PASCAL 1 + #define FUNCTION_DECLSPEC 1 + #define FUNCTION_WIN32CC 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #else + #error unknown Metrowerks compiler + #endif + + + #if (__MWERKS__ >= 0x1100) + #if __option(longlong) + #define TYPE_LONGLONG 1 + #else + #define TYPE_LONGLONG 0 + #endif + #else + #define TYPE_LONGLONG 0 + #endif + #if (__MWERKS__ >= 0x1000) + #if __option(bool) + #define TYPE_BOOL 1 + #else + #define TYPE_BOOL 0 + #endif + #else + #define TYPE_BOOL 0 + #endif + #define TYPE_EXTENDED 0 + #define SLASH_INCLUDES_UNSUPPORTED 1 + + +#elif defined(SYMANTEC_CPLUS) || defined(SYMANTEC_C) + /* + C and C++ compiler from Symantec, Inc. + */ + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #if powerc + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #else + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #if defined(__CFM68K) + #define TARGET_RT_MAC_CFM 1 + #else + #define TARGET_RT_MAC_CFM 0 + #endif + #define TARGET_RT_MAC_MACHO 0 + #if mc68881 + #define TARGET_RT_MAC_68881 1 + #else + #define TARGET_RT_MAC_68881 0 + #endif + #endif + #define PRAGMA_IMPORT 0 + #define PRAGMA_ONCE 1 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 1 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #if __useAppleExts__ + #define TYPE_EXTENDED 1 + #else + #define TYPE_EXTENDED 0 + #endif + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #define SLASH_INCLUDES_UNSUPPORTED 1 + + +#elif defined(THINK_C) + /* + THINK C compiler from Symantec, Inc. << WARNING: Unsupported Compiler >> + */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 0 + #if defined(mc68881) + #define TARGET_RT_MAC_68881 1 + #else + #define TARGET_RT_MAC_68881 0 + #endif + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 1 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 1 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_EXTENDED 1 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + + #define FUNCTION_PASCAL 1 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #define SLASH_INCLUDES_UNSUPPORTED 1 + + +#elif defined(__PPCC__) + /* + PPCC compiler from Apple Computer, Inc. << WARNING: Unsupported Compiler >> + */ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #define SLASH_INCLUDES_UNSUPPORTED 1 + + +#elif defined(applec) && !defined(__SC__) + /* + MPW C compiler from Apple Computer, Inc. << WARNING: Unsupported Compiler >> + */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 0 + #if defined(mc68881) + #define TARGET_RT_MAC_68881 1 + #else + #define TARGET_RT_MAC_68881 0 + #endif + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + /* Note: MPW C 3.2 had a bug where MACRO('xx ') would cause 'xx ' to be misevaluated */ + #define FOUR_CHAR_CODE + + #define TYPE_EXTENDED 1 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 0 + + #define FUNCTION_PASCAL 1 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #define SLASH_INCLUDES_UNSUPPORTED 1 + + +#elif defined(__GNUC__) && (defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__NEXT_CPP__)) + /* + gcc based compilers used on OpenStep -> Rhapsody -> Mac OS X + */ + #if defined(__ppc__) || defined(powerpc) || defined(ppc) + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_68881 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #ifdef __MACH__ + #define TARGET_RT_MAC_MACHO 1 + #define TARGET_RT_MAC_CFM 0 + #else + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_CFM 1 + #endif + #elif defined(m68k) + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 1 + #define TARGET_RT_MAC_68881 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #elif defined(sparc) + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 1 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 1 + #define TARGET_RT_MAC_68881 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #elif defined(__i386__) || defined(i386) || defined(intel) + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 1 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 1 + #define TARGET_RT_MAC_68881 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #else + #error unrecognized GNU C compiler + #endif + + +#ifndef TARGET_OS_MAC + #define TARGET_OS_MAC 1 +#endif +#ifndef TARGET_OS_WIN32 + #define TARGET_OS_WIN32 0 +#endif +#ifndef TARGET_OS_UNIX + #define TARGET_OS_UNIX 0 +#endif + + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #if __GNUC__ >= 2 + #define TYPE_LONGLONG 1 + #else + #define TYPE_LONGLONG 0 + #endif + #ifdef __cplusplus + #define TYPE_BOOL 1 + #else + #define TYPE_BOOL 0 + #endif + + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#elif defined(__GNUC__) && defined(__linux__) + /* + gcc (egcs, really) for MkLinux. << WARNING: Unsupported Compiler >> + */ + #if #cpu(powerpc) + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #elif #cpu(m68k) + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #else + #error unsupported GNU C compiler + #endif + + #if #system(macos) + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #elif #system(unix) + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 1 + #else + #error unsupported GNU C compiler + #endif + + + + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #ifdef _LONG_LONG + #define TYPE_LONGLONG 1 + #else + #define TYPE_LONGLONG 0 + #endif + #define TYPE_BOOL 0 + + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#elif defined(__GNUC__) && defined(__MINGW32__) + /* + Mingw gnu gcc/egcs compiler for Win32 systems (http://www.mingw.org). + */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 1 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 1 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #define __COREAUDIO_USE_FLAT_INCLUDES__ 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define TYPE_EXTENDED 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_LONGLONG 1 + #define TYPE_BOOL 1 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#elif defined(__GNUC__) + /* + gC for MPW from Free Software Foundation, Inc. + */ + #if #cpu(powerpc) + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #elif #cpu(m68k) + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #else + #error unsupported GNU C compiler + #endif + + #if #system(macos) + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #elif #system(unix) + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 1 + #else + #error unsupported GNU C compiler + #endif + + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #ifdef _LONG_LONG + #define TYPE_LONGLONG 1 + #else + #define TYPE_LONGLONG 0 + #endif + #define TYPE_BOOL 0 + + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#elif defined(__xlc) || defined(__xlC) || defined(__xlC__) || defined(__XLC121__) + /* + xlc and xlC on RS/6000 from IBM, Inc. + */ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #if defined(_AIX) + #define TARGET_OS_MAC 0 + #define TARGET_OS_UNIX 1 + #else + #define TARGET_OS_MAC 1 + #define TARGET_OS_UNIX 0 + #endif + #define TARGET_OS_WIN32 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 1 + #define FOUR_CHAR_CODE(x) (x) + + #define TYPE_LONGDOUBLE_IS_DOUBLE 0 + #define TYPE_EXTENDED 0 + #ifdef _LONG_LONG + #define TYPE_LONGLONG 1 + #else + #define TYPE_LONGLONG 0 + #endif + #define TYPE_BOOL 0 + + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#elif defined(_MSC_VER) && !defined(__MWERKS__) + /* + Visual Studio C/C++ from Microsoft, Inc. + */ + #if defined(_M_M68K) /* Visual C++ with Macintosh 68K target */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 1 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 0 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 1 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + #elif defined(_M_MPPC) /* Visual C++ with Macintosh PowerPC target */ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 1 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + #elif defined(_M_IX86) /* Visual Studio with Intel x86 target */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 1 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 1 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #define __COREAUDIO_USE_FLAT_INCLUDES__ 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 1 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 1 /* note: uses __int64 instead of long long */ + #define LONGLONG_TYPENAME __int64 + + #define LONGLONG_SIGNED_MAX (9223372036854775807i64) + #define LONGLONG_SIGNED_MIN (-9223372036854775807i64 - 1) + #define LONGLONG_UNSIGNED_MAX (0xffffffffffffffffui64) + + #if defined(__cplusplus) && (_MSC_VER >= 1100) + #define TYPE_BOOL 1 + #else + #define TYPE_BOOL 0 + #endif + #define FUNCTION_PASCAL 0 + #ifndef FUNCTION_DECLSPEC /* allow use of __declspec(dllimport) to be enabled */ + #define FUNCTION_DECLSPEC 0 /* QuickTime for Windows cannot use dllimport */ + #endif + #ifndef FUNCTION_WIN32CC /* allow calling convention to be overriddden */ + #define FUNCTION_WIN32CC 1 + #endif + /* Warning: This macros away the pascal word in source code. */ + /* Very useful for code that needs to compile on Mac 68k and Windows */ + /* but can silently change code */ + #undef pascal + #define pascal + + #elif defined(_M_ALPHA) /* Visual C++ with Dec Alpha target */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 1 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 1 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #define __COREAUDIO_USE_FLAT_INCLUDES__ 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \ + | (((unsigned long) ((x) & 0x0000FF00)) << 8) \ + | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \ + | (((unsigned long) ((x) & 0xFF000000)) >> 24) + #define TYPE_EXTENDED 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + #elif defined(_M_PPC) /* Visual C++ for Windows NT on PowerPC target */ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 1 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #define __COREAUDIO_USE_FLAT_INCLUDES__ 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \ + | (((unsigned long) ((x) & 0x0000FF00)) << 8) \ + | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \ + | (((unsigned long) ((x) & 0xFF000000)) >> 24) + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + #elif defined(_M_MRX000) /* Visual C++ for Windows NT on MIPS target */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 1 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 1 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #define __COREAUDIO_USE_FLAT_INCLUDES__ 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 1 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \ + | (((unsigned long) ((x) & 0x0000FF00)) << 8) \ + | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \ + | (((unsigned long) ((x) & 0xFF000000)) >> 24) + #define TYPE_EXTENDED 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + #endif + + +#elif defined(__MOTO__) + /* + mcc from Motorola, Inc. + */ + #define TARGET_CPU_PPC 1 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define TARGET_RT_MAC_CFM 1 + #define TARGET_RT_MAC_MACHO 0 + #define TARGET_RT_MAC_68881 0 + #define PRAGMA_IMPORT 0 /* how is this detected ?? */ + #define PRAGMA_STRUCT_ALIGN 1 + #if __MOTO__ >= 40702 /* MCC version 4.7.2 */ + #define PRAGMA_ONCE 1 + #else + #define PRAGMA_ONCE 0 + #endif + #define PRAGMA_STRUCT_PACK 0 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define TYPE_LONGLONG 0 /* how is this detected ?? */ + #ifdef _BOOL + #define TYPE_BOOL 1 + #else + #define TYPE_BOOL 0 + #endif + #define TYPE_EXTENDED 0 + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + + +#elif defined(_MIPS_ISA) + /* + MIPSpro compiler from Silicon Graphics Inc. + */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 1 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 1 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (x) + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#elif defined(__sparc) + /* + SPARCompiler compiler from Sun Microsystems Inc. + */ + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 1 + #define TARGET_CPU_ALPHA 0 + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 1 + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #define PRAGMA_IMPORT 0 + #define PRAGMA_STRUCT_ALIGN 0 + #define PRAGMA_ONCE 0 + #define PRAGMA_STRUCT_PACK 1 + #define PRAGMA_STRUCT_PACKPUSH 0 + #define PRAGMA_ENUM_PACK 0 + #define PRAGMA_ENUM_ALWAYSINT 0 + #define PRAGMA_ENUM_OPTIONS 0 + #define FOUR_CHAR_CODE(x) (((unsigned long) ((x) & 0x000000FF)) << 24) \ + | (((unsigned long) ((x) & 0x0000FF00)) << 8) \ + | (((unsigned long) ((x) & 0x00FF0000)) >> 8) \ + | (((unsigned long) ((x) & 0xFF000000)) >> 24) + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #define TYPE_EXTENDED 0 + #define TYPE_LONGLONG 0 + #define TYPE_BOOL 0 + #define FUNCTION_PASCAL 0 + #define FUNCTION_DECLSPEC 0 + #define FUNCTION_WIN32CC 0 + + +#else + /* + Unknown compiler, perhaps set up from the command line (e.g. -d TARGET_CPU_MIPS , etc.) + */ + #if defined(TARGET_CPU_PPC) && TARGET_CPU_PPC + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #elif defined(TARGET_CPU_68K) && TARGET_CPU_68K + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #elif defined(TARGET_CPU_X86) && TARGET_CPU_X86 + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #elif defined(TARGET_CPU_MIPS) && TARGET_CPU_MIPS + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #elif defined(TARGET_CPU_SPARC) && TARGET_CPU_SPARC + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_ALPHA 0 + #elif defined(TARGET_CPU_ALPHA) && TARGET_CPU_ALPHA + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + + + #else + /* + NOTE: If your compiler errors out here then support for your compiler + has not yet been added to ConditionalMacros.h. + + ConditionalMacros.h is designed to be plug-and-play. It auto detects + which compiler is being run and configures the TARGET_ conditionals + appropriately. + + The short term work around is to set the TARGET_CPU_ and TARGET_OS_ + on the command line to the compiler (e.g. d TARGET_CPU_MIPS -d TARGET_OS_UNIX) + + The long term solution is to add a new case to this file which + auto detects your compiler and sets up the TARGET_ conditionals. + If you do this, send the changes you made to [email protected] + to get it integrated into the next release of ConditionalMacros.h. + */ + #error ConditionalMacros.h: unknown compiler (see comment above) + #define TARGET_CPU_PPC 0 + #define TARGET_CPU_68K 0 + #define TARGET_CPU_X86 0 + #define TARGET_CPU_MIPS 0 + #define TARGET_CPU_SPARC 0 + #define TARGET_CPU_ALPHA 0 + #endif + + + + #if defined(TARGET_OS_MAC) && TARGET_OS_MAC + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #elif defined(TARGET_OS_WIN32) && TARGET_OS_WIN32 + #define TARGET_OS_MAC 0 + #define TARGET_OS_UNIX 0 + #elif defined(TARGET_OS_UNIX) && TARGET_OS_UNIX + #define TARGET_OS_MAC 0 + #define TARGET_OS_WIN32 0 + #elif TARGET_CPU_PPC || TARGET_CPU_68K + #define TARGET_OS_MAC 1 + #define TARGET_OS_WIN32 0 + #define TARGET_OS_UNIX 0 + #else + #error ConditionalMacros.h: unknown target OS (see comment above) + #endif + + #if !defined(TARGET_RT_BIG_ENDIAN) && !defined(TARGET_RT_LITTLE_ENDIAN) + #if TARGET_OS_MAC + #define TARGET_RT_LITTLE_ENDIAN 0 + #define TARGET_RT_BIG_ENDIAN 1 + #elif TARGET_OS_WIN32 + #define TARGET_RT_LITTLE_ENDIAN 1 + #define TARGET_RT_BIG_ENDIAN 0 + #endif + #endif + + #if defined(TARGET_RT_BIG_ENDIAN) && !defined(TARGET_RT_LITTLE_ENDIAN) + #define TARGET_RT_LITTLE_ENDIAN !TARGET_RT_BIG_ENDIAN + #elif !defined(TARGET_RT_BIG_ENDIAN) && defined(TARGET_RT_LITTLE_ENDIAN) + #define TARGET_RT_BIG_ENDIAN !TARGET_RT_LITTLE_ENDIAN + #endif + + #if !defined(TARGET_RT_BIG_ENDIAN) && !defined(TARGET_RT_LITTLE_ENDIAN) + #error unknown endianess of target processor + #endif + + #if TARGET_OS_MAC + #ifndef TARGET_RT_MAC_CFM + #define TARGET_RT_MAC_CFM TARGET_CPU_PPC + #endif + #ifndef TARGET_RT_MAC_68881 + #define TARGET_RT_MAC_68881 0 + #endif + #ifndef TARGET_RT_MAC_MACHO + #define TARGET_RT_MAC_MACHO !TARGET_RT_MAC_CFM + #endif + #endif + + + + #ifndef PRAGMA_IMPORT + #define PRAGMA_IMPORT 0 + #endif + #ifndef PRAGMA_STRUCT_ALIGN + #define PRAGMA_STRUCT_ALIGN 0 + #endif + #ifndef PRAGMA_ONCE + #define PRAGMA_ONCE 0 + #endif + #ifndef PRAGMA_STRUCT_PACK + #define PRAGMA_STRUCT_PACK 0 + #endif + #ifndef PRAGMA_STRUCT_PACKPUSH + #define PRAGMA_STRUCT_PACKPUSH 0 + #endif + #ifndef PRAGMA_ENUM_PACK + #define PRAGMA_ENUM_PACK 0 + #endif + #ifndef PRAGMA_ENUM_ALWAYSINT + #define PRAGMA_ENUM_ALWAYSINT 0 + #endif + #ifndef PRAGMA_ENUM_OPTIONS + #define PRAGMA_ENUM_OPTIONS 0 + #endif + #ifndef FOUR_CHAR_CODE + #define FOUR_CHAR_CODE(x) (x) + #endif + + #ifndef TYPE_LONGDOUBLE_IS_DOUBLE + #define TYPE_LONGDOUBLE_IS_DOUBLE 1 + #endif + #ifndef TYPE_EXTENDED + #define TYPE_EXTENDED 0 + #endif + #ifndef TYPE_LONGLONG + #define TYPE_LONGLONG 0 + #endif + #ifndef TYPE_BOOL + #define TYPE_BOOL 0 + #endif + #ifndef FUNCTION_PASCAL + #define FUNCTION_PASCAL 0 + #endif + #ifndef FUNCTION_DECLSPEC + #define FUNCTION_DECLSPEC 0 + #endif + #ifndef FUNCTION_WIN32CC + #define FUNCTION_WIN32CC 0 + #endif +#endif + + + +/**************************************************************************************************** + + Under MacOS, the classic 68k runtime has two calling conventions: pascal or C + Under Win32, there are two calling conventions: __cdecl or __stdcall + Headers and implementation files can use the following macros to make their + source more portable by hiding the calling convention details: + + EXTERN_API* + These macros are used to specify the calling convention on a function prototype. + + EXTERN_API - Classic 68k: pascal, Win32: __cdecl + EXTERN_API_C - Classic 68k: C, Win32: __cdecl + EXTERN_API_STDCALL - Classic 68k: pascal, Win32: __stdcall + EXTERN_API_C_STDCALL - Classic 68k: C, Win32: __stdcall + + + DEFINE_API* + These macros are used to specify the calling convention on a function definition. + + DEFINE_API - Classic 68k: pascal, Win32: __cdecl + DEFINE_API_C - Classic 68k: C, Win32: __cdecl + DEFINE_API_STDCALL - Classic 68k: pascal, Win32: __stdcall + DEFINE_API_C_STDCALL - Classic 68k: C, Win32: __stdcall + + + CALLBACK_API* + These macros are used to specify the calling convention of a function pointer. + + CALLBACK_API - Classic 68k: pascal, Win32: __stdcall + CALLBACK_API_C - Classic 68k: C, Win32: __stdcall + CALLBACK_API_STDCALL - Classic 68k: pascal, Win32: __cdecl + CALLBACK_API_C_STDCALL - Classic 68k: C, Win32: __cdecl + +****************************************************************************************************/ + +#if FUNCTION_PASCAL && !FUNCTION_DECLSPEC && !FUNCTION_WIN32CC + /* compiler supports pascal keyword only */ + #define EXTERN_API(_type) extern pascal _type + #define EXTERN_API_C(_type) extern _type + #define EXTERN_API_STDCALL(_type) extern pascal _type + #define EXTERN_API_C_STDCALL(_type) extern _type + + #define DEFINE_API(_type) pascal _type + #define DEFINE_API_C(_type) _type + #define DEFINE_API_STDCALL(_type) pascal _type + #define DEFINE_API_C_STDCALL(_type) _type + + #define CALLBACK_API(_type, _name) pascal _type (*_name) + #define CALLBACK_API_C(_type, _name) _type (*_name) + #define CALLBACK_API_STDCALL(_type, _name) pascal _type (*_name) + #define CALLBACK_API_C_STDCALL(_type, _name) _type (*_name) + +#elif FUNCTION_PASCAL && FUNCTION_DECLSPEC && !FUNCTION_WIN32CC + /* compiler supports pascal and __declspec() */ + #define EXTERN_API(_type) extern pascal __declspec(dllimport) _type + #define EXTERN_API_C(_type) extern __declspec(dllimport) _type + #define EXTERN_API_STDCALL(_type) extern pascal __declspec(dllimport) _type + #define EXTERN_API_C_STDCALL(_type) extern __declspec(dllimport) _type + + #define DEFINE_API(_type) pascal __declspec(dllexport) _type + #define DEFINE_API_C(_type) __declspec(dllexport) _type + #define DEFINE_API_STDCALL(_type) pascal __declspec(dllexport) _type + #define DEFINE_API_C_STDCALL(_type) __declspec(dllexport) _type + + #define CALLBACK_API(_type, _name) pascal _type (*_name) + #define CALLBACK_API_C(_type, _name) _type (*_name) + #define CALLBACK_API_STDCALL(_type, _name) pascal _type (*_name) + #define CALLBACK_API_C_STDCALL(_type, _name) _type (*_name) + +#elif !FUNCTION_PASCAL && FUNCTION_DECLSPEC && !FUNCTION_WIN32CC + /* compiler supports __declspec() */ + #define EXTERN_API(_type) extern __declspec(dllimport) _type + #define EXTERN_API_C(_type) extern __declspec(dllimport) _type + #define EXTERN_API_STDCALL(_type) extern __declspec(dllimport) _type + #define EXTERN_API_C_STDCALL(_type) extern __declspec(dllimport) _type + + #define DEFINE_API(_type) __declspec(dllexport) _type + #define DEFINE_API_C(_type) __declspec(dllexport) _type + #define DEFINE_API_STDCALL(_type) __declspec(dllexport) _type + #define DEFINE_API_C_STDCALL(_type) __declspec(dllexport) _type + + #define CALLBACK_API(_type, _name) _type ( * _name) + #define CALLBACK_API_C(_type, _name) _type ( * _name) + #define CALLBACK_API_STDCALL(_type, _name) _type ( * _name) + #define CALLBACK_API_C_STDCALL(_type, _name) _type ( * _name) + +#elif !FUNCTION_PASCAL && FUNCTION_DECLSPEC && FUNCTION_WIN32CC + /* compiler supports __declspec() and __cdecl */ + #define EXTERN_API(_type) __declspec(dllimport) _type __cdecl + #define EXTERN_API_C(_type) __declspec(dllimport) _type __cdecl + #define EXTERN_API_STDCALL(_type) __declspec(dllimport) _type __stdcall + #define EXTERN_API_C_STDCALL(_type) __declspec(dllimport) _type __stdcall + + #define DEFINE_API(_type) __declspec(dllexport) _type __cdecl + #define DEFINE_API_C(_type) __declspec(dllexport) _type __cdecl + #define DEFINE_API_STDCALL(_type) __declspec(dllexport) _type __stdcall + #define DEFINE_API_C_STDCALL(_type) __declspec(dllexport) _type __stdcall + + #define CALLBACK_API(_type, _name) _type (__cdecl * _name) + #define CALLBACK_API_C(_type, _name) _type (__cdecl * _name) + #define CALLBACK_API_STDCALL(_type, _name) _type (__stdcall * _name) + #define CALLBACK_API_C_STDCALL(_type, _name) _type (__stdcall * _name) + +#elif !FUNCTION_PASCAL && !FUNCTION_DECLSPEC && FUNCTION_WIN32CC + /* compiler supports __cdecl */ + #define EXTERN_API(_type) _type __cdecl + #define EXTERN_API_C(_type) _type __cdecl + #define EXTERN_API_STDCALL(_type) _type __stdcall + #define EXTERN_API_C_STDCALL(_type) _type __stdcall + + #define DEFINE_API(_type) _type __cdecl + #define DEFINE_API_C(_type) _type __cdecl + #define DEFINE_API_STDCALL(_type) _type __stdcall + #define DEFINE_API_C_STDCALL(_type) _type __stdcall + + #define CALLBACK_API(_type, _name) _type (__cdecl * _name) + #define CALLBACK_API_C(_type, _name) _type (__cdecl * _name) + #define CALLBACK_API_STDCALL(_type, _name) _type (__stdcall * _name) + #define CALLBACK_API_C_STDCALL(_type, _name) _type (__stdcall * _name) + +#else + /* compiler supports no extensions */ + #define EXTERN_API(_type) extern _type + #define EXTERN_API_C(_type) extern _type + #define EXTERN_API_STDCALL(_type) extern _type + #define EXTERN_API_C_STDCALL(_type) extern _type + + #define DEFINE_API(_type) _type + #define DEFINE_API_C(_type) _type + #define DEFINE_API_STDCALL(_type) _type + #define DEFINE_API_C_STDCALL(_type) _type + + #define CALLBACK_API(_type, _name) _type ( * _name) + #define CALLBACK_API_C(_type, _name) _type ( * _name) + #define CALLBACK_API_STDCALL(_type, _name) _type ( * _name) + #define CALLBACK_API_C_STDCALL(_type, _name) _type ( * _name) + #undef pascal + #define pascal +#endif + +/* On classic 68k, some callbacks are register based. The only way to */ +/* write them in C is to make a function with no parameters and a void */ +/* return. Inside the function you manually get and set registers. */ +#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM + #define CALLBACK_API_REGISTER68K(_type, _name, _params) CALLBACK_API(void, _name)() +#else + #define CALLBACK_API_REGISTER68K(_type, _name, _params) CALLBACK_API(_type, _name)_params +#endif +/**************************************************************************************************** + + Set up TARGET_API_*_* values + +****************************************************************************************************/ +#if TARGET_OS_MAC +#if !defined(TARGET_API_MAC_OS8) && !defined(TARGET_API_MAC_OSX) && !defined(TARGET_API_MAC_CARBON) +/* No TARGET_API_MAC_* predefined on command line */ +#if TARGET_RT_MAC_MACHO +/* Looks like MachO style compiler */ +#define TARGET_API_MAC_OS8 0 +#define TARGET_API_MAC_CARBON 1 +#define TARGET_API_MAC_OSX 1 +#elif defined(TARGET_CARBON) && TARGET_CARBON +/* grandfather in use of TARGET_CARBON */ +#define TARGET_API_MAC_OS8 0 +#define TARGET_API_MAC_CARBON 1 +#define TARGET_API_MAC_OSX 0 +#elif TARGET_CPU_PPC && TARGET_RT_MAC_CFM +/* Looks like CFM style PPC compiler */ +#define TARGET_API_MAC_OS8 1 +#define TARGET_API_MAC_CARBON 0 +#define TARGET_API_MAC_OSX 0 +#else +/* 68k or some other compiler */ +#define TARGET_API_MAC_OS8 1 +#define TARGET_API_MAC_CARBON 0 +#define TARGET_API_MAC_OSX 0 +#endif /* */ + +#else +#ifndef TARGET_API_MAC_OS8 +#define TARGET_API_MAC_OS8 0 +#endif /* !defined(TARGET_API_MAC_OS8) */ + +#ifndef TARGET_API_MAC_OSX +#define TARGET_API_MAC_OSX TARGET_RT_MAC_MACHO +#endif /* !defined(TARGET_API_MAC_OSX) */ + +#ifndef TARGET_API_MAC_CARBON +#define TARGET_API_MAC_CARBON TARGET_API_MAC_OSX +#endif /* !defined(TARGET_API_MAC_CARBON) */ + +#endif /* !defined(TARGET_API_MAC_OS8) && !defined(TARGET_API_MAC_OSX) && !defined(TARGET_API_MAC_CARBON) */ + +#if TARGET_API_MAC_OS8 && TARGET_API_MAC_OSX +#error TARGET_API_MAC_OS8 and TARGET_API_MAC_OSX are mutually exclusive +#endif /* TARGET_API_MAC_OS8 && TARGET_API_MAC_OSX */ + +#if !TARGET_API_MAC_OS8 && !TARGET_API_MAC_CARBON && !TARGET_API_MAC_OSX +#error At least one of TARGET_API_MAC_* must be true +#endif /* !TARGET_API_MAC_OS8 && !TARGET_API_MAC_CARBON && !TARGET_API_MAC_OSX */ + +#else +#define TARGET_API_MAC_OS8 0 +#define TARGET_API_MAC_CARBON 0 +#define TARGET_API_MAC_OSX 0 +#endif /* TARGET_OS_MAC */ + +/* Support source code still using TARGET_CARBON */ +#ifndef TARGET_CARBON +#if TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 +#define TARGET_CARBON 1 +#else +#define TARGET_CARBON 0 +#endif /* TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 */ + +#endif /* !defined(TARGET_CARBON) */ + +/* Set forCarbon to 0 if it's not already defined */ +#ifndef forCarbon +#define forCarbon 0 +#endif /* !defined(forCarbon) */ + +/**************************************************************************************************** + Backward compatibility for clients expecting 2.x version on ConditionalMacros.h + + GENERATINGPOWERPC - Compiler is generating PowerPC instructions + GENERATING68K - Compiler is generating 68k family instructions + GENERATING68881 - Compiler is generating mc68881 floating point instructions + GENERATINGCFM - Code being generated assumes CFM calling conventions + CFMSYSTEMCALLS - No A-traps. Systems calls are made using CFM and UPP's + PRAGMA_ALIGN_SUPPORTED - Compiler supports: #pragma options align=mac68k/power/reset + PRAGMA_IMPORT_SUPPORTED - Compiler supports: #pragma import on/off/reset + CGLUESUPPORTED - Clients can use all lowercase toolbox functions that take C strings instead of pascal strings + +****************************************************************************************************/ +#if !TARGET_API_MAC_CARBON +#define GENERATINGPOWERPC TARGET_CPU_PPC +#define GENERATING68K TARGET_CPU_68K +#define GENERATING68881 TARGET_RT_MAC_68881 +#define GENERATINGCFM TARGET_RT_MAC_CFM +#define CFMSYSTEMCALLS TARGET_RT_MAC_CFM +#ifndef CGLUESUPPORTED +#define CGLUESUPPORTED 0 +#endif /* !defined(CGLUESUPPORTED) */ + +#ifndef OLDROUTINELOCATIONS +#define OLDROUTINELOCATIONS 0 +#endif /* !defined(OLDROUTINELOCATIONS) */ + +#define PRAGMA_ALIGN_SUPPORTED PRAGMA_STRUCT_ALIGN +#define PRAGMA_IMPORT_SUPPORTED PRAGMA_IMPORT +#else +/* Carbon code should not use old conditionals */ +#define PRAGMA_ALIGN_SUPPORTED ..PRAGMA_ALIGN_SUPPORTED_is_obsolete.. +#define GENERATINGPOWERPC ..GENERATINGPOWERPC_is_obsolete.. +#define GENERATING68K ..GENERATING68K_is_obsolete.. +#define GENERATING68881 ..GENERATING68881_is_obsolete.. +#define GENERATINGCFM ..GENERATINGCFM_is_obsolete.. +#define CFMSYSTEMCALLS ..CFMSYSTEMCALLS_is_obsolete.. +#endif /* !TARGET_API_MAC_CARBON */ + + + +/**************************************************************************************************** + + OLDROUTINENAMES - "Old" names for Macintosh system calls are allowed in source code. + (e.g. DisposPtr instead of DisposePtr). The names of system routine + are now more sensitive to change because CFM binds by name. In the + past, system routine names were compiled out to just an A-Trap. + Macros have been added that each map an old name to its new name. + This allows old routine names to be used in existing source files, + but the macros only work if OLDROUTINENAMES is true. This support + will be removed in the near future. Thus, all source code should + be changed to use the new names! You can set OLDROUTINENAMES to false + to see if your code has any old names left in it. + +****************************************************************************************************/ +#ifndef OLDROUTINENAMES +#define OLDROUTINENAMES 0 +#endif /* !defined(OLDROUTINENAMES) */ + + + +/**************************************************************************************************** + The following macros isolate the use of 68K inlines in function prototypes. + On the Mac OS under the Classic 68K runtime, function prototypes were followed + by a list of 68K opcodes which the compiler inserted in the generated code instead + of a JSR. Under Classic 68K on the Mac OS, this macro will put the opcodes + in the right syntax. For all other OS's and runtimes the macro suppress the opcodes. + Example: + + EXTERN_P void DrawPicture(PicHandle myPicture, const Rect *dstRect) + ONEWORDINLINE(0xA8F6); + +****************************************************************************************************/ + +#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM + #define ONEWORDINLINE(w1) = w1 + #define TWOWORDINLINE(w1,w2) = {w1,w2} + #define THREEWORDINLINE(w1,w2,w3) = {w1,w2,w3} + #define FOURWORDINLINE(w1,w2,w3,w4) = {w1,w2,w3,w4} + #define FIVEWORDINLINE(w1,w2,w3,w4,w5) = {w1,w2,w3,w4,w5} + #define SIXWORDINLINE(w1,w2,w3,w4,w5,w6) = {w1,w2,w3,w4,w5,w6} + #define SEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7) = {w1,w2,w3,w4,w5,w6,w7} + #define EIGHTWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8) = {w1,w2,w3,w4,w5,w6,w7,w8} + #define NINEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9) = {w1,w2,w3,w4,w5,w6,w7,w8,w9} + #define TENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10) = {w1,w2,w3,w4,w5,w6,w7,w8,w9,w10} + #define ELEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11) = {w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11} + #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} +#else + #define ONEWORDINLINE(w1) + #define TWOWORDINLINE(w1,w2) + #define THREEWORDINLINE(w1,w2,w3) + #define FOURWORDINLINE(w1,w2,w3,w4) + #define FIVEWORDINLINE(w1,w2,w3,w4,w5) + #define SIXWORDINLINE(w1,w2,w3,w4,w5,w6) + #define SEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7) + #define EIGHTWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8) + #define NINEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9) + #define TENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10) + #define ELEVENWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11) + #define TWELVEWORDINLINE(w1,w2,w3,w4,w5,w6,w7,w8,w9,w10,w11,w12) +#endif + + +/**************************************************************************************************** + + TARGET_CARBON - default: false. Switches all of the above as described. Overrides all others + - NOTE: If you set TARGET_CARBON to 1, then the other switches will be setup by + ConditionalMacros, and should not be set manually. + + If you wish to do development for pre-Carbon Systems, you can set the following: + + OPAQUE_TOOLBOX_STRUCTS - default: false. True for Carbon builds, hides struct fields. + OPAQUE_UPP_TYPES - default: false. True for Carbon builds, UPP types are unique and opaque. + ACCESSOR_CALLS_ARE_FUNCTIONS - default: false. True for Carbon builds, enables accessor functions. + CALL_NOT_IN_CARBON - default: true. False for Carbon builds, hides calls not supported in Carbon. + + Specifically, if you are building a non-Carbon application (one that links against InterfaceLib) + but you wish to use some of the accessor functions, you can set ACCESSOR_CALLS_ARE_FUNCTIONS to 1 + and link with CarbonAccessors.o, which implements just the accessor functions. This will help you + preserve source compatibility between your Carbon and non-Carbon application targets. + + MIXEDMODE_CALLS_ARE_FUNCTIONS - deprecated. + +****************************************************************************************************/ +#if TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 +#ifndef OPAQUE_TOOLBOX_STRUCTS +#define OPAQUE_TOOLBOX_STRUCTS 1 +#endif /* !defined(OPAQUE_TOOLBOX_STRUCTS) */ + +#ifndef OPAQUE_UPP_TYPES +#define OPAQUE_UPP_TYPES 1 +#endif /* !defined(OPAQUE_UPP_TYPES) */ + +#ifndef ACCESSOR_CALLS_ARE_FUNCTIONS +#define ACCESSOR_CALLS_ARE_FUNCTIONS 1 +#endif /* !defined(ACCESSOR_CALLS_ARE_FUNCTIONS) */ + +#ifndef CALL_NOT_IN_CARBON +#define CALL_NOT_IN_CARBON 0 +#endif /* !defined(CALL_NOT_IN_CARBON) */ + +#ifndef MIXEDMODE_CALLS_ARE_FUNCTIONS +#define MIXEDMODE_CALLS_ARE_FUNCTIONS 1 +#endif /* !defined(MIXEDMODE_CALLS_ARE_FUNCTIONS) */ + +#else +#ifndef OPAQUE_TOOLBOX_STRUCTS +#define OPAQUE_TOOLBOX_STRUCTS 0 +#endif /* !defined(OPAQUE_TOOLBOX_STRUCTS) */ + +#ifndef OPAQUE_UPP_TYPES +#define OPAQUE_UPP_TYPES 0 +#endif /* !defined(OPAQUE_UPP_TYPES) */ + +#ifndef ACCESSOR_CALLS_ARE_FUNCTIONS +#define ACCESSOR_CALLS_ARE_FUNCTIONS 0 +#endif /* !defined(ACCESSOR_CALLS_ARE_FUNCTIONS) */ + +/* + * It's possible to have ACCESSOR_CALLS_ARE_FUNCTIONS set to true and OPAQUE_TOOLBOX_STRUCTS + * set to false, but not the other way around, so make sure the defines are not set this way. + */ +#if OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS +#error OPAQUE_TOOLBOX_STRUCTS cannot be true when ACCESSOR_CALLS_ARE_FUNCTIONS is false +#endif /* OPAQUE_TOOLBOX_STRUCTS && !ACCESSOR_CALLS_ARE_FUNCTIONS */ + +#ifndef CALL_NOT_IN_CARBON +#define CALL_NOT_IN_CARBON 1 +#endif /* !defined(CALL_NOT_IN_CARBON) */ + +#ifndef MIXEDMODE_CALLS_ARE_FUNCTIONS +#define MIXEDMODE_CALLS_ARE_FUNCTIONS 0 +#endif /* !defined(MIXEDMODE_CALLS_ARE_FUNCTIONS) */ + +#endif /* TARGET_API_MAC_CARBON && !TARGET_API_MAC_OS8 */ + + +#if TARGET_RT_MAC_MACHO && TARGET_RT_LITTLE_ENDIAN +#define OLD_COMPONENT_GLUE 1 +#endif + + + + +#endif /* __CONDITIONALMACROS__ */ + |