mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
391 lines
11 KiB
391 lines
11 KiB
/***
|
|
*switches.hxx - Compile switches for Silver
|
|
*
|
|
* Copyright (C) 1990, Microsoft Corporation. All Rights Reserved.
|
|
* Information Contained Herein Is Proprietary and Confidential.
|
|
*
|
|
*Purpose:
|
|
* This file contains all the conditional compilation switches used
|
|
* by Silver. For making version-specific changes, see version.hxx.
|
|
*
|
|
*Revision History:
|
|
*
|
|
* 24-Aug-90 petergo: Created
|
|
* 10-May-91 ilanc: add ID_TEST
|
|
* 14-Jun-91 petergo: Added Kanji/Unicode switches
|
|
* 06-Mar-92 tomc: Added several switches, generate switches.inc
|
|
* 10-Dec-92 ilanc: Added EI_OB and EI_OLE2.
|
|
* 25-Jan-93 jeffrob: Corrected WIN32 HP_I386 and added OE_WIN32MT
|
|
* 12-Mar-93 kazusy: Added BLD_FEVER switch
|
|
* 05-May-93 jeffrob: Added ID_PROFILE
|
|
* 04-Oct-93 w-marioc Added support for MIPS
|
|
* 02-Jan-94 gburns: Added EI_VBARUN.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
#ifndef SWITCHES_HXX_INCLUDED
|
|
#define SWITCHES_HXX_INCLUDED
|
|
|
|
#define VBA2 1
|
|
#include "version.hxx"
|
|
|
|
// Need to define some constants to 0 that weren't defined or
|
|
// mrc will choke on them:
|
|
#ifndef BLD_WIN16
|
|
#define BLD_WIN16 0
|
|
#endif
|
|
|
|
#ifndef BLD_WIN32
|
|
#define BLD_WIN32 0
|
|
#endif
|
|
|
|
#ifndef BLD_MAC
|
|
#define BLD_MAC 0
|
|
#endif
|
|
|
|
#ifndef BLD_FEVER
|
|
#define BLD_FEVER 0
|
|
#endif
|
|
|
|
#ifndef HE_WIN32
|
|
#define HE_WIN32 0 // [jwc] undone: Right now, mac os/2 toolset & NT toolset have
|
|
#endif // differences that require source changes. This allows
|
|
// coexistance of both builds
|
|
|
|
// Unlike ID_PROFILE, BLD_PROFILE indicates that the build was built with
|
|
// profiling stubs (-Gh cl68 & c8/32) to collecting timing information.
|
|
// Currently, this must be set by hand either in a special version.hxx or on the
|
|
// compile line.
|
|
#ifndef BLD_PROFILE
|
|
#define BLD_PROFILE 0
|
|
#endif
|
|
|
|
|
|
// ID_TEST - This is used to surround test code that will not be
|
|
// part of the released build. This is assumed to be equal ID_DEBUG.
|
|
// However, in the test build (twinc7), ID_TEST is turned on, but ID_DEBUG
|
|
// is off.
|
|
//
|
|
#ifndef ID_TEST
|
|
#define ID_TEST ID_DEBUG
|
|
#endif
|
|
|
|
|
|
// ID_PROFILE - This is used to surround test code that collects profiling
|
|
// data. Currently, it is defined to equal ID_DEBUG but could be turned
|
|
// on in the release build, if desired.
|
|
//
|
|
#ifndef ID_PROFILE
|
|
#define ID_PROFILE ID_DEBUG
|
|
#endif
|
|
|
|
|
|
// ID_SWAPTUNE - This is used to surround code that collects segment swapping info.
|
|
// Currently, it is always set off, and must be set on by hand. This need
|
|
// not be tied to either debug or release builds, so assume that code under
|
|
// this switch could be turned on for either.
|
|
#ifndef ID_SWAPTUNE
|
|
#define ID_SWAPTUNE 0
|
|
#endif
|
|
|
|
|
|
// HC switches: relate to the Host Compiler or Compiler version
|
|
// Use this to accomodate syntactic differences between compilers
|
|
//
|
|
#if defined (_MSC_VER)
|
|
#if (_MSC_VER >= 800)
|
|
#define HC_MSC8
|
|
|
|
// Both these are versions of C8 or C9
|
|
#ifdef _M_M68K
|
|
#define HC_MSC68K
|
|
#elif defined (_M_MPPC)
|
|
#define HC_MSCPPC
|
|
#else
|
|
// REVIEW: Probably need to check for C8/32 vs. C8/16
|
|
#define HC_MSC832
|
|
#endif
|
|
|
|
#else
|
|
#if (_MSC_VER == 700)
|
|
#define HC_MSC7
|
|
#else
|
|
#define HC_MSC6
|
|
#endif
|
|
#endif
|
|
|
|
#else
|
|
// UNDONE OA95: rc uses a c-preprocessor that doesn't define _MSC_VER...
|
|
// need to figure out what to do here.
|
|
//#error Unsupported Compiler!
|
|
#endif
|
|
|
|
|
|
|
|
//OE switches: relate to the Operating Environment, or
|
|
//API set used by the program
|
|
|
|
// If TRUE, OE_WIN indicates we are using one of the variant of the
|
|
// Windows API sets. This is set for all of our released versions,
|
|
// except the native Mac build.
|
|
|
|
#if BLD_WIN16 || BLD_WIN32
|
|
#define OE_WIN 1
|
|
#else
|
|
#define OE_WIN 0
|
|
#define OE_WIN16 0
|
|
#define OE_WIN32 0
|
|
#define OE_WIN32S 0
|
|
#define OE_WIN32F 0
|
|
#define OE_NT 0
|
|
#endif
|
|
|
|
|
|
//If OE_WIN is set, exactly one of the following 3 switches is set,
|
|
//indicate which variant of the Windows API is being used.
|
|
|
|
#if OE_WIN
|
|
|
|
#if BLD_WIN16
|
|
#define OE_WIN16 1
|
|
//Indicates we are using the Windows 3.0/3.1 API set. Should
|
|
//be used when using features specific to Windows 3.0/3.1. You
|
|
//can assume protected mode only with this switch; we never have
|
|
//and never will support Real mode Windows.
|
|
#else
|
|
#define OE_WIN16 0
|
|
#endif
|
|
|
|
#if BLD_WIN32
|
|
#define OE_WIN32 1
|
|
//Indicates we are using the Win32 API set, on either NT or
|
|
//DOS. On for both Win32/NT, Win32/DOS, and Win32S.
|
|
#else
|
|
#define OE_WIN32 0
|
|
#endif
|
|
|
|
#endif
|
|
|
|
// If OE_WIN32 is set, the following switches indicate which subvariant
|
|
// of the Win32 API is being used. These should be rarely needed,
|
|
// if at all. NOTE: currently there are no builds which turns these
|
|
// on.
|
|
|
|
#if OE_WIN32
|
|
#define OE_WIN32S 0
|
|
//Indicates we are using the Win32S API subset.
|
|
|
|
#define OE_WIN32F 0
|
|
//Indicates we are using the full Win32 API, under either
|
|
//DOS or NT. Should be used to control use of APIs
|
|
//not in the Win32S subset.
|
|
|
|
#define OE_NT 0
|
|
//Indicates we are running under NT, as opposed to Win32/DOS.
|
|
//Should be used only to control NT specific features, like
|
|
//calling an NT API directly.
|
|
|
|
#define OE_WIN32MT 0
|
|
//Indicates we support multiple WIN32 threads within a single
|
|
//process. (Version 1.0 of OB only supports one thread so
|
|
//we've optimized some code paths with this in mind.)
|
|
|
|
#endif
|
|
|
|
// OE_RISC is used to specify if the portable engine code is to be used
|
|
// instead of the intel specific assembly
|
|
#ifndef OE_RISC
|
|
#define OE_RISC 0
|
|
#endif
|
|
|
|
//OS/2 is no longer a target in any of the builds.
|
|
#define OE_OS2 0
|
|
|
|
|
|
// OE_MAC indicates that we are targetting the Macintosh.
|
|
#if BLD_MAC
|
|
#define OE_MAC 1
|
|
#else
|
|
#define OE_MAC 0
|
|
#endif
|
|
|
|
#if OE_MAC
|
|
|
|
// OE_MACAPI indicates that we are using the MacIntosh API. This is
|
|
// set whenever we are targetting the Mac and we aren't using WLM.
|
|
//
|
|
#if BLD_MAC
|
|
#define OE_MACAPI 1
|
|
#else
|
|
#define OE_MACAPI 0
|
|
#endif
|
|
|
|
// Macintosh PowerPC environment is slightly different than the 68k
|
|
// environment. You should use this switch to control differences rather
|
|
// than HP_POWERPC because they are operating environment differences, not
|
|
// true hardware differences (unless, you're talking about asm or something)
|
|
// Besides, there is an NT on PowerPC, and then use of HP_POWERPC may be
|
|
// a big mistake.
|
|
//
|
|
// This indicates MAC API and PowerPC runtime environment
|
|
#if defined (HC_MSCPPC)
|
|
#define OE_MACPPC 1
|
|
#define OE_MAC68K 0
|
|
#else
|
|
#define OE_MACPPC 0
|
|
#define OE_MAC68K 1
|
|
#endif
|
|
|
|
#else
|
|
#define OE_MACAPI 0
|
|
#define OE_MAC68K 0
|
|
#define OE_MACPPC 0
|
|
#define ID_SWAPPABLE 0
|
|
#endif
|
|
|
|
|
|
// OE_DLL: True for versions in which Object Basic code is linked into a DLL.
|
|
// When TRUE, host routines are in a separate DLL or EXE. For now,
|
|
// this is only TRUE for Windows versions, but future Macintosh
|
|
// versions will likely have this set TRUE.
|
|
//
|
|
#if (BLD_WIN16 || BLD_WIN32 || defined (OE_DLL)) && !defined (VBARUNBLD)
|
|
#define OE_DLL 1
|
|
#else
|
|
#define OE_DLL 0
|
|
#endif
|
|
|
|
#if OE_MAC && !OE_MACPPC
|
|
// all mac versions are swappable now
|
|
#define ID_SWAPPABLE 1
|
|
#endif //OE_MAC
|
|
|
|
// DOS build. (Probably should be called OE_DOS, but isn't.)
|
|
// There is no dos build. This is always off.
|
|
#define OE_REALMODE 0
|
|
|
|
//HP switches: relate to the Hardware Processor.
|
|
// The hardware switches indicate what kind of processor we are running
|
|
// on. These switches should be used when you need to do specific thing
|
|
// depending on the hardware you are running on.
|
|
//
|
|
// Switches that indicate general characteristic of the processor
|
|
//(16bit/32bit, etc).
|
|
// HP switches are for Hardware Processor. If possible, do not use
|
|
// the specific processor type switches, but instead use the following
|
|
// switches pertaining to various characteristic of the processors.
|
|
// This makes porting to a new processor easier.
|
|
//
|
|
// HP_16BIT = Using a 16-bit register processor
|
|
// HP_32BIT = Using a 32-bit register processor
|
|
// HP_BIGENDIAN = Using a big-endian machine
|
|
// least significant byte of a word is
|
|
// at the highest byte address.
|
|
// HP_MUSTALIGN = Must load/store objects from natural alignments.
|
|
// indicates that 2byte words must be read/written
|
|
// from a two byte boundary, 4byte words must be
|
|
// read/written from a 4 byte boundary, 8 byte word
|
|
// must be read/written from an 8 byte boundary.
|
|
|
|
#if BLD_WIN16
|
|
#define HP_16BIT 1
|
|
#else
|
|
#define HP_16BIT 0
|
|
#endif
|
|
|
|
#if BLD_WIN32 || BLD_MAC
|
|
#define HP_32BIT 1
|
|
#else
|
|
#define HP_32BIT 0
|
|
#endif
|
|
|
|
#if BLD_MAC
|
|
#define HP_BIGENDIAN 1
|
|
#else
|
|
#define HP_BIGENDIAN 0
|
|
#endif
|
|
|
|
#if BLD_MAC
|
|
#define HP_MUSTALIGN 0
|
|
#endif
|
|
|
|
// Switches that indicate the exact chip family:
|
|
// (It is preferable to use the above switches since they are more
|
|
// general than the following switches.)
|
|
//
|
|
// HP_I286 = Intel 286 AND ABOVE, running in 16 bit mode
|
|
// --- -----
|
|
// HP_I386 = Intel 386 and above, running in 32 bit mode
|
|
// HP_M68000 = Motorola 680x0
|
|
// HP_R4000 MIPS = R4000
|
|
// HP_ALPHA = DEC/AXP
|
|
// HP_POWERPC = Motorola Power PC
|
|
//
|
|
|
|
#define HP_I286 0
|
|
#define HP_I386 0
|
|
#define HP_M68000 0
|
|
#define HP_ALPHA 0
|
|
#define HP_R4000 0
|
|
#define HP_POWERPC 0
|
|
|
|
#if BLD_WIN16
|
|
#undef HP_I286
|
|
#define HP_I286 1
|
|
#endif
|
|
|
|
#if BLD_WIN32
|
|
#if defined(_X86_)
|
|
#undef HP_I386
|
|
#define HP_I386 1
|
|
#elif defined(_MIPS_)
|
|
#undef HP_R4000
|
|
#define HP_R4000 1
|
|
#elif defined(_ALPHA_)
|
|
#undef HP_ALPHA
|
|
#define HP_ALPHA 1
|
|
#elif defined(_PPC_)
|
|
#undef HP_POWERPC
|
|
#define HP_POWERPC 1
|
|
#else
|
|
#ifndef RC_INVOKED
|
|
#error !Unsupported Platform
|
|
#endif //RC_INVOKED
|
|
#endif //
|
|
#endif //BLD_WIN32
|
|
|
|
|
|
#if BLD_MAC
|
|
#ifdef _M_MPPC
|
|
#undef HP_POWERPC
|
|
#define HP_POWERPC 1
|
|
#else
|
|
#undef HP_M68000
|
|
#define HP_M68000 1
|
|
#endif
|
|
#endif //BLD_MAC
|
|
|
|
|
|
// The following switches distinguish between an OB specific build,
|
|
// a build of a run-time only version of OB, and an OLE2 "generic" build.
|
|
//
|
|
#undef EI_OB
|
|
#undef EI_OLE
|
|
#undef EI_VBARUN
|
|
|
|
#define EI_VBA 1 // This differentiates between VBA and hosts which
|
|
// may use VBA header files.
|
|
|
|
// Runtime switches:
|
|
#define EI_OB 0
|
|
#define EI_OLE 1
|
|
#define EI_VBARUN 0
|
|
#define EI_VBARUN_VB 0
|
|
|
|
// Switches for code system.
|
|
#define FV_UNICODE 0 // No unicode char set
|
|
|
|
#define OA3 0 // No old-format dynamic typeinfo stuff
|
|
// We now only support ICreateTypeLib2/TypeInfo2 in
|
|
// new-format typelibs
|
|
#endif // !SWITCHES_HXX_INCLUDED
|