342 lines
8.5 KiB
C
342 lines
8.5 KiB
C
/*****************************************************************************
|
|
*
|
|
* NCSA DTM version 2.3
|
|
* May 1, 1992
|
|
*
|
|
* NCSA DTM Version 2.3 source code and documentation are in the public
|
|
* domain. Specifically, we give to the public domain all rights for future
|
|
* licensing of the source code, all resale rights, and all publishing rights.
|
|
*
|
|
* We ask, but do not require, that the following message be included in all
|
|
* derived works:
|
|
*
|
|
* Portions developed at the National Center for Supercomputing Applications at
|
|
* the University of Illinois at Urbana-Champaign.
|
|
*
|
|
* THE UNIVERSITY OF ILLINOIS GIVES NO WARRANTY, EXPRESSED OR IMPLIED, FOR THE
|
|
* SOFTWARE AND/OR DOCUMENTATION PROVIDED, INCLUDING, WITHOUT LIMITATION,
|
|
* WARRANTY OF MERCHANTABILITY AND WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE
|
|
*
|
|
*****************************************************************************/
|
|
|
|
/*********************************************************************
|
|
**
|
|
** $Header: /X11/mosaic/cvsroot/xmosaic3/libdtm/arch.h,v 1.5 1996/06/06 19:47:12 spowers Exp $
|
|
**
|
|
**********************************************************************/
|
|
|
|
#ifndef ARCH_INC
|
|
#define ARCH_INC
|
|
|
|
/*
|
|
* Revision 1.2 1993/10/29 03:46:43 marca
|
|
* Tweaks.
|
|
*
|
|
* Revision 1.1.1.1 1993/07/04 00:03:16 marca
|
|
* Mosaic for X version 2 distribution
|
|
*
|
|
* Revision 1.3 1993/04/18 05:51:45 marca
|
|
* Tweaks.
|
|
*
|
|
* Revision 1.2 1993/01/23 15:30:18 marca
|
|
* Fixed define typo.
|
|
*
|
|
* Revision 1.1 1993/01/18 21:50:00 marca
|
|
* I think I got it now.
|
|
*
|
|
* Revision 1.7 92/04/30 20:27:05 jplevyak
|
|
* Changed Version to 2.3
|
|
*
|
|
* Revision 1.6 1992/04/14 22:59:57 jefft
|
|
* included sys/limits.h instead of sys/limit.h
|
|
*
|
|
* Revision 1.5 1992/04/13 16:07:10 jplevyak
|
|
* Changes for DEC and RS6000.
|
|
*
|
|
* Revision 1.4 92/03/10 22:07:10 jplevyak
|
|
* Added changed for PC/MAC from Quincey Koziol (koziol@ncsa.uiuc.edu)
|
|
* with modification.
|
|
*
|
|
* Revision 1.3 1992/03/10 16:52:43 jefft
|
|
* modified convex define to __convex__
|
|
*
|
|
* Revision 1.2 1992/01/14 16:35:22 creiman
|
|
* Added _ARCH_PROTO to applec
|
|
*
|
|
* Revision 1.1 1991/12/17 23:50:49 jefft
|
|
* Initial revision
|
|
*
|
|
*/
|
|
|
|
/*
|
|
The intent of this file is to provide a standard set of
|
|
architecturally descriptive preprocessor definitions by
|
|
examining the preprocessor identifiers that are defined
|
|
in the native compiler running in the default mode.
|
|
|
|
Please feel free to add to or correct this file.
|
|
If you are feeling particularly generous, it would be
|
|
appreciated if you would send you changes to:
|
|
jplevyak@ncsa.uiuc.edu
|
|
so that I may update my version.
|
|
|
|
Definitions are of the form:
|
|
|
|
_ARCH_xxxx where xxxx is:
|
|
General Manufacturer
|
|
SUN - generally any machine by Sun Microsystems
|
|
SGI - Silicon Graphics
|
|
CRAY - Cray Research
|
|
CONVEX - Convex
|
|
CM - Connection Machine
|
|
IBM
|
|
APPLE
|
|
HP
|
|
DEC
|
|
COMMODORE
|
|
General OS
|
|
DOS
|
|
UNIX
|
|
MACOS
|
|
AMIGA
|
|
VMS
|
|
OS2
|
|
General Processor
|
|
SPARC
|
|
MIPS
|
|
68000
|
|
8086
|
|
80286
|
|
80386
|
|
VAX
|
|
PA - HP Percision Architecture
|
|
RS6000
|
|
Specific Interesting Qualities
|
|
BIG_ENDIAN
|
|
LITTLE_ENDIAN
|
|
WORD_SIZE - values include 16, 32, 64 (bits)
|
|
SYSV
|
|
BSD
|
|
PROTO - Compiler supports prototypes
|
|
|
|
( possible interesting definitions )
|
|
mc68k unix unixpc (hp 68k ?)
|
|
mc68000
|
|
_I386 i386 AIX _AIX (PS2 running AIX)
|
|
alliant (68000 unix)
|
|
vax mc68k32 PORTAR (altos? 30068)
|
|
apollo aegis unix (??) (apollo)
|
|
i80386 (compac?) BSD
|
|
convex unix (32 bit)
|
|
__convex_c1__
|
|
__convex_c2__
|
|
__MIPSEL __R3000 __SYSTYPE_BSD __bsd4_2 __host_mips __mips
|
|
__ultrix __unix, same without __ prefix, Dec Station
|
|
ns32000 n16 ns16000 ns32332 unix (encore)
|
|
tahoe unix hcx (harris tahoe)
|
|
mc68000 mc68010 hp200 unix (hp is BSD)
|
|
mc68020
|
|
_HPUX_SOURCE hp9000s300 hp9000s200 PWB hpux unix (68000)
|
|
hp9000 (BSD)
|
|
unix M_UNIX M_I386 M_COFF M_WORDSWAP (ESIX Unix System V)
|
|
- Iteractive Unix is like system V
|
|
- SCO same as ESIX
|
|
SCO_UNIX
|
|
i860 (generic) (32 bit)
|
|
unix mips sgi SVR3 MIPSEB SYSTYPE_SYSV (IRIS)
|
|
r3000 MISPEB SYSTYPE_BSD sony_news unix (mips sony)
|
|
mc68000 mc68020 news800 bsd43 (68k sony)
|
|
NeXT unix __MACH__ mc68000 (BSD ??)
|
|
ns32000 unix (generic) (not big-endian) (32 bit)
|
|
pyr unix (Pyramid) (not big-endian) (32 bit)
|
|
sequent unix i386
|
|
sequent unix ns32000
|
|
spur (32 bit machine) (not big or little endian)
|
|
sun386 i386 sun unix
|
|
mc68000 sun sun3 unix MACH CMU MTXINU BIT_MSF BYTE_MSF (??)
|
|
tahoe (generic)
|
|
unix tower32 (68k) (NCR Tower running Sys V release 3)
|
|
ultrix bsd4_2 vax unix __vax (you guessed it)
|
|
vax unix (generic) (not big endian)
|
|
vax vms VMS
|
|
__TURBOC__
|
|
OS2_MC - microsoft C for os2
|
|
AMIGA
|
|
USG (as indicator or SYSV or SYS_V)
|
|
MS_DOS (as general indicator)
|
|
applec (MPW)
|
|
THINK_C
|
|
*/
|
|
|
|
#if defined( __hpux )
|
|
# define _ARCH_HP
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_SYSV
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_WORD_SIZE 32
|
|
#elif defined( __sgi )
|
|
# define _ARCH_SGI
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_SYSV
|
|
# define _ARCH_MIPS
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_WORD_SIZE 32
|
|
# define _ARCH_PROTO
|
|
#elif defined( sun )
|
|
# define _ARCH_SUN
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_BSD
|
|
# define _ARCH_WORD_SIZE 32
|
|
# if defined(sparc)
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_SPARC
|
|
# elif defined( i386 )
|
|
# define _ARCH_LITTLE_ENDIAN
|
|
# define _ARCH_80386
|
|
# else
|
|
/* assume */
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_68000
|
|
# endif
|
|
#elif defined( NEXT )
|
|
# define _ARCH_NEXT
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_BSD
|
|
# define _ARCH_WORD_SIZE 32
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_68000
|
|
#elif defined( cray )
|
|
# define _ARCH_CRAY
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_SYSV /* A rough approximation */
|
|
# define _ARCH_BIG_ENDIAN /* ?? */
|
|
# define _ARCH_WORD_SIZE 64
|
|
#elif defined(vax)
|
|
# define _ARCH_DEC
|
|
# define _ARCH_VAX
|
|
# define _ARCH_WORD_SIZE 32
|
|
# define _ARCH_LITTLE_ENDIAN
|
|
# if defined( vmx )
|
|
# define _ARCH_VMX
|
|
# elif defined( unix )
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_BSD
|
|
# endif
|
|
#elif defined( __ultrix ) && defined( __mips )
|
|
#define _ARCH_DEC
|
|
#define _ARCH_DEC_STATION
|
|
#define _ARCH_MIPS
|
|
#define _ARCH_BSD
|
|
#define _ARCH_WORD_SIZE 32
|
|
#define _ARCH_LITTLE_ENDIAN
|
|
#define _ARCH_PROTO
|
|
#elif defined( _IBMR2 )
|
|
#define _ARCH_IBM
|
|
#define _ARCH_RS6000
|
|
#elif defined( AMIGA )
|
|
/* incomplete */
|
|
# define _ARCH_COMMODORE
|
|
# define _ARCH_AMIGA
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_68000
|
|
# define _ARCH_WORD_SIZE 32
|
|
#elif defined ( MS_DOS ) || defined(__TURBOC__)
|
|
# define _ARCH_MSDOS
|
|
# define _ARCH_8086
|
|
# define _ARCH_LITTLE_ENDIAN
|
|
# define _ARCH_WORD_SIZE 16
|
|
# define _ARCH_PROTO
|
|
#elif defined ( OS2_MC )
|
|
# define _ARCH_OS2
|
|
# define _ARCH_80286
|
|
# define _ARCH_LITTLE_ENDIAN
|
|
# define _ARCH_WORD_SIZE 16
|
|
# define _ARCH_MSDOS
|
|
# define _ARCH_PROTO
|
|
#elif defined ( THINK_C ) || defined( applec )
|
|
# define _ARCH_APPLE
|
|
# define _ARCH_MACOS
|
|
# define _ARCH_68000
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_WORD_SIZE 32
|
|
# define _ARCH_PROTO
|
|
#elif defined( alliant )
|
|
/* ?? */
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_68000
|
|
# define _ARCH_BIG_ENDIAN
|
|
# define _ARCH_WORD_SIZE 32
|
|
#elif defined( __convex__ ) || defined( __convex_c1__ ) || defined( __convex_c2__ )
|
|
/* ?? */
|
|
# define _ARCH_CONVEX
|
|
# define _ARCH_UNIX
|
|
# define _ARCH_WORD_SIZE 32
|
|
#endif
|
|
|
|
/*
|
|
Make best guess from environment.
|
|
*/
|
|
#if !defined( _ARCH_UNIX ) && !defined( _ARCH_MSDOS ) && !defined( _ARCH_VMS ) \
|
|
&& !defined( _ARCH_MACOS ) && !defined( _ARCH_AMIGA ) && !defined( _ARCH_OS2)
|
|
# if defined( unix )
|
|
# define _ARCH_UNIX
|
|
# endif
|
|
#endif
|
|
|
|
#if !defined( _ARCH_BSD ) && !defined( _ARCH_SYSV ) && defined( _ARCH_UNIX )
|
|
# if defined( USG )
|
|
# define _ARCH_SYSV
|
|
# endif
|
|
#endif
|
|
|
|
#if !defined( _ARCH_68000 )
|
|
# if defined( mc68k ) || defined( mc68000 ) || defined( mc68k32 ) \
|
|
|| defined( mc68020 ) || defined( mc68010 )
|
|
# define _ARCH_68000
|
|
# if !defined( _ARCH_BIG_ENDIAN )
|
|
# define _ARCH_BIG_ENDIAN
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#if !defined( _ARCH_PROTO )
|
|
# if defined( _STDC_ ) || defined( __STDC__ )
|
|
#if !defined(__hpux) && !defined(LINUX)
|
|
# define _ARCH_PROTO
|
|
#endif /* not __hpux && not LINUX */
|
|
# endif
|
|
#endif
|
|
|
|
#if !defined( _ARCH_WORD_SIZE )
|
|
# if !defined( INT_MAX )
|
|
# ifdef _ARCH_MSDOS
|
|
# include <limits.h>
|
|
# else
|
|
# ifdef _ARCH_NEXT
|
|
# include <ansi/limits.h>
|
|
# else
|
|
# ifdef LINUX
|
|
# include <limits.h>
|
|
# else
|
|
# include <sys/limits.h>
|
|
# endif
|
|
# endif
|
|
# endif
|
|
# if INT_MAX == 0x7FFF
|
|
# define _ARCH_WORD_SIZE 16
|
|
# endif
|
|
# if !defined( _ARCH_WORD_SIZE )
|
|
# if INT_MAX == 0x7FFFFFFF
|
|
# define _ARCH_WORD_SIZE 32
|
|
# endif
|
|
# endif
|
|
# if !defined( _ARCH_WORD_SIZE )
|
|
# if INT_MAX == 0x7FFFFFFFFFFFFFFF
|
|
# define _ARCH_WORD_SIZE 64
|
|
# endif
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#endif
|