XCOMM $XConsortium: Imake.cf,v 1.19 95/01/05 19:24:32 kaleb Exp $
XCOMM $XFree86: xc/config/cf/Imake.cf,v 3.15 1995/06/08 06:18:39 dawes Exp $
/*
 * To add support for another platform:
 * 
 *     1.  Identify a machine-specific cpp symbol.  If your preprocessor 
 *         does not have any built in, you will need to add the symbol to the
 *         cpp_argv table in config/imake/imakemdep.h and rebuild imake with
 *         the BOOTSTRAPCFLAGS variable set (see the macII for an example).
 *
 *     2.  Add all machine-specific cpp symbols (either defined by you or by
 *         the preprocessor or compiler) to the predefs table in 
 *         config/imake/imakemdep.h.
 *
 *     3.  But a new #ifdef block below that defines MacroIncludeFile and
 *         MacroFile for your new platform and then #undefs the machine-
 *         specific preprocessor symbols (to avoid problems with file names).
 *
 *     4.  Create a .cf file with the name given by MacroFile.
 */

#ifdef ultrix
#define MacroIncludeFile <ultrix.cf>
#define MacroFile ultrix.cf
#ifdef vax
#undef vax
#define VaxArchitecture
#endif
#ifdef mips
#undef mips
#define MipsArchitecture
#endif
#undef ultrix
#define UltrixArchitecture
#endif /* ultrix */

#if defined(vax) && !defined(UltrixArchitecture)
#define MacroIncludeFile <bsd.cf>
#define MacroFile bsd.cf
#undef vax
#define BSDArchitecture
#define VaxArchitecture
#endif /* vax */

#ifdef bsdi
#define MacroIncludeFile <bsdi.cf>
#define MacroFile bsdi.cf
#undef bsdi
#define BSD386Architecture
#define i386BsdArchitecture
#define i386Architecture
#undef i386
#endif /* bsdi */

#ifdef __NetBSD__
#define MacroIncludeFile <NetBSD.cf>
#define MacroFile NetBSD.cf
#undef __NetBSD__
#define NetBSDArchitecture
#ifdef __i386__
#define i386BsdArchitecture
#define i386Architecture
#undef i386
#endif
#if defined(__sparc__) || defined(sparc)
#define SparcArchitecture
#undef sparc
#endif
#endif /* NetBSD */

#ifdef __FreeBSD__
#define MacroIncludeFile <FreeBSD.cf>
#define MacroFile FreeBSD.cf
#undef __FreeBSD__
#define FreeBSDArchitecture
#ifdef __i386__
#define i386BsdArchitecture
#define i386Architecture
#undef i386
#endif
#endif /* __FreeBSD__ */

#ifdef AMOEBA
/* Should be before the 'sun' entry because we may be cross-compiling */
#define MacroIncludeFile <Amoeba.cf>
#define MacroFile Amoeba.cf
#if defined(i80386) || defined(__i80386__)
#define i386Architecture
#else
#if defined(mc68000) || defined(__mc68000__)
#define Sun3Architecture
#define SunArchitecture
#else
#if defined(sparc) || defined(__sparc__)
#define SparcArchitecture
#define SunArchitecture
#endif
#endif
#endif
#undef i80386
#undef mc68000
#undef sparc
#undef sun
#endif /* AMOEBA */

#ifdef sun
#define MacroIncludeFile <sun.cf>
#define MacroFile sun.cf
#ifdef SVR4
#undef SVR4
#define SVR4Architecture
#endif
#ifdef sparc
#undef sparc
#define SparcArchitecture
#endif
#ifdef mc68000
#undef mc68000
#define Sun3Architecture
#endif
#ifdef i386
#undef i386
#define i386Architecture
#endif
#undef sun
#define SunArchitecture
#endif /* sun */

#ifdef hpux
#define MacroIncludeFile <hp.cf>
#define MacroFile hp.cf
#undef hpux
#define HPArchitecture
#endif /* hpux */

#ifdef USL
#define MacroIncludeFile <usl.cf>
#define MacroFile usl.cf
#undef USL
#undef SVR4
#define SVR4Architecture
#define i386Architecture
#undef i386
#endif /* USL */

#ifdef NCR
#define MacroIncludeFile <ncr.cf>
#define MacroFile ncr.cf
#undef NCR
#undef SVR4
#define SVR4Architecture
#define i386Architecture
#undef i386
#endif /* NCR */

#ifdef apollo
#define MacroIncludeFile <apollo.cf>
#define MacroFile apollo.cf
#undef apollo
#define ApolloArchitecture
#endif /* apollo */

#ifdef sony
#define MacroIncludeFile <sony.cf>
#define MacroFile sony.cf
#undef sony
#undef sony_news
#define SonyArchitecture
#ifdef mc68020
#undef mc68020
#undef mc68030
#define Mc68020Architecture
#endif
#ifdef mips
#undef mips
#define MipsArchitecture
#endif
#if !defined(bsd43) || defined(SYSTYPE_SYSV) || defined(_SYSTYPE_SYSV)
#define SonySysvArchitecture
#else
#define SonyBsdArchitecture
#endif
#endif /* sony */

#ifdef M4310
#define MacroIncludeFile <pegasus.cf>
#define MacroFile pegasus.cf
#undef M4310
#define PegasusArchitecture
#endif /* M4310 */

#ifdef M4330
#define MacroIncludeFile <m4330.cf>
#define MacroFile m4330.cf
#undef  M4330
#define M4330Architecture
#endif /* M4330 */

#ifdef macII
#define MacroIncludeFile <macII.cf>
#define MacroFile macII.cf
#undef  macII
#define MacIIArchitecture
#endif /* macII */

#ifdef _CRAY
#define MacroIncludeFile <cray.cf>
#define MacroFile cray.cf
#undef cray
#undef CRAY
#undef CRAY1
#undef CRAY2
#undef YMP
#define CrayArchitecture
#endif /* _CRAY */

#ifdef sgi
#define MacroIncludeFile <sgi.cf>
#define MacroFile sgi.cf
#undef sgi
#define SGIArchitecture
#undef mips
#define MipsArchitecture
#endif /* sgi */

#ifdef stellar
#define MacroIncludeFile <stellar.cf>
#define MacroFile stellar.cf
#undef stellar
#define StellarArchitecture
#endif /* stellar */

#if defined(ibm) || defined(_IBMR2) || defined(ibm032) || defined(aix)
#define MacroIncludeFile <ibm.cf>
#define MacroFile ibm.cf
#ifdef ibm
#undef ibm
#endif
#define IBMArchitecture
#ifdef i386
#undef i386
#define PS2Architecture
#endif
#ifdef ibm032
#undef ibm032
#define RtArchitecture
#endif
#ifdef aix
#undef aix
#define AIXArchitecture
#endif
#ifdef _IBMR2
#undef _IBMR2
#define RsArchitecture
#endif
#endif /* ibm */

#ifdef luna
#undef luna
#define MacroIncludeFile <luna.cf>
#define MacroFile luna.cf
#define LunaArchitecture
#ifdef mc68000
#undef mc68000
#define Mc68000Architecture
#else
#undef mc88000
#define Mc88000Architecture
#endif
#endif /* luna */

#ifdef Mips
#  define MacroIncludeFile <Mips.cf>
#  define MacroFile Mips.cf
#  undef Mips
#  undef mips
#  if defined(SYSTYPE_BSD43) || defined(BSD) || defined(BSD43)
#    define MipsBsdArchitecture
#  else /* BSD */
#    define MipsSysvArchitecture
#  endif /* BSD */
#endif /* Mips */

#ifdef MOTOROLA
# define MacroIncludeFile <moto.cf>
# define MacroFile moto.cf
# undef MOTOROLA	
# ifdef SYSV
#  define MotoR3Architecture
# endif
# ifdef SVR4
#  define MotoR4Architecture
# endif
#endif /* MOTOROLA */

#ifdef SVR4
# ifdef i386
#  define i386Architecture
#  undef i386
# endif
# define SVR4Architecture
# define MacroIncludeFile <svr4.cf>
# define MacroFile svr4.cf
# undef SVR4
#endif /* SVR4 */

#ifdef SYSV
# ifdef i386
# undef i386
#  ifdef SCO
#   define i386Architecture
#   define i386SVR3Architecture
#   define MacroIncludeFile <sco.cf>
#   define MacroFile sco.cf
#   define i386ScoArchitecture
#   ifdef SCO324
#    define i386Sco324Architecture
#    undef SCO324
#   endif
#   undef SCO
#  endif /* SCO */
#  ifdef ISC
#   define i386Architecture	
#   define i386SVR3Architecture	
#   define MacroIncludeFile <isc.cf>
#   define MacroFile isc.cf
#   define i386IscArchitecture
#   undef ISC
#   ifdef ISC202
#    define IscVersion 202
#    undef ISC202
#   else
#    ifdef ISC30
#     define IscVersion 300
#     undef ISC30
#    else
#     ifdef ISC40
#      define IscVersion 400
#      undef ISC40
#     else
#      define IscVersion 221
#     endif /* ISC40 */
#    endif /* ISC30 */
#   endif /* ISC202 */
#  endif /* ISC */
#  ifndef MacroFile
#   define i386SVR3Architecture
#   define MacroIncludeFile <x386.cf>
#   define MacroFile x386.cf
#  endif /* MacroFile */
# endif /* i386 */
#endif /* SYSV */

/* SYSV386 is here for backward compatibility only */
#ifdef SYSV386
# undef i386
# ifdef SVR4
#  define i386Architecture
#  define SVR4Architecture
#  define i386SVR4Architecture
#  define MacroIncludeFile <svr4.cf>
#  define MacroFile svr4.cf
#  undef SVR4
# else /* ! SVR4 */
#  ifdef SCO
#   define i386Architecture
#   define i386SVR3Architecture
#   define MacroIncludeFile <sco.cf>
#   define MacroFile sco.cf
#   define i386ScoArchitecture
#   ifdef SCO324
#    define i386Sco324Architecture
#    undef SCO324
#   endif
#   undef SCO
#  endif /* SCO */
#  ifdef ISC
#   define i386Architecture	
#   define i386SVR3Architecture	
#   define MacroIncludeFile <isc.cf>
#   define MacroFile isc.cf
#   define i386IscArchitecture
#   undef ISC
#   ifdef ISC202
#    define IscVersion 202
#    undef ISC202
#   else
#    ifdef ISC30
#     define IscVersion 300
#     undef ISC30
#    else
#     ifdef ISC40
#      define IscVersion 400
#      undef ISC40
#     else
#      define IscVersion 221
#     endif /* ISC40 */
#    endif /* ISC30 */
#   endif /* ISC202 */
#  endif /* ISC */
#  ifndef MacroFile
#   define i386SVR3Architecture
#   define MacroIncludeFile <x386.cf>
#   define MacroFile x386.cf
#  endif /* MacroFile */
# endif /* ! SVR4 */
#endif /* SYSV386 */

#ifdef DGUX
#define MacroIncludeFile <DGUX.cf>
#define MacroFile DGUX.cf
#undef DGUX
#define DguxArchitecture
#endif /* DGUX */

#ifdef __convex__
# define MacroIncludeFile <convex.cf>
# define MacroFile convex.cf
# ifdef convex
#  undef convex
# endif
# define ConvexArchitecture
#endif /* _convex_ */

#ifdef __osf__
#define MacroIncludeFile <osf1.cf>
#define MacroFile osf1.cf
#define OSF1Architecture
#undef __osf__
#ifdef __mips__
#undef __mips__
#define MipsArchitecture
#endif
#ifdef __alpha
#undef __alpha
#define AlphaArchitecture
#endif
#endif /* __osf__ */

#ifdef Oki
#define MacroIncludeFile <Oki.cf>
#define MacroFile Oki.cf
#undef Oki
#define i860SVR4Architecture
#endif /* Oki */

#ifdef WIN32
#define MacroIncludeFile <Win32.cf>
#define MacroFile Win32.cf
#define Win32Architecture
#endif /* WIN32 */

#ifdef linux 
#define MacroIncludeFile <linux.cf>
#define MacroFile linux.cf
#undef linux
#define LinuxArchitecture
#define i386Architecture
#undef i386
#endif /* linux */

#if defined(Lynx) && defined(i386)
#define MacroIncludeFile <lynx.cf>
#define MacroFile lynx.cf
#undef Lynx
#define LynxOSArchitecture
#define i386Architecture
#undef i386
#endif /* LynxOS AT */

#ifdef __uxp__
#define MacroIncludeFile <fujitsu.cf>
#define MacroFile fujitsu.cf
#undef __uxp__
#ifdef sparc
#undef sparc
#define SparcArchitecture
#endif
#endif /* __uxp__ */

#ifdef __sxg__
#define MacroIncludeFile <fujitsu.cf>
#define MacroFile fujitsu.cf
#undef __sxg__
#define mc68000Architecture
#endif /* __sxg__ */

#if defined(sequent) || defined(_SEQUENT_)
# define MacroIncludeFile <sequent.cf>
# define MacroFile sequent.cf
# ifdef sequent
#  undef sequent
#  define Dynix3Architecture
# endif
# ifdef _SEQUENT_
#  undef _SEQUENT_
#  define DynixPtxArchitecture
# endif
# define SequentArchitecture
#endif

#if defined(_nec_ews_svr4) || defined(nec_ews_svr4) || defined(nec_ews_svr2) || defined(SX) || defined(_nec_up) || defined(_nec_ft) || defined(PC_UX)
#ifdef nec
#undef nec
#endif
#define MacroIncludeFile <nec.cf>
#define MacroFile nec.cf
#define NecArchitecture
#endif

#ifdef minix 
#define MacroIncludeFile <minix.cf>
#define MacroFile minix.cf
#undef minix
#define MinixArchitecture
#define i386Architecture
#endif /* minix */

#ifdef MACH
#define MacroIncludeFile <mach.cf>
#define MacroFile mach.cf
#undef MACH
#ifdef	i386
#define i386MachArchitecture
#define i386Architecture
#endif	/* i386 */
#undef i386
#endif /* MACH */

#ifdef emxos2
#define MacroIncludeFile <os2.cf>
#define MacroFile os2.cf
#define OS2Architecture
#define i386Architecture
#endif /* emxos2 */

#ifndef MacroIncludeFile
XCOMM WARNING:  Imake.cf not configured; guessing at definitions!!!
XCOMM This might mean that BOOTSTRAPCFLAGS was not set when building imake.
#define MacroIncludeFile <generic.cf>
#define MacroFile generic.cf
#endif
