/* machines.h --
   Included file in the makefile that gets run through Cpp.  This file
   tells which machines have what features based on the unique machine
   identifier present in Cpp. */

/* Copyright (C) 1993 Free Software Foundation, Inc.

   This file is part of GNU Bash, the Bourne Again SHell.

   Bash is free software; you can redistribute it and/or modify it under
   the terms of the GNU General Public License as published by the Free
   Software Foundation; either version 2, or (at your option) any later
   version.

   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
   WARRANTY; without even the implied warranty of MERCHANTABILITY or
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   for more details.

   You should have received a copy of the GNU General Public License along
   with Bash; see the file COPYING.  If not, write to the Free Software
   Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */

/* **************************************************************** */
/*                                                                  */
/*                Global Assumptions (true for most systems).       */
/*                                                                  */
/* **************************************************************** */

/* We make some global assumptions here.  This can be #undef'ed in
   various machine specific entries. */

/* If this file is being processed with Gcc, then the user has Gcc. */
#if defined (__GNUC__) && !defined (NeXT) && !defined (__FreeBSD__)
#  if !defined (HAVE_GCC)
#    define HAVE_GCC
#  endif /* HAVE_GCC */
#endif /* __GNUC__ && !NeXT && !__FreeBSD__ */

/* Assume that all machines have the getwd () system call.  We unset it
   for USG systems. */
/* #define HAVE_GETWD */

/* Assume that all systems have a working getcwd () call.  We unset it for
   ISC systems. */
#define HAVE_GETCWD

/* Most (but not all) systems have a good, working version of dup2 ().
   For systems that don't have the call (HP/UX), and for systems
   that don't set the open-on-exec flag for the dup'ed file descriptors,
   (Sequents running Dynix, Ultrix), #undef HAVE_DUP2 in the machine
   description. */
#define HAVE_DUP2

/* Every machine that has Gcc has alloca as a builtin in Gcc.  If you are
   compiling Bash without Gcc, then you must have alloca in a library,
   in your C compiler, or be able to assemble or compile the alloca source
   that we ship with Bash. */
/* #define HAVE_ALLOCA */

/* We like most machines to use the GNU Malloc routines supplied in the
   source code because they provide high quality error checking.  On
   some machines, our malloc () cannot be used (because of library
   conflicts, for example), and for those, you should specifically
   #undef USE_GNU_MALLOC in the machine description. */
/* #define USE_GNU_MALLOC */

/* This causes the Gnu malloc library (from glibc) to be used. */
/* #define USE_GNU_MALLOC_LIBRARY */

/* Assume that every operating system supplies strchr () and strrchr ()
   in a standard library until proven otherwise. */
#define HAVE_STRCHR

/* Hardware-dependent CFLAGS. */
#define MACHINE_CFLAGS

#define HAVE_GETHOSTNAME
#define HAVE_STRERROR
#define HAVE_DIRENT
#define HAVE_GETDTABLESIZE
#define HAVE_BCOPY
#define HAVE_STRCASECMP
#define NO_SYS_FILE
#define SYSDEP_CFLAGS -D_POSIX_SOURCE

/* **************************************************************** */
/*								    */
/*			Sun Microsystems Machines	      	    */
/*								    */
/* **************************************************************** */

/* NetBSD running on a sparc. */
#if defined (sparc) && defined (__NetBSD__)
#  define M_MACHINE "sun4"
#  define M_OS "NetBSD"
#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
			-DRLIMTYPE=quad_t
#  define SYSDEP_LDFLAGS -static
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define HAVE_DIRENT
#  define HAVE_STRCASECMP
#  undef USE_GNU_MALLOC
#endif /* sparc && __NetBSD__ */

/* BSDI BSD/OS running on a sparc. */
#if defined (sparc) && defined (__bsdi__)
#  define M_MACHINE "sun4"
#  define M_OS "BSD_OS"
#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DRLIMTYPE=quad_t
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define HAVE_DIRENT
#  define HAVE_STRCASECMP
#endif /* sparc && __bsdi__ */

#if defined (sun) && !defined (M_MACHINE)
/* We aren't currently using GNU Malloc on Suns because of a bug in Sun's
   YP which bites us when Sun free ()'s an already free ()'ed address.
   When Sun fixes their YP, we can start using our winning malloc again. */
#undef USE_GNU_MALLOC

/* Most Sun systems have signal handler functions that are void. */
#  define VOID_SIGHANDLER

/* Most Sun systems have the following. */
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS

/* Check for SunOS4 or greater. */
#  if defined (SunOS5)
#    define M_OS "SunOS5"
#    define SYSDEP_CFLAGS -DUSGr4 -DUSG -DSolaris -DOPENDIR_NOT_ROBUST \
			  -DNO_SBRK_DECL -DINT_GROUPS_ARRAY
#    define EXTRA_LIB_SEARCH_PATH /usr/ccs/lib
#    if !defined (HAVE_GCC)
#      define REQUIRED_LIBRARIES -ldl
#      define SYSDEP_LDFLAGS -Bdynamic
#    endif /* !HAVE_GCC */
#    define HAVE_STRERROR
#    undef HAVE_GETWD
#    undef HAVE_SETLINEBUF
#  endif /* SunOS5 */

#  if defined (SunOS4)
#    define M_OS "SunOS4"
#    define SYSDEP_CFLAGS -DBSD_GETPGRP -DOPENDIR_NOT_ROBUST -DTERMIOS_LDISC \
			  -DINT_GROUPS_ARRAY
#    define HAVE_DIRENT
#  endif /* SunOS4 */

#  if !defined (SunOS4) && !defined (SunOS5)
#    define M_OS "SunOS3"
#    if !defined (sparc) && !defined (__sparc__)
#      undef VOID_SIGHANDLER
#    endif /* !sparc */
#  endif /* !SunOS4 && !SunOS5 */

#  if defined (mc68010)
#    define sun2
#    define M_MACHINE "sun2"
#  endif
#  if defined (mc68020)
#    define sun3
#    define M_MACHINE "sun3"
#  endif
#  if defined (sparc) || defined (__sparc__)
#    define sun4
#    define M_MACHINE "sparc"
#  endif
#  if defined (i386)
#    define done386
#    if !defined (SunOS5)
#      define Sun386i
#      define M_MACHINE "Sun386i"
#    else
#      define M_MACHINE "i386"
#    endif
#  endif /* i386 */

#endif /* sun && !M_MACHINE */

/* **************************************************************** */
/*								    */
/*			DEC Machines (vax, decstations)   	    */
/*								    */
/* **************************************************************** */

/* ************************ */
/*                          */
/*     Alpha with OSF/1     */
/*                          */
/* ************************ */
#if defined (__alpha) || defined (alpha)
#  define M_MACHINE "alpha"
#  define M_OS "OSF1"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define HAVE_STRERROR
#  define HAVE_GETGROUPS
#  define VOID_SIGHANDLER
#  define USE_TERMCAP_EMULATION
#  if !defined (__GNUC__)
#    define SYSDEP_CFLAGS -DNLS -D_BSD
#  endif /* !__GNUC__ */
#  undef HAVE_ALLOCA
#  undef USE_GNU_MALLOC
#endif /* __alpha || alpha */

/* ************************ */
/*                          */
/*  NetBSD/pmax (DEC mips)  */
/*                          */  
/* ************************ */
#if defined(mips) && defined(__NetBSD__)
#  define M_MACHINE "mips"   
#  define M_OS "NetBSD"
#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
                       -DRLIMTYPE=quad_t
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define HAVE_DIRENT
#  define HAVE_STRCASECMP
#endif /* mips && __NetBSD__ */

/* ************************ */
/*			    */
/*	    Ultrix	    */
/*			    */
/* ************************ */
#if defined (ultrix)
#  if defined (MIPSEL)
#    undef HAVE_ALLOCA_H
#    define M_MACHINE "MIPSEL"
#  else /* !MIPSEL */
#    define M_MACHINE "vax"
#  endif /* !MIPSEL */
#  define SYSDEP_CFLAGS -DBSD_GETPGRP -DTERMIOS_MISSING -DTERMIOS_LDISC \
			-DINT_GROUPS_ARRAY
#  define M_OS "Ultrix"
#  define HAVE_DIRENT
#  define VOID_SIGHANDLER
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS
#  undef HAVE_DUP2
#endif /* ultrix */

/* ************************ */
/*			    */
/*	VAX 4.3 BSD	    */
/*			    */
/* ************************ */
#if defined (vax) && !defined (ultrix)
#  define M_MACHINE "vax"
#  define M_OS "Bsd"
#  define HAVE_SETLINEBUF
#  define HAVE_SYS_SIGLIST
#  define HAVE_GETGROUPS
#  define USE_VFPRINTF_EMULATION
#endif /* vax && !ultrix */

/* ************************ */
/*			    */
/*	Tahoe 4.3 BSD	    */
/*			    */
/* ************************ */
#if defined (tahoe)
#  define M_MACHINE "tahoe"
#  define M_OS "Bsd"
#  define HAVE_SETLINEBUF
#  define HAVE_SYS_SIGLIST
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#endif /* tahoe */

/* **************************************************************** */
/*								    */
/*		Machines with MIPSco processors			    */
/*								    */
/* **************************************************************** */

/* **************************************** */
/*					    */
/*		SGI Iris/IRIX	    	    */
/*					    */
/* **************************************** */
#if defined (sgi)
#  if defined (Irix3)
#    define M_OS "Irix3"
#    if !defined (HAVE_GCC)
#      undef MACHINE_CFLAGS
#      define MACHINE_CFLAGS -real_frameptr -Wf,-XNl3072
#    endif
#    undef HAVE_ALLOCA
#  endif /* Irix3 */
#  if defined (Irix4)
#    define M_OS "Irix4"
#    if !defined (HAVE_GCC)
#      undef MACHINE_CFLAGS
#      define MACHINE_CFLAGS -Wf,-XNl3072
#    endif
#  endif /* Irix4 */
#  if defined (Irix5)
#    define M_OS "Irix5"
#    if !defined (HAVE_GCC)
#      undef MACHINE_CFLAGS
#      define MACHINE_CFLAGS -Wf,-XNl3072
#    endif
#  endif /* Irix5 */
#  if defined (Irix6)
#    define M_OS "Irix6"
#    if !defined (HAVE_GCC)
#      undef MACHINE_CFLAGS
#      define MACHINE_CFLAGS -mips2
#    endif /* !HAVE_GCC */
#  endif /* Irix6 */
#  define M_MACHINE "sgi"
#  define HAVE_GETGROUPS
#  define VOID_SIGHANDLER
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define REQUIRED_LIBRARIES -lsun
   /* SGI cc uses ansi c features *without* defining __STDC__ */
#  if defined (__EXTENSIONS__) && !defined (__STDC__)
#    define ANSIC -D__STDC__
#  else
#    define ANSIC
#  endif /* !__EXTENSIONS__ || __STDC__ */
#  if defined (Irix5) || defined (Irix6)
#    define SGI_CFLAGS -DUSG -DPGRP_PIPE -DHAVE_BCOPY -DHAVE_GETPW_DECLS \
		       -DHAVE_SOCKETS -DNO_SBRK_DECL
#  else
#    define SGI_CFLAGS -DUSG -DPGRP_PIPE -DHAVE_BCOPY -DHAVE_GETPW_DECLS \
		       -DHAVE_SOCKETS
#  endif /* !Irix5 */
#  define SYSDEP_CFLAGS SGI_CFLAGS MACHINE_CFLAGS ANSIC
#  define SYSDEP_LDFLAGS MACHINE_CFLAGS
#endif  /* sgi */

/* ************************ */
/*			    */
/* 	  NEC EWS 4800	    */
/*			    */
/* ************************ */
#if defined (nec_ews)
#  if defined (SYSTYPE_SYSV) || defined (USGr4)
#    define M_MACHINE "ews4800"
#    define M_OS "USG"
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
#    define HAVE_STRERROR
#    define HAVE_DUP2
#    undef HAVE_GETWD
#    undef HAVE_RESOURCE /* ? */
     /* Alloca requires either Gcc or cc with -lucb. */
#    if !defined (HAVE_GCC)
#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#      define REQUIRED_LIBRARIES -lc -lucb
#    endif /* !HAVE_GCC */
#    if defined (MIPSEB)
#      if !defined (HAVE_GCC)
#        undef MACHINE_CFLAGS
#        define MACHINE_CFLAGS -Wf,-XNl3072
#      endif
#      define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 -DUSGr3 -D_POSIX_JOB_CONTROL
#    else /* !MIPSEB */
#      define SYSDEP_CFLAGS -DUSGr4
#    endif /* MIPSEB */
#  else /* !SYSTYPE_SYSV && !USGr4 */
#    define M_OS "Bsd"
#  endif /* !SYSTYPE_SYSV && !USGr4 */
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* nec_ews */

/* ************************ */
/*			    */
/*  Generic MIPS SVR4, 4.2  */
/*			    */
/* ************************ */
#if defined (MIPSEB) && defined (USGr4)
#  define M_MACHINE "MIPSEB"
#  define M_OS "USG"
#  if defined (sony) && !defined (HAVE_GCC)
#    undef MACHINE_CFLAGS
#    define MACHINE_CFLAGS -Wf,-XNl3072
#  endif
/* XXX - os/svr4.h -- for the future -- XXX */
#  undef HAVE_GETWD
#  define HAVE_DIRENT
#  define HAVE_STRERROR
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
/* alloca */
#  if !defined (HAVE_GCC)
#    define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#    define REQUIRED_LIBRARIES -lc -lucb
#  endif /* !HAVE_GCC */
#  if defined (USGr4_2)
#    define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4 -DUSGr4_2
#  else
#    define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4
#  endif /* !USGr4_2 */
#endif

/* ************************ */
/*			    */
/*	    Sony	    */
/*			    */
/* ************************ */
#if defined (sony) && !defined (M_MACHINE)
#  if defined (MIPSEB)
#    define M_MACHINE "MIPSEB"
#  else /* !MIPSEB */
#    define M_MACHINE "sony"
#  endif /* !MIPSEB */

#  if defined (SYSTYPE_SYSV) || defined (USGr4)
#    define M_OS "USG"
#    undef HAVE_GETWD
#    define HAVE_DIRENT
#    define HAVE_STRERROR
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
     /* Alloca requires either Gcc or cc with -lucb. */
#    if !defined (HAVE_GCC)
#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#      define REQUIRED_LIBRARIES -lc -lucb
#    endif /* !HAVE_GCC */
#    if defined (MIPSEB)
#      if !defined (HAVE_GCC)
#        undef MACHINE_CFLAGS
#        define MACHINE_CFLAGS -Wf,-XNl3072
#      endif
#      define SYSDEP_CFLAGS MACHINE_CFLAGS -DUSGr4
#    else /* !MIPSEB */
#      define SYSDEP_CFLAGS -DUSGr4
#    endif /* !MIPSEB */
#  else /* !SYSTYPE_SYSV && !USGr4 */
#    define M_OS "Bsd"
#    define SYSDEP_CFLAGS -DHAVE_UID_T
#  endif /* !SYSTYPE_SYSV && !USGr4 */
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* sony */

/* ******************************* */
/*			           */
/*  Ardent Titan OS v2.2 and later */
/*			           */
/* ******************************* */
#if defined (ardent)
#  define M_MACHINE "Ardent Titan"
#  define M_OS "Bsd"
#  if defined (titan)
#    undef HAVE_GETGROUPS
#  else
#    define HAVE_GETGROUPS
#  endif /* !titan */
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define SYSDEP_CFLAGS -43 -w
#  define SYSDEP_LDFLAGS -43
#  undef HAVE_ALLOCA
#  undef USE_GNU_MALLOC
#  undef HAVE_VFPRINTF
#  undef HAVE_DIRENT_H
#endif /* ardent */

/* ************************ */
/*			    */
/*	  Stardent	    */
/*			    */
/* ************************ */
#if defined (stardent) && !defined (M_MACHINE)
#  define M_MACHINE "Stardent"
#  define M_OS "USG"
#  define HAVE_SYS_SIGLIST
#  define USE_TERMCAP_EMULATION
#  define VOID_SIGHANDLER
#  undef HAVE_GETWD
#  undef HAVE_ALLOCA
#endif /* stardent */

/* ******************************** */
/*				    */
/*	   MIPS RISC/os		    */
/*				    */
/* ******************************** */

/* Notes on compiling with "make":

   * Place /bsd43/bin in your PATH before /bin.
   * Use `$(CC) -E' instead of `/lib/cpp' in Makefile.
*/
#if defined (mips) && ((!defined (M_MACHINE) && !defined (__nonstopux)) || defined (RiscOS))

#  if defined (MIPSEB)
#    define M_MACHINE "MIPSEB"
#  else /* !MIPSEB */
#    if defined (MIPSEL)
#      define M_MACHINE "MIPSEL"
#    else /* !MIPSEL */
#      define M_MACHINE "mips"
#    endif /* !MIPSEL */
#  endif /* !MIPSEB */

#  define M_OS "Bsd"

   /* Special things for machines from MIPS Co. */
#  define MIPS_CFLAGS -DOPENDIR_NOT_ROBUST -DPGRP_PIPE

#  if !defined (HAVE_GCC)
#    undef MACHINE_CFLAGS
#    define MACHINE_CFLAGS -Wf,-XNl3072 -systype bsd43
#    define SYSDEP_LDFLAGS -systype bsd43
#  endif /* !HAVE_GCC */
#  define SYSDEP_CFLAGS MACHINE_CFLAGS MIPS_CFLAGS
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS
#  undef HAVE_UNISTD_H
#  if !defined (HAVE_RESOURCE)
#    define HAVE_RESOURCE
#  endif /* !HAVE_RESOURCE */
   /* /usr/include/sys/wait.h appears not to work correctly, so why use it? */
#  undef HAVE_WAIT_H
#endif /* mips */

/* ************************ */
/*			    */
/*	  Pyramid	    */
/*			    */
/* ************************ */
#if defined (pyr)
#  define M_MACHINE "Pyramid"
#  define M_OS "Bsd"
#  if !defined (HAVE_GCC)
#    undef HAVE_ALLOCA
#  endif /* HAVE_GCC */
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* pyr */

/* ************************ */
/*			    */
/*	    IBMRT	    */
/*			    */
/* ************************ */
#if defined (ibm032)
#  define M_MACHINE "IBMRT"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define USE_VFPRINTF_EMULATION
   /* Alloca requires either gcc or hc or pcc with -ma in SYSDEP_CFLAGS. */
#  if !defined (HAVE_GCC)
#    define SYSDEP_CFLAGS -ma -U__STDC__
#  endif /* !HAVE_GCC */
#  define HAVE_GETGROUPS
/* #define USE_GNU_TERMCAP */
#endif /* ibm032 */

/* **************************************************************** */
/*								    */
/*	  All Intel 386 Processor Machines are Defined Here!	    */
/*								    */
/* **************************************************************** */

#if defined (i386)

/* Sequent Symmetry running Dynix/ptx 2.x */
#  if !defined (done386) && defined (_SEQUENT_)
#    define done386
#    define M_MACHINE "Symmetry"
#    define M_OS "Dynix"
#    define DYNIX_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_SETDTABLESIZE \
			 -DHAVE_GETPW_DECLS -DHAVE_SOCKETS
#    define SYSDEP_CFLAGS -DUSG -DUSGr3 DYNIX_CFLAGS
#    define HAVE_DIRENT
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
/* Might need to add -lsocket -linet -lnsl to the list of libraries. */
#    define REQUIRED_LIBRARIES -lPW -lseq
#    undef HAVE_GETWD
#    undef HAVE_RESOURCE
#    undef HAVE_ALLOCA
#  endif /* _SEQUENT_ */

/* Sequent Symmetry running Dynix (4.2 BSD) */
#  if !defined (done386) && defined (sequent)
#    define done386
#    define M_MACHINE "Symmetry"
#    define M_OS "Bsd"
#    define SYSDEP_CFLAGS -DCPCC -DHAVE_SETDTABLESIZE
#    define HAVE_SETLINEBUF
#    define HAVE_SYS_SIGLIST
#    define HAVE_GETGROUPS
#    define LD_HAS_NO_DASH_L
#    undef HAVE_DUP2
#  endif /* Sequent 386 */

/* NeXT 3.x on i386 */
#  if !defined (done386) && defined (NeXT)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "NeXTstep"
#    define HAVE_VFPRINTF
#    define HAVE_SYS_SIGLIST
#    define HAVE_GETGROUPS
#    define HAVE_STRERROR
#    define VOID_SIGHANDLER
#    if !defined (HAVE_RESOURCE)
#      define HAVE_RESOURCE
#    endif
#    define HAVE_STRCASECMP
#    define GCC_STANDARD
#    undef HAVE_GETWD
#    undef HAVE_GETCWD
#    undef USE_GNU_MALLOC
#    undef HAVE_DIRENT_H
#    define SYSDEP_CFLAGS -DNeXT -DMKFIFO_MISSING -DRLOGIN_PGRP_BUG
#  endif

/* Generic 386 clone running Mach (4.3 BSD-compatible). */
#  if !defined (done386) && defined (MACH)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "Bsd"
#    define HAVE_SETLINEBUF
#    define HAVE_SYS_SIGLIST
#    define HAVE_GETGROUPS
#  endif /* i386 && MACH */

/* AIX PS/2 1.[23] for the [34]86. */
#  if !defined (done386) && defined (aixpc)
#    define done386
#    define M_MACHINE "aixpc"
#    define M_OS "AIX"
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
#    if defined (AIX_13)	/* AIX PS/2 1.3 */
#      define SYSDEP_CFLAGS -DTERMIOS_LDISC
#      define REQUIRED_LIBRARIES -lc_s
#    else
#      define SYSDEP_CFLAGS -D_BSD -DTERMIOS_LDISC
#      define REQUIRED_LIBRARIES -lbsd -lc_s
#    endif /* !AIX_13 */
#    define HAVE_GETGROUPS
#    if !defined (HAVE_GCC)
#      undef HAVE_ALLOCA
#      undef HAVE_ALLOCA_H
#    endif /* !HAVE_GCC */
#    define USE_TERMCAP_EMULATION
#  endif /* AIXPC i386 */

/* System V Release 4 on the 386 */
#  if !defined (done386) && defined (USGr4)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "USG"
#    define HAVE_DIRENT
#    define HAVE_SYS_SIGLIST
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
     /* Alloca requires either Gcc or cc with -lucb. */
#    if !defined (HAVE_GCC)
#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#      define REQUIRED_LIBRARIES -lc -lucb
#    endif /* !HAVE_GCC */
#    define HAVE_GETGROUPS
#    if defined (USGr4_2)
#      define SYSDEP_CFLAGS -DUSGr4 -DUSGr4_2 -DNO_SBRK_DECL
#    else
#      define SYSDEP_CFLAGS -DUSGr4
#    endif /* ! USGr4_2 */
#    undef HAVE_GETWD
#  endif /* System V Release 4 on i386 */

/* 386 box running Interactive Unix 2.2 or greater. */
#  if !defined (done386) && defined (isc386)
#    define done386
#    define M_MACHINE "isc386"
#    define M_OS "USG"
#    define HAVE_DIRENT
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
#    define HAVE_GETGROUPS
#    define USE_TERMCAP_EMULATION
#    if defined (HAVE_GCC)
#      define SYSDEP_LDFLAGS -posix
#      define ISC_POSIX
#    else
#      define REQUIRED_LIBRARIES -lPW
#      define SYSDEP_LDFLAGS -Xp
#      define ISC_POSIX -Xp
#    endif
#    define ISC_SYSDEPS -DUSGr3 -DPGRP_PIPE -DHAVE_GETPW_DECLS -D_POSIX_SOURCE -DOPENDIR_NOT_ROBUST -DMEMMOVE_MISSING -DWAITPID_BROKEN
#    if defined (__STDC__)
#      if defined (HAVE_GCC)
#        define ISC_EXTRA -DO_NDELAY=O_NONBLOCK
#      else
#        define ISC_EXTRA -Dmode_t="unsigned short" -DO_NDELAY=O_NONBLOCK
#      endif /* HAVE_GCC */
#    else
#      define ISC_EXTRA
#    endif /* __STDC__ */
#    define SYSDEP_CFLAGS ISC_SYSDEPS ISC_POSIX ISC_EXTRA
#    undef HAVE_GETWD
#    if !defined (ISC_4)
#      undef HAVE_GETCWD
#    else
#      undef HAVE_RESOURCE
#    endif /* ISC_4 */
#  endif /* isc386 */

/* Xenix386 machine (with help from Ronald Khoo <ronald@robobar.co.uk>). */
#  if !defined (done386) && defined (Xenix386)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "Xenix"
#    define XENIX_CFLAGS -DUSG -DUSGr3 -DMEMMOVE_MISSING

#    if defined (XENIX_22)
#      define XENIX_EXTRA -DREVERSED_SETVBUF_ARGS
#      define REQUIRED_LIBRARIES -lx
#    else /* !XENIX_22 */
#      define HAVE_DIRENT
#      if defined (XENIX_23)
#        define XENIX_EXTRA -DLD_HAS_NO_DASH_L
#        define REQUIRED_LIBRARIES -ldir
#      else /* !XENIX_23 */
#        define XENIX_EXTRA -xenix
#        define SYSDEP_LDFLAGS -xenix
#        define REQUIRED_LIBRARIES -ldir -l2.3
#      endif /* !XENIX_23 */
#    endif /* !XENIX_22 */

#    define SYSDEP_CFLAGS XENIX_CFLAGS XENIX_EXTRA
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
#    define ALLOCA_ASM x386-alloca.s
#    define ALLOCA_OBJ x386-alloca.o
#    undef HAVE_ALLOCA
#    undef HAVE_GETWD
#    undef HAVE_RESOURCE
#  endif /* Xenix386 */

/* SCO UNIX 3.2 chip@count.tct.com (Chip Salzenberg) */
#  if !defined (done386) && defined (M_UNIX)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "SCO"
#    define SCO_CFLAGS -DUSG -DUSGr3 -DPGRP_PIPE
#    if defined (SCOv4) || defined (SCOv5)
#      define SYSDEP_CFLAGS SCO_CFLAGS -DWAITPID_BROKEN
#    else /* !SCOv4 && !SCOv5 */
#      define SYSDEP_CFLAGS SCO_CFLAGS -DOPENDIR_NOT_ROBUST -DMUST_UNBLOCK_CHILD
#    endif /* !SCOv4 && !SCOv5 */
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
#    define HAVE_GETGROUPS
#    undef HAVE_GETWD
#    undef HAVE_RESOURCE
/* advice from wbader@cess.lehigh.edu and Eduard.Vopicka@vse.cz */
#    if !defined (HAVE_GCC)
#      define REQUIRED_LIBRARIES -lc_s -lc -lPW
#    else
#      define REQUIRED_LIBRARIES -lc_s -lc
#    endif /* !HAVE_GCC */
#  endif /* SCO Unix on 386 boxes. */

#  if !defined (done386) && defined (__OSF1__)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "OSF1"
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_VFPRINTF
#    define HAVE_STRERROR
#    define HAVE_GETGROUPS
#    define VOID_SIGHANDLER
#    define HAVE_BCOPY
#    define USE_TERMCAP_EMULATION
#    define SYSDEP_CFLAGS -D_BSD
#    define REQUIRED_LIBRARIES -lbsd
#  endif /* OSF/1 */

/* BSDI BSD/OS running on a 386 or 486. */
#  if !defined (done386) && defined (__bsdi__)
#    define done386
#    define M_MACHINE "i386"
#    if defined (BSDI2)
#      define M_OS "BSD_OS"
#      define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DRLIMTYPE=quad_t
#    else
#      define M_OS "BSD386"
#      define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY
#    endif
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_GETGROUPS
#    define HAVE_VFPRINTF
#    define HAVE_STRERROR
#    define VOID_SIGHANDLER
#    define HAVE_DIRENT
#    define HAVE_STRCASECMP
#  endif /* !done386 && bsdi */

/* NetBSD running on a 386 or 486. */
#  if !defined (done386) && defined (__NetBSD__)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "NetBSD"
#    define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
			  -DRLIMTYPE=quad_t
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_GETGROUPS
#    define HAVE_VFPRINTF
#    define HAVE_STRERROR
#    define VOID_SIGHANDLER
#    define HAVE_DIRENT
#    define HAVE_STRCASECMP
#  endif /* !done386 && __NetBSD__ */

/* FreeBSD running on a 386 or 486. */
#  if !defined (done386) && defined (__FreeBSD__)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "FreeBSD"
#    if __FreeBSD__ > 1
#      define SYSDEP_CFLAGS -D__BSD_4_4__ -DRLIMTYPE=quad_t
#    else
#      define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY
#    endif
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_GETGROUPS
#    define HAVE_VFPRINTF
#    define HAVE_STRERROR
#    define VOID_SIGHANDLER
#    define HAVE_DIRENT
#    define HAVE_STRCASECMP
#    define GCC_STANDARD
#  endif /* !done386 && __FreeBSD__ */

/* Jolitz 386BSD running on a 386 or 486. */
#  if !defined (done386) && defined (__386BSD__)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "_386BSD"
#    define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_GETGROUPS
#    define HAVE_VFPRINTF
#    define HAVE_STRERROR
#    define VOID_SIGHANDLER
#    define HAVE_DIRENT
#    define HAVE_STRCASECMP
#  endif /* !done386 && __386BSD__ */

#  if !defined (done386) && (defined (__linux__) || defined (linux))
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "Linux"
#    define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY \
			  -DHAVE_GETPW_DECLS -DHAVE_GETHOSTNAME
#    define REQUIRED_LIBRARIES
#    define HAVE_GETGROUPS
#    define HAVE_STRERROR
#    define VOID_SIGHANDLER
#    define HAVE_SYS_SIGLIST
#    define HAVE_VFPRINTF
#    define HAVE_VARARGS_H
#    define SEARCH_LIB_NEEDS_SPACE
#    if defined (__GNUC__)
#      define HAVE_FIXED_INCLUDES
#    endif /* __GNUC__ */
#    undef USE_GNU_MALLOC
#    undef HAVE_SETLINEBUF
#    undef HAVE_GETWD
#  endif  /* !done386 && __linux__ */

/* QNX 4.2 with GCC pt@flard.ocunix.on.ca (Paul Trunley) */
#  if !defined (done386) && defined (qnx)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "QNX"
#    define SYSDEP_CFLAGS -D_POSIX_SOURCE -O2 -DUSG
#    define HAVE_VFPRINTF
#    define VOID_SIGHANDLER
#    define HAVE_GCC
#    define HAVE_FIXED_INCLUDES
#    define HAVE_STRERROR
#    define HAVE_GETGROUPS
#    undef USE_GNU_MALLOC
#  endif /* QNX 4.2 with GCC */

/* Lynx 2.1.0 (Mike Brennen <mbrennen@maverick.intecom.com>) */
#  if !defined (done386) && (defined (__Lynx__) || defined (Lynx))
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "Lynx"
#    define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY
#    define REQUIRED_LIBRARIES -lc_p
#    define HAVE_GETGROUPS
#    define VOID_SIGHANDLER
#    define HAVE_SYS_SIGLIST
#    define HAVE_VFPRINTF
#    define HAVE_VARARGS_H
#    if defined (__GNUC__)
#      define HAVE_FIXED_INCLUDES
#    endif /* __GNUC__ */
/* Actually, Lynx does have unistd.h, but it defines _POSIX_VERSION,
   and doesn't supply a fully compatible job control package.  We just
   pretend that it doesn't have it. */
#  undef HAVE_UNISTD_H
/* Lynx's wait structure reverses w_Stopval and w_Stopsig - don't use it */
#  undef HAVE_WAIT_H
#  undef HAVE_DIRENT_H
#  endif  /* !done386 && __Lynx__ */

/* Assume a generic 386 running Sys V Release 3. */
#  if !defined (done386)
#    define done386
#    define M_MACHINE "i386"
#    define M_OS "USG"
#    define VOID_SIGHANDLER
     /* Alloca requires either Gcc or cc with libPW.a */
#    if !defined (HAVE_GCC)
/*#      define REQUIRED_LIBRARIES -lPW*/
#    endif /* !HAVE_GCC */
#    undef HAVE_GETWD
#  endif /* Generic i386 Box running Sys V release 3. */
#endif /* All i386 Machines with an `i386' define in cpp. */

/* **************************************************************** */
/*			                                            */
/*	                 Alliant FX/800                             */
/*			                                            */
/* **************************************************************** */
/* Original descs flushed.  FX/2800 machine desc 1.13 bfox@ai.mit.edu.
   Do NOT use -O with the stock compilers.  If you must optimize, use
   -uniproc with fxc, and avoid using scc. */
#if defined (alliant)
#  define M_MACHINE "alliant"
#  define M_OS "Concentrix"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define HAVE_RESOURCE
#  define VOID_SIGHANDLER
#  define HAVE_STRERROR
#  define USE_GNU_MALLOC
#  define LD_HAS_NO_DASH_L
#  define SYSDEP_CFLAGS -DTERMIOS_MISSING -DMKFIFO_MISSING \
	-DBSD_GETPGRP -DRLOGIN_PGRP_BUG -w
   /* Actually, Alliant does have unistd.h, but it defines _POSIX_VERSION,
      and doesn't supply a fully compatible job control package.  We just
      pretend that it doesn't have it. */
#  undef HAVE_UNISTD_H
#  undef HAVE_ALLOCA
#endif /* alliant */

/* ********************* */
/*                       */
/*      Linux/m68k       */
/*                       */
/* ********************* */
#if defined (mc68000) && (defined (__linux__) || defined (linux))
#  define M_MACHINE "m68k"
#  define M_OS "Linux"
#  define SYSDEP_CFLAGS -DHAVE_BCOPY -DHAVE_GETPW_DECLS -DHAVE_GETHOSTNAME
#  define REQUIRED_LIBRARIES
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define HAVE_SYS_SIGLIST
#  define HAVE_VFPRINTF
#  define HAVE_VARARGS_H
#  if defined (__GNUC__)
#    define HAVE_FIXED_INCLUDES
#  endif /* __GNUC__ */
#  undef USE_GNU_MALLOC
#  undef HAVE_SETLINEBUF
#  define HAVE_STRCASECMP
#endif  /* mc68000 && __linux__ */

/* **************************************************************** */
/*                                                                  */
/*            Motorola Delta series running System V R3V6/7         */
/*                                                                  */
/* **************************************************************** */
/* Contributed by Robert L. McMillin (rlm@ms_aspen.hac.com).  */

#if defined (m68k) && defined (sysV68)
#  define M_MACHINE "Delta"
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -DUSGr3 -DMEMMOVE_MISSING
#  define VOID_SIGHANDLER
#  define HAVE_VFPRINTF
#  define REQUIRED_LIBRARIES -lm881
#  undef HAVE_GETWD
#  undef HAVE_RESOURCE
#  undef HAVE_DUP2
#  undef HAVE_ALLOCA
#endif /* Delta series */

/* **************************************************************** */
/*								    */
/*		      Gould 9000 - UTX/32 R2.1A			    */
/*								    */
/* **************************************************************** */
#if defined (gould)		/* Maybe should be GOULD_PN ? */
#  define M_MACHINE "gould"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* gould */

/* ************************ */
/*			    */
/*	    NeXT	    */
/*			    */
/* ************************ */
#if defined (NeXT) && !defined (M_MACHINE)
#  define M_MACHINE "NeXT"
#  define M_OS "NeXTstep"
#  define HAVE_VFPRINTF
#  define HAVE_SYS_SIGLIST
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  if !defined (HAVE_RESOURCE)
#    define HAVE_RESOURCE
#  endif
#  define HAVE_STRCASECMP
#  define GCC_STANDARD
#  undef HAVE_GETWD
#  undef HAVE_GETCWD
#  undef HAVE_DIRENT_H
#  define SYSDEP_CFLAGS -DMKFIFO_MISSING -DRLOGIN_PGRP_BUG
#  undef USE_GNU_MALLOC
#endif /* NeXT */

/* ********************** */
/*                        */
/*       m68k NetBSD      */
/*                        */
/* ********************** */
#if defined (m68k) && defined (__NetBSD__)
#  include <machine/param.h>
#  define M_MACHINE MACHINE
#  define M_OS "NetBSD"
/* os/netbsd.h */
#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
			-DRLIMTYPE=quad_t
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define HAVE_DIRENT
#  define HAVE_STRCASECMP
#endif /* m68k && __NetBSD__ */

/* ************************ */
/*			    */
/*	hp9000 4.4 BSD	    */
/*			    */
/* ************************ */
#if defined (hp9000) && defined (__BSD_4_4__)
#  define M_MACHINE "hp9000"
#  define M_OS "BSD_4_4"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_STRCASECMP
#  define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY -DHAVE_RESOURCE
#  undef HAVE_ALLOCA
#endif /* hp9000 && __BSD_4_4__ */

/* ************************ */
/*			    */
/*	hp9000 4.3 BSD	    */
/*			    */
/* ************************ */
#if defined (hp9000) && !defined (hpux) && !defined (M_MACHINE)
#  define M_MACHINE "hp9000"
#  define M_OS "Bsd"
#  undef HAVE_ALLOCA
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define USE_VFPRINTF_EMULATION
#endif /* hp9000 && !hpux */

/* ************************ */
/*                          */
/*          hpux            */
/*                          */
/* ************************ */
#if defined (hpux)

/* HPUX comes in several different flavors, from pre-release 6.2 (basically
   straight USG), to Posix compliant 9.0. */

   /* HP machines come in several processor types.
      They are distinguished here. */
#  if defined (hp9000s200) && !defined (hp9000s300)
#    define M_MACHINE "hp9000s200"
#  endif /* hp9000s200 */
#  if defined (hp9000s300) && !defined (M_MACHINE)
#    define M_MACHINE "hp9000s300"
#  endif /* hp9000s300 */
#  if defined (hp9000s500) && !defined (M_MACHINE)
#    define M_MACHINE "hp9000s500"
#  endif /* hp9000s500 */
#  if defined (hp9000s700) && !defined (M_MACHINE)
#    define M_MACHINE "hp9000s700"
#  endif /* hp9000s700 */
#  if defined (hp9000s800) && !defined (M_MACHINE)
#    define M_MACHINE "hp9000s800"
#  endif /* hp9000s800 */
#  if defined (hppa) && !defined (M_MACHINE)
#    define M_MACHINE "hppa"
#  endif /* hppa */

/* Define the OS as the particular type that we are using. */
/* This is for HP-UX systems earlier than HP-UX 6.2 -- no job control. */
#  if defined (HPUX_USG)
#    define M_OS "USG"
#    define HPUX_CFLAGS -Dhpux
#    define REQUIRED_LIBRARIES -lPW -lBSD
#    undef HAVE_WAIT_H
#    define HPUX_EXTRA
#  else /* !HPUX_USG */

/* All of the other operating systems need HPUX to be defined. */
#    define HPUX_EXTRA -DHPUX -Dhpux -DHAVE_GETHOSTNAME -DUSG

     /* HPUX 6.2 .. 6.5 require -lBSD for getwd (), and -lPW for alloca (). */
#    if defined (HPUX_6)
#      define M_OS "hpux_6"
#      define REQUIRED_LIBRARIES -lPW -lBSD
#      undef HAVE_ALLOCA
#      undef HAVE_WAIT_H
#    endif /* HPUX_6 */

     /* On HP-UX 7.x, we do not link with -lBSD, so we don't have getwd (). */
#    if defined (HPUX_7)
#      define M_OS "hpux_7"
#      define REQUIRED_LIBRARIES -lPW
#      define HPUX_CFLAGS -DHAVE_SOCKETS
#      undef HAVE_GETWD
#      undef USE_GNU_MALLOC
#    endif /* HPUX_7 */

     /* HP-UX 8.x systems do not have a working alloca () on all platforms.
	This can cause us problems, especially when globbing.  HP has the
	same YP bug as Sun, so we #undef USE_GNU_MALLOC. */
#    if defined (HPUX_8)
#      define M_OS "hpux_8"
#      if !defined (__GNUC__)
#        undef HAVE_ALLOCA
#	 define HPUX_ANSI +O3 -Aa -D_HPUX_SOURCE
#      else
#	 define HPUX_ANSI
#      endif
#      undef HAVE_GETWD
#      undef USE_GNU_MALLOC
#      define HPUX_CFLAGS -DNO_SBRK_DECL -DHAVE_SOCKETS HPUX_ANSI
#    endif /* HPUX_8 */

     /* HP-UX 9.0 reportedly fixes the alloca problems present in the 8.0
        release.  If so, -lPW is required to include it. */
#    if defined (HPUX_9)
#      define M_OS "hpux_9"
#      if !defined (__GNUC__)
#        undef HAVE_ALLOCA
#	 define HPUX_ANSI +O3 -Ae
#      else
#	 define HPUX_ANSI
#      endif
#      undef HAVE_GETWD
#      undef USE_GNU_MALLOC
#      undef HAVE_RESOURCE
#      define HPUX_CFLAGS -DNO_SBRK_DECL -DHAVE_SOCKETS -DHAVE_GETHOSTNAME HPUX_ANSI
#    endif /* HPUX_9 */

#    if defined (HPUX_10)
#      define M_OS "hpux_10"
#      if !defined (__GNUC__)
#        undef HAVE_ALLOCA
#	 define HPUX_ANSI +O3 -Ae
#      else
#	 define HPUX_ANSI
#      endif
#      undef HAVE_GETWD
#      undef USE_GNU_MALLOC
#      undef HAVE_RESOURCE
#      define HPUX_CFLAGS -DNO_SBRK_DECL -DHAVE_SOCKETS -DHAVE_GETHOSTNAME -DBSD_GETPGRP HPUX_ANSI
#    endif /* HPUX_9 */

#  endif /* !HPUX_USG */

   /* All of the HPUX systems that we have tested have the following. */
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define USE_TERMCAP_EMULATION
#  define SEARCH_LIB_NEEDS_SPACE

#  if defined (HPUX_CFLAGS)
#    define SYSDEP_CFLAGS HPUX_CFLAGS HPUX_EXTRA
#  else /* !HPUX_CFLAGS */
#    define SYSDEP_CFLAGS HPUX_EXTRA
#  endif /* !HPUX_CFLAGS */

#endif /* hpux */

/* ************************ */
/*                          */
/*        MIPS OSF/1        */
/*                          */
/* ************************ */
#  if defined (MIPSEL) && defined (__OSF1__)
#    define M_MACHINE "mips"
#    define M_OS "OSF1"
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_VFPRINTF
#    define HAVE_STRERROR
#    define HAVE_GETGROUPS
#    define VOID_SIGHANDLER
#    define HAVE_BCOPY
#    define USE_TERMCAP_EMULATION
#    define SYSDEP_CFLAGS -D_BSD
#    define REQUIRED_LIBRARIES -lbsd
#  endif /* MIPSEL && __OSF1__ */

/* ************************ */
/*                          */
/*        HP OSF/1          */
/*                          */
/* ************************ */
#if defined (__hp_osf)
#  define M_MACHINE "HPOSF1"
#  define M_OS "OSF1"
#  define SYSDEP_CFLAGS -q no_sl_enable
#  define SYSDEP_LDFLAGS -q lang_level:classic
#  define REQUIRED_LIBRARIES -lPW
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  undef HAVE_ALLOCA
#endif /* __hp_osf */

/* ************************ */
/*                          */
/*        KSR1 OSF/1        */
/*                          */
/* ************************ */
#if defined (__ksr1__)
#  define M_MACHINE "KSR1"
#  define M_OS "OSF1"
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define SYSDEP_CFLAGS -DHAVE_GETDTABLESIZE -DHAVE_BCOPY -DHAVE_UID_T
#  undef HAVE_ALLOCA
#  undef USE_GNU_MALLOC
#endif /* ksr1 */

/* ************************ */
/*                          */
/*   Intel Paragon - OSF/1  */
/*                          */
/* ************************ */
#if defined (__i860) && defined (__PARAGON__)
#  define M_MACHINE "Paragon"
#  define M_OS "OSF1"
#  define HAVE_GETGROUPS
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_STRERROR
#  define HAVE_SYS_SIGLIST
#endif /* __i860 && __PARAGON__ */

/* ************************ */
/*                          */
/* IBM AIX/ESA (OSF/1)      */
/*                          */
/* ************************ */
#if defined(AIXESA) || (defined(__ibmesa) && defined(_AIX))
#  define M_MACHINE "IBMESA"
#  define M_OS "OSF1"
#  define HAVE_GETGROUPS
#  define HAVE_SETLINEBUF
#  define HAVE_VPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_STRERROR
#  define HAVE_SYS_SIGLIST
#  define HAVE_ALLOCA_H		/* hack for AIX/ESA, which has malloc.h */
#  undef USE_GNU_MALLOC
#endif /* AIXESA || (__ibmesa && _AIX) */

/* ************************ */
/*                          */
/*   Intel i860  -- SVR4    */
/*                          */
/* ************************ */
#if defined (__i860) && defined (USGr4) && !defined (M_MACHINE)
#  define M_MACHINE "i860"
#  define M_OS "USG"
#  define HAVE_DIRENT
#  define HAVE_SYS_SIGLIST
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  if !defined (HAVE_GCC) && !defined (HAVE_ALLOCA_H)
#    undef HAVE_ALLOCA
#  endif /* !HAVE_GCC && !HAVE_ALLOCA_H */
#  if defined (USGr4_2)
#    define SYSDEP_CFLAGS -DUSGr4 -DUSGr4_2
#  else
#    define SYSDEP_CFLAGS -DUSGr4
#  endif /* ! USGr4_2 */
#  undef HAVE_GETWD
#endif /* __i860 && USGr4 */

/* ************************ */
/*			    */
/*	    Xenix286	    */
/*			    */
/* ************************ */
#if defined (Xenix286)
#  define M_MACHINE "i286"
#  define M_OS "Xenix"

#  define XENIX_CFLAGS -DUSG -DUSGr3 -DMEMMOVE_MISSING

#  if defined (XENIX_22)
#    define XENIX_EXTRA -DREVERSED_SETVBUF_ARGS
#    define REQUIRED_LIBRARIES -lx
#  else /* !XENIX_22 */
#    define HAVE_DIRENT
#    if defined (XENIX_23)
#      define XENIX_EXTRA -DLD_HAS_NO_DASH_L
#      define REQUIRED_LIBRARIES -ldir
#    else /* !XENIX_23 */
#      define XENIX_EXTRA -xenix
#      define SYSDEP_LDFLAGS -xenix
#      define REQUIRED_LIBRARIES -ldir -l2.3
#    endif /* !XENIX_23 */
#  endif /* !XENIX_22 */

#  define SYSDEP_CFLAGS XENIX_CFLAGS XENIX_EXTRA
#  undef HAVE_ALLOCA
#  undef HAVE_GETWD
#  undef HAVE_RESOURCE
#endif /* Xenix286 */

/* ************************ */
/*			    */
/*	    convex	    */
/*			    */
/* ************************ */
#if defined (convex)
#  define M_MACHINE "convex"
#  define M_OS "Bsd"
#  undef HAVE_ALLOCA
#  define HAVE_SETLINEBUF
#  define HAVE_SYS_SIGLIST
#  define HAVE_GETGROUPS
#endif /* convex */

/* ************************ */
/*                          */
/*          AIX/RT          */
/*                          */
/* ************************ */
#if defined (aix) && !defined (aixpc)
#  define M_MACHINE "AIXRT"
#  define M_OS "USG"
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define HAVE_SYS_SIGLIST
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  define USE_TERMCAP_EMULATION
#  if !defined (HAVE_GCC)
#    undef MACHINE_CFLAGS
#    define MACHINE_CFLAGS -a
#  endif /* !HAVE_GCC */
#  define SYSDEP_CFLAGS MACHINE_CFLAGS -DNLS -DUSGr3 -DHAVE_BCOPY
#  undef USE_GNU_MALLOC
#  undef HAVE_ALLOCA
#  undef HAVE_RESOURCE
#endif /* aix && !aixpc */

/* **************************************** */
/*					    */
/*		IBM RISC 6000		    */
/*					    */
/* **************************************** */
#if defined (RISC6000) || defined (_IBMR2)
#  define M_MACHINE "RISC6000"
#  define M_OS "AIX"
#  define HAVE_DIRENT
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define USE_TERMCAP_EMULATION
#  define HAVE_GETGROUPS
#  define SYSDEP_CFLAGS -DNLS -DUSGr3 -DHAVE_BCOPY
#  undef HAVE_ALLOCA
#  undef HAVE_GETWD
#  undef USE_GNU_MALLOC
#endif /* RISC6000 */

/* **************************************** */
/*					    */
/*	u370 IBM AIX/370		    */
/*					    */
/* **************************************** */
#if defined (u370)
#  if defined (_AIX370)
#    define M_MACHINE "AIX370"
#    define M_OS "Bsd"
#    define REQUIRED_LIBRARIES -lbsd
#    define HAVE_SETLINEBUF
#    define HAVE_VFPRINTF
#    define SYSDEP_CFLAGS -D_BSD
#    define HAVE_GETGROUPS
#    define USE_TERMCAP_EMULATION
#    undef USE_GNU_MALLOC
#  endif /* _AIX370 */
#  if defined (USGr4) /* System V Release 4 on 370 series architecture. */
#    define M_MACHINE "uxp"
#    define M_OS "USG"
#    define HAVE_DIRENT
#    define HAVE_SYS_SIGLIST
#    define HAVE_VFPRINTF
#    define USE_GNU_MALLOC
#    define VOID_SIGHANDLER
#    if !defined (HAVE_GCC)
#      undef HAVE_ALLOCA
#      define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#      define REQUIRED_LIBRARIES -lc -lucb
#    endif /* !HAVE_GCC */
#    define HAVE_GETGROUPS
#    define HAVE_RESOURCE
#    define SYSDEP_CFLAGS -DUSGr4 -DNO_SBRK_DECL
#    endif /* USGr4 */
#endif /* u370 */

/* ************************ */
/*			    */
/*	    ATT 3B	    */
/*			    */
/* ************************ */
#if defined (att3b) || defined (u3b2)
#  if defined (att3b)
#    define M_MACHINE "att3b"
#    define HAVE_SYS_SIGLIST
#  else /* !att3b */
#    define M_MACHINE "u3b2"
#  endif /* !att3b */
#  define M_OS "USG"
#  undef HAVE_GETWD
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
   /* For an AT&T Unix before V.3 take out the -DUSGr3 and the HAVE_DIRENT. */
#  define SYSDEP_CFLAGS -DUSGr3
#  define HAVE_DIRENT
   /* Alloca requires either Gcc or cc with libPW.a. */
#  if !defined (HAVE_GCC)
#    define REQUIRED_LIBRARIES -lPW
#  endif /* !HAVE_GCC */
#endif /* att3b */

/* ************************ */
/*			    */
/*	    ATT 386	    */
/*			    */
/* ************************ */
#if defined (att386)
#  define M_MACHINE "att386"
#  define M_OS "USG"
#  undef HAVE_GETWD
   /* Alloca requires either Gcc or cc with libPW.a. */
#  if !defined (HAVE_GCC)
#    define REQUIRED_LIBRARIES -lPW
#  endif /* HAVE_GCC */
#  define HAVE_SYS_SIGLIST
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
   /* For an AT&T Unix before V.3 take out the -DUSGr3 and the HAVE_DIRENT. */
#  define SYSDEP_CFLAGS -DUSGr3
#  define HAVE_DIRENT
#endif /* att386 */

/* ************************ */
/*			    */
/*	 ATT UNIX PC	    */
/*			    */
/* ************************ */
#if defined (unixpc)
#  define M_MACHINE "unixpc"
#  define M_OS "USG"
#  define HAVE_VFPRINTF
#  define HAVE_DIRENT
#  if defined (HAVE_GCC)
#    define REQUIRED_LIBRARIES -ldirent -shlib
#  else /* !HAVE_GCC */
#    define REQUIRED_LIBRARIES -ldirent
#  endif /* !HAVE_GCC */
#  undef HAVE_GETWD
#  undef HAVE_DUP2
#  undef VOID_SIGHANDLER
#  undef HAVE_WAIT_H
#endif /* unixpc */

/* ************************ */
/*			    */
/*	    Encore	    */
/*			    */
/* ************************ */
#if defined (MULTIMAX)
#  if defined (n16)
#    define M_MACHINE "Multimax32k"
#  else
#    define M_MACHINE "Multimax"
#  endif /* n16 */
#  if defined (UMAXV)
#    define M_OS "USG"
#    define REQUIRED_LIBRARIES -lPW
#    define SYSDEP_CFLAGS -DUSGr3
#    define HAVE_DIRENT
#    define HAVE_VFPRINTF
#    define USE_TERMCAP_EMULATION
#    define VOID_SIGHANDLER
#  else
#    if defined (CMU)
#      define M_OS "Mach"
#    else
#      define M_OS "Bsd"
#    endif /* CMU */
#    define HAVE_SYS_SIGLIST
#    define HAVE_STRERROR
#    define HAVE_SETLINEBUF
#  endif /* UMAXV */
#  define HAVE_GETGROUPS
#endif  /* MULTIMAX */

/* ******************************************** */
/*						*/
/*   Encore Series 91 (88K BCS w Job Control)	*/
/*						*/
/* ******************************************** */
#if defined (__m88k) && defined (__UMAXV__)
#  define M_MACHINE "Gemini"
#  define M_OS "USG"
#  define REQUIRED_LIBRARIES -lPW
#  define USE_TERMCAP_EMULATION
#  define HAVE_DIRENT
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define SYSDEP_CFLAGS -q ext=pcc -D_POSIX_JOB_CONTROL -D_POSIX_VERSION \
			-Dmalloc=_malloc -Dfree=_free -Drealloc=_realloc
#endif  /* m88k && __UMAXV__ */

/* ******************************************** */
/*						*/
/*    System V Release 4 on the ICL DRS6000     */
/*						*/
/* ******************************************** */
#if defined (drs6000)
#  define M_MACHINE "drs6000"
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -Xa -DUSGr4
#  define SEARCH_LIB_NEEDS_SPACE
#  define HAVE_DIRENT
#  define HAVE_SYS_SIGLIST
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define USE_GNU_TERMCAP
#  if !defined (__GNUC__)
#    undef HAVE_ALLOCA
#  endif
#  undef HAVE_ALLOCA_H
#  undef USE_GNU_MALLOC
#endif /* drs6000 */

/* ******************************************** */
/*						*/
/*   System V Release 4 on the Sparc (generic)  */
/*						*/
/* ******************************************** */
#if defined (sparc) && defined (__svr4__) && !defined (M_MACHINE)
#  define M_MACHINE "sparc"
#  define M_OS "SVR4"
#  define SYSDEP_CFLAGS -DUSG -DUSGr4 -DHAVE_UID_T
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define USE_GNU_TERMCAP
#  if !defined (__GNUC__)
#    undef HAVE_ALLOCA
#  endif
#  undef HAVE_BCOPY
#  undef HAVE_GETWD
#  undef USE_GNU_MALLOC
#endif /* sparc && __svr4__ */

/* ******************************************** */
/*						*/
/*  		Commodore Amiga			*/
/*						*/
/* ******************************************** */
#if defined (amiga) && defined (__NetBSD__)
#  define M_MACHINE "amiga"
#  define M_OS "NetBSD"
#  define SYSDEP_CFLAGS -DOPENDIR_NOT_ROBUST -DINT_GROUPS_ARRAY \
			-DRLIMTYPE=quad_t
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  define HAVE_DIRENT
#  define HAVE_STRCASECMP
#endif /* amiga && __NetBSD__ */

#if defined (amiga) && !defined (M_MACHINE)
#  define M_MACHINE "amiga"
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -DUSGr4
#  if !defined (HAVE_GCC)
#    define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#    define REQUIRED_LIBRARIES -lc -lucb
#  endif /* !HAVE_GCC */
#  define HAVE_DIRENT
#  define HAVE_SYS_SIGLIST
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  undef HAVE_GETWD
#  undef USE_GNU_MALLOC
#endif /* System V Release 4 on amiga */

/* ************************ */
/*			    */
/*	    clipper	    */
/*			    */
/* ************************ */
/* This is for the Orion 1/05 (A BSD 4.2 box based on a Clipper processor) */
#if defined (clipper) && !defined (M_MACHINE)
#  define M_MACHINE "clipper"
#  define M_OS "Bsd"
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif  /* clipper */

/* ******************************** */
/*				    */
/*    Integrated Solutions 68020?   */
/*				    */
/* ******************************** */
#if defined (is68k)
#  define M_MACHINE "is68k"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define USE_VFPRINTF_EMULATION
#  undef HAVE_ALLOCA
#endif /* is68k */

/* ******************************** */
/*				    */
/*	   Omron Luna/Mach 2.5	    */
/*				    */
/* ******************************** */
#if defined (luna88k)
#  define M_MACHINE "Luna88k"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define USE_GNU_MALLOC
#  define HAVE_SETLINEBUF
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS
#  define HAVE_VFPRINTF
#endif /* luna88k */

/* ************************ */
/*			    */
/*   BBN Butterfly GP1000   */
/*   Mach 1000 v2.5	    */
/*			    */
/* ************************ */
#if defined (butterfly) && defined (BFLY1)
#define M_MACHINE "BBN Butterfly"
#define M_OS "Mach 1000"
#define HAVE_SETLINEBUF
#define HAVE_SYS_SIGLIST
#define HAVE_GETGROUPS
#define HAVE_VFPRINTF
#  ifdef BUILDING_MAKEFILE
MAKE = make
#  endif /* BUILDING_MAKEFILE */
#endif /* butterfly */

/* **************************************** */
/*					    */
/*	    Apollo/SR10.2/BSD4.3	    */
/*					    */
/* **************************************** */
/* This is for the Apollo DN3500 running SR10.2 BSD4.3 */
#if defined (apollo)
#  define M_MACHINE "apollo"
#  define M_OS "Bsd"
#  define SYSDEP_CFLAGS -D_POSIX_VERSION -D_INCLUDE_BSD_SOURCE \
			-D_INCLUDE_POSIX_SOURCE -DTERMIOS_MISSING \
			-DBSD_GETPGRP -Dpid_t=int
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* apollo */

/* ************************ */
/*			    */
/*	DG AViiON	    */
/*			    */
/* ************************ */
/* This is for the DG AViiON box (runs DG/UX with both AT&T & BSD features.) */
/* DG/UX comes standard with Gcc. */
#if defined (__DGUX__) || defined (DGUX)
#  define M_OS "DGUX"
#  if !defined (_M88KBCS_TARGET)
#    define M_MACHINE "AViiON"
#    define REQUIRED_LIBRARIES -ldgc
#  else /* _M88KBCS_TARGET */
#    define M_MACHINE "m88kBCS_AV"
#    undef MACHINE_CFLAGS
#    define MACHINE_CFLAGS -D_M88K_SOURCE
#    undef HAVE_RESOURCE
#  endif /* _M88KBCS_TARGET */
#  define SYSDEP_CFLAGS MACHINE_CFLAGS -D_DGUX_SOURCE -DPGRP_PIPE -DUSG
#  define HAVE_GCC
#  define HAVE_FIXED_INCLUDES
#  define HAVE_STRERROR
#  define HAVE_GETGROUPS
#  define VOID_SIGHANDLER
#  undef HAVE_GETWD
#  undef USE_GNU_MALLOC

/* If you want to build bash for M88K BCS compliance on a DG/UX 5.4
   or above system, do the following:
     - If you have built in this directory before run "make clean" to
       endure the Bash directory is clean.
     - Run "eval `sde-target m88kbcs`" to set the software development
       environment to build BCS objects.
     - Run "make".
     - Do "eval `sde-target default`" to reset the SDE. */
#endif /* __DGUX__ */

/* ************************ */
/*			    */
/*    Harris Night Hawk	    */
/*			    */
/* ************************ */
/* This is for the Harris Night Hawk family. */
#if defined (_CX_UX)
#  if defined (_M88K)
#    define M_MACHINE "nh4000"
#  else /* !_M88K */
#    if defined (hcx)
#      define M_MACHINE "nh2000"
#    else /* !hcx */
#      if defined (gcx)
#        define M_MACHINE "nh3000"
#      endif /* gcx */
#    endif /* !hcx */
#  endif /* !_M88K */
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -g -Xa -v -Dgetwd=bash_getwd -D_POSIX_SOURCE \
			-D_POSIX_JOB_CONTROL
#  define USE_TERMCAP_EMULATION
#  define HAVE_VFPRINTF
#  define HAVE_GETGROUPS
#  define VOID_SIGHANDLER
#  undef USE_GNU_MALLOC
#  undef HAVE_GETWD
#endif /* _CX_UX */

/* **************************************** */
/*					    */
/*	    	Tektronix	    	    */
/*					    */
/* **************************************** */
/* These are unproven as yet. */
#if defined (Tek4132)
#  define M_MACHINE "Tek4132"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* Tek4132 */

#if defined (Tek4300)
#  define M_MACHINE "Tek4300"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#endif /* Tek4300 */

/* ************************ */
/*                          */
/*     Tektronix XD88       */
/*                          */
/* ************************ */
#if defined (m88k) && defined (XD88)
#  define M_MACHINE "XD88"
#  define M_OS "USG"
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define HAVE_GETCWD
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  undef HAVE_GETWD
#  undef HAVE_ALLOCA
#endif /* m88k && XD88 */

/* ************************ */
/*                          */
/*     Motorola M88100      */
/*                          */
/* ************************ */
#if defined (m88k) && (defined (M88100) || defined (USGr4))
#  define M_MACHINE "M88100"
#  define M_OS "USG"
#  if defined (USGr4)
#    define SYSDEP_CFLAGS -DUSGr4 -D_POSIX_JOB_CONTROL
#  else
#    define SYSDEP_CFLAGS -D_POSIX_JOB_CONTROL -DWAITPID_BROKEN
#  endif
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_GETGROUPS
#  undef HAVE_GETWD
#  if !defined (USGr4)
#    undef HAVE_GETCWD
#  endif
#  undef HAVE_ALLOCA
#endif /* m88k && M88100 */

/* ************************ */
/*			    */
/*     Sequent Balances     */
/*       (Dynix 3.x)	    */
/* ************************ */
#if defined (sequent) && !defined (M_MACHINE)
#  define M_MACHINE "Sequent"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  define LD_HAS_NO_DASH_L
#  undef HAVE_DUP2
#endif /* sequent */

/* ****************************************** */
/*					      */
/*    NCR Tower 32, System V Release 3	      */
/*					      */
/* ****************************************** */
#if defined (tower32)
#  define M_MACHINE "tower32"
#  define M_OS "USG"
#  if !defined (HAVE_GCC)
#    define REQUIRED_LIBRARIES -lPW
     /* Disable stack/frame-pointer optimization, incompatible with alloca */
#    undef MACHINE_CFLAGS
#    define MACHINE_CFLAGS -W2,-aat
#  endif /* !HAVE_GCC */
#  define SYSDEP_CFLAGS -DUSGr3 MACHINE_CFLAGS
#  define HAVE_VFPRINTF
#  define USE_TERMCAP_EMULATION
#  define VOID_SIGHANDLER
#  undef HAVE_GETWD
#endif /* tower32 */

/* ************************ */
/*			    */
/*	Concurrent	    */
/*			    */
/* ************************ */
#if defined (concurrent)
#  define M_MACHINE "Concurrent"
#  if defined (USE_BSD_UNIVERSE)
     /* Use the BSD universe (`universe ucb') */
#    define M_OS "Bsd"
#    define HAVE_SYS_SIGLIST
#    define HAVE_SETLINEBUF
#    define HAVE_GETGROUPS
#  else /* !USE_BSD_UNIVERSE */
   /* Concurrent 7000 with RTU 6.1A using the ATT universe (`universe att') */
#    define M_OS "USG"
#    define SYSDEP_CFLAGS -DHAVE_BCOPY -DHAVE_UID_T -DHAVE_GETDTABLESIZE -Dmc7000
#    define REQUIRED_LIBRARIES -ljobs
#    define HAVE_VPRINTF
#    define HAVE_GETGROUPS
#    define HAVE_DUP2
#    define HAVE_DIRENT
#    define HAVE_SYS_SIGLIST
#  endif /* !USE_BSD_UNIVERSE */
#endif /* concurrent */

/* **************************************************************** */
/*                                                                  */
/*             Honeywell Bull X20 (lele@idea.sublink.org)	    */
/*                                                                  */
/* **************************************************************** */
#if defined (hbullx20)
#  define M_MACHINE "Honeywell"
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -DUSG
   /* Bull x20 needs -lposix for struct dirent. */
#  define REQUIRED_LIBRARIES -lPW -lposix
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define USE_TERMCAP_EMULATION
#  undef HAVE_GETWD
#endif  /* hbullx20 */

/* ************************ */
/*			    */
/*	    CRAY	    */
/*			    */
/* ************************ */
#if defined (cray)
#  include <sys/param.h>
#  if defined (Cray1) || defined (Cray2)
#    define M_MACHINE "Cray"
#    define CRAY_STACK
#  endif
#  if defined (CrayXMP) && !defined (M_MACHINE)
#    define M_MACHINE "CrayXMP"
#    define CRAY_STACK -DCRAY_STACKSEG_END=getb67
#  endif
#  if defined (CrayYMP) && !defined (M_MACHINE)
#    define M_MACHINE "CrayYMP"
#    if RELEASE_LEVEL >= 7000
#      define CRAY_STACK -DCRAY_STACKSEG_END=_getb67
#    else
#      define CRAY_STACK -DCRAY_STACKSEG_END=getb67
#    endif /* RELEASE_LEVEL < 7000 */
#  endif
#  if !defined (M_MACHINE)
#    define M_MACHINE "Cray"
#    define CRAY_STACK
#  endif
#  define M_OS "Unicos"
#  define SYSDEP_CFLAGS -DUSG -DPGRP_PIPE -DOPENDIR_NOT_ROBUST \
			-DHAVE_BCOPY CRAY_STACK
#  define HAVE_VFPRINTF
#  define HAVE_MULTIPLE_GROUPS
#  define VOID_SIGHANDLER
#  define USE_TERMCAP_EMULATION
#  undef HAVE_ALLOCA
#  undef HAVE_RESOURCE
#  undef USE_GNU_MALLOC
#endif /* cray */

/* ************************ */
/*			    */
/*	MagicStation	    */
/*			    */
/* ************************ */
#if defined (MagicStation)
#  define M_MACHINE "MagicStation"
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -DUSGr4
#  define HAVE_DIRENT
#  define HAVE_GETGROUPS
#  define HAVE_STRERROR
#  define VOID_SIGHANDLER
#  undef HAVE_ALLOCA
#  undef HAVE_GETWD
#endif /* MagicStation */

/* ************************ */
/*			    */
/*	   Plexus	    */
/*			    */
/* ************************ */
#if defined (plexus)
#  define M_MACHINE "plexus"
#  define M_OS "USG"
#  define REQUIRED_LIBRARIES -lndir
#  define USE_TERMCAP_EMULATION
#  undef HAVE_DUP2
#  undef HAVE_GETWD
#  define HAVE_VFPRINTF
#  undef HAVE_ALLOCA		/* -lPW doesn't work w/bash-cc? */
#endif /* plexus */

/* ************************ */
/*			    */   
/*     Siemens MX500        */
/*      (SINIX 5.2x)	    */
/* ************************ */
#ifdef sinix
#define M_MACHINE "Siemens MX500"
#define M_OS "SINIX V5.2x"
#define USG
#define HAVE_GETCWD
#define VOID_SIGHANDLER
#define HAVE_STRERROR
#define HAVE_GETGROUPS
#define HAVE_VFPRINTF
#define HAVE_POSIX_SIGNALS
#define HAVE_RESOURCE
#define USE_GNU_MALLOC
#define SYSDEP_CFLAGS -DUSGr3 -DUSG
#define REQUIRED_LIBRARIES syscalls.o
#undef HAVE_ALLOCA
#undef HAVE_GETWD
#endif /* sinix */

/* ************************ */
/*			    */
/*  Symmetric 375 (4.2 BSD) */
/*			    */
/* ************************ */
#if defined (scs) && !defined (M_MACHINE)
#  define M_MACHINE "Symmetric_375"
#  define M_OS "Bsd"
#  define HAVE_SYS_SIGLIST
#  define HAVE_GETGROUPS
#  define HAVE_SETLINEBUF
#  define USE_VFPRINTF_EMULATION
#  define USE_GNU_MALLOC
#  undef HAVE_STRCHR
#endif /* scs */

/* ************************ */
/*			    */
/*          Tandem          */
/*			    */
/* ************************ */
/* I don't know what this is supposed to be (Greg Lehey, LEMIS, 29 May 1995).
 * Tandem had two very different machines which ran SVR3: the LXN, based on
 * a Motorola 68000, and the S2, based on a MIPS R3000.  Both are obsolete
 * (well, S2s should now be running NonStop UX version B, which is a flavour
 * of SVR4).  I'm leaving this here and will test for NonStop UX B with the
 * preprocessor variable __nonstopux, which is set by the native compiler and
 * should also be set by any other compiler, such as gcc (caveat portor: you'$
 * need to fix gcc config to to get this). */
#if defined (tandem) && !defined (M_MACHINE)
#  define M_MACHINE "tandem"
#  define M_OS "USG"
#  define SYSDEP_CFLAGS -DUSGr3
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
   /* Alloca requires either Gcc or cc with libPW.a */
#  if !defined (HAVE_GCC)
#    define REQUIRED_LIBRARIES -lPW
#  endif /* !HAVE_GCC */
#  undef HAVE_GETWD
#endif /* Tandem running SVR3 */

/* This is for NonStop UX Bxx, which is SVR4, but there's a very good
 * chance it will trigger on NonStop UX Axx (SVR3).  If this happens,
 * fix it or upgrade your OS. */
#if defined (mips) && defined (__nonstopux)               /* Integrity, NonStop UX */
#  define M_MACHINE "Integrity"
#  define M_OS "NonStop_UX"
#  undef HAVE_GETWD
#  define HAVE_DIRENT
#  define HAVE_STRERROR
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define HAVE_SYS_SIGLIST
#  define HAVE_SETLINEBUF
#  define HAVE_GETGROUPS
#  undef HAVE_ALLOCA
#endif

/* ****************** */ 
/*                    */
/*  Fujitsu UXP/M     */
/*                    */
/* ****************** */ 

#if defined (__uxpm__)
#  define M_MACHINE "VP"
#  define M_OS "USG"
#  define VOID_SIGHANDLER
#  define HAVE_POSIX_SIGNALS
#  define HAVE_VFPRINTF
#  define HAVE_DIRENT
#  define HAVE_SETVBUF
#  define HAVE_STRCHR
#  define HAVE_STRERROR
#  define HAVE_GETGROUPS
#  define HAVE_DUP2
#  undef HAVE_ALLOCA
#  undef HAVE_GETWD
#  define HAVE_GETCWD
#  define HAVE_SYS_SIGLIST
#  define NO_SBRK_DECL
#  define SYSDEP_CFLAGS  -DHAVE_UID_T -Dsys_siglist=_sys_siglist  -DUSGr4 
#  define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#  define REQUIRED_LIBRARIES -lc -lucb
#endif

/* ****************** */ 
/*                    */
/*     Amdahl UTS     */
/*                    */
/* ****************** */

#if defined (UTS) && !defined (M_MACHINE)
#  define M_MACHINE "uts"
#  define M_OS "systemV"
#  define SYSDEP_CFLAGS -DUSG -DMEMMOVE_MISSING
#  define REQUIRED_LIBRARIES  
#  undef HAVE_SYS_SIGLIST
#  undef HAVE_GETWD
#  undef HAVE_ALLOCA 
#  define HAVE_VFPRINTF
#  define HAVE_DIRENT  
#  undef HAVE_RESOURCE   
#endif  /* UTS */

/* ************************ */
/*                          */
/* Stratus i860 running FTX (jonathan@sybase.com (Jonathan Stockley)) */
/*                          */
/* ************************ */
/* Use 'make CPP_DEFINES=-D_FTX' to build as /usr/ccs/lib/cpp doesn't set
   anything other than i860 which may be set on other i860 machines.
   The C compiler, cc, sets _FTX & i860 but, unfortunately it barfs at stuff
   in cpp-Makefile that has a # in it (it has it's own builtin cpp).
*/
#if defined(_FTX) && defined (i860) && !defined (M_MACHINE)
#define M_MACHINE "Stratus_i860"
#define M_OS "FTX"
#define VOID_SIGHANDLER
#define HAVE_POSIX_SIGNALS
#define HAVE_VFPRINTF
#define HAVE_SETVBUF
#define REVERSED_SETVBUF_ARGS
#define HAVE_STRCHR
#define HAVE_STRERROR
#define HAVE_GETGROUPS
#define HAVE_DUP2
#undef HAVE_ALLOCA
#undef HAVE_GETWD
#define HAVE_GETCWD
#define HAVE_SYS_SIGLIST
#define SYSDEP_CFLAGS  -DHAVE_UID_T -Dsys_siglist=_sys_siglist  -DUSGr4
#define EXTRA_LIB_SEARCH_PATH /usr/ucblib
#define REQUIRED_LIBRARIES -lc -lucb
#endif /* _FTX */

/* ************************ */
/*			    */
/*    PCS Cadmus System	    */
/*			    */
/* ************************ */
#if defined (cadmus) && !defined (M_MACHINE)
#  define M_MACHINE "cadmus"
#  define M_OS "BrainDeath"
#  define SYSDEP_CFLAGS -DUSG
#  define HAVE_DIRENT
#  define HAVE_VFPRINTF
#  define VOID_SIGHANDLER
#  define USE_TERMCAP_EMULATION
#  undef HAVE_GETWD
#  undef HAVE_ALLOCA
#  undef HAVE_WAIT_H
#endif /* cadmus */

/* **************************************************************** */
/*								    */
/*			Generic Entry   			    */
/*								    */
/* **************************************************************** */

/* Use this entry for your machine if it isn't represented here.  It
   is loosely based on a Vax running 4.3 BSD. */

#if !defined (M_MACHINE)
#  define UNKNOWN_MACHINE
#endif

#if defined (UNKNOWN_MACHINE)
#  define M_MACHINE "UNKNOWN_MACHINE"
#  define M_OS "UNKNOWN_OS"

/* Required libraries for building on this system. */
#  define REQUIRED_LIBRARIES

/* Define HAVE_SYS_SIGLIST if your system has sys_siglist[]. */
#  define HAVE_SYS_SIGLIST

/* Undef HAVE_GETWD if your C library does not provide a working version
   of getwd(). */
#  undef HAVE_GETWD

/* Undef HAVE_GETCWD if your C library does not provide a working version
   of getcwd(). */
/* #  undef HAVE_GETCWD */

/* Undef HAVE_ALLOCA if you are not using Gcc, and neither your library
   nor compiler has a version of alloca ().  In that case, we will use
   our version of alloca () in alloca.c */
#  undef HAVE_ALLOCA

/* Undef USE_GNU_MALLOC if there appear to be library conflicts, or if you
   especially desire to use your OS's version of malloc () and friends.  We
   reccommend against this because GNU Malloc has debugging code built in. */
#  undef USE_GNU_MALLOC

/* Define USE_GNU_TERMCAP if you want to use the GNU termcap library
   instead of your system termcap library. */
/* #  define USE_GNU_TERMCAP */

/* Define HAVE_SETLINEBUF if your machine has the setlinebuf ()
   stream library call.  Otherwise, setvbuf () will be used.  If
   neither of them work, you can edit in your own buffer control
   based upon your machines capabilities. */
#  define HAVE_SETLINEBUF

/* Define HAVE_VFPRINTF if your machines has the vfprintf () library
   call.  Otherwise, printf will be used.  */
#  define HAVE_VFPRINTF

/* Define USE_VFPRINTF_EMULATION if you want to use the BSD-compatible
   vfprintf() emulation in vprint.c. */
/* #  define USE_VFPRINTF_EMULATION */

/* Define HAVE_GETGROUPS if your OS allows you to be in multiple
   groups simultaneously by supporting the `getgroups' system call. */
#  define HAVE_GETGROUPS

/* Define SYSDEP_CFLAGS to be the flags to cc that make your compiler
   work.  For example, `-ma' on the RT makes alloca () work. */
/* This is a summary of the semi-machine-independent definitions that
   can go into SYSDEP_CFLAGS:

	AFS	-	The Andrew File System is being used
	AFS_CREATE_BUG - AFS has a bug with file creation if O_CREAT is
			 specified
	BSD_GETPGRP -	getpgrp(2) takes a pid argument, a la 4.3 BSD
	HAVE_BCOPY -	bcopy(3) exists and works as in BSD
	HAVE_GETDTABLESIZE - getdtablesize(2) exists and works correctly
	HAVE_GETHOSTNAME - gethostname(2) or gethostname(3) is present and
			   works as in BSD
	HAVE_GETPW_DECLS - USG machines with the getpw* functions defined in
			   <pwd.h> that cannot handle redefinitions in the
			   bash source
	HAVE_RESOURCE -	<sys/resource.h> and [gs]rlimit exist and work
	HAVE_SETDTABLESIZE - setdtablesize(2) exists and works correctly
	HAVE_SOCKETS - this system has BSD sockets added to a System V base
	HAVE_UID_T -	Definitions for uid_t and gid_t are in <sys/types.h>
	INT_GROUPS_ARRAY - the second argument to getgroups(3) is an array
			   of integers
	MEMMOVE_MISSING - the system does not have memmove(3)
	MKFIFO_MISSING - named pipes do not work or mkfifo(3) is missing
	NO_SBRK_DECL - don't declare sbrk as extern char *sbrk() in
		       lib/malloc/malloc.c
	OPENDIR_NOT_ROBUST - opendir(3) allows you to open non-directory files
	PGRP_PIPE -	Requires parent-child synchronization via pipes to
			make job control work right
	REVERSED_SETVBUF_ARGS - brain-damaged implementation of setvbuf that
				has args 2 and 3 reversed from the SVID and
				ANSI standard
	RLOGIN_PGRP_BUG - processes started by rlogind have a process group
			  of 0
		     	TERMIOS_LDISC - system has a c_line line discipline member in struct
			termios
	TERMIOS_MISSING - the termios(3) functions are not present or don't
			  work, even though _POSIX_VERSION is defined
	USG	-	The machine is running some sort of System V Unix
	USGr3	-	The machine is running SVR3.x
	USGr4	-	The machine is running SVR4
	USGr4_2 -	The machine is running SVR4.2
*/
#  define SYSDEP_CFLAGS

/* Define HAVE_STRERROR if your system supplies a definition for strerror ()
   in the C library, or a macro in a header file. */
#  define HAVE_STRERROR

/* Define HAVE_STRCASECMP if your system supplies definitions for the
   casel-insensitive string comparison functions strcasecmp and strncasemp
   in the C library or one of the system header files. */
/* #  define HAVE_STRCASECMP */

/* Define HAVE_DIRENT if you have the dirent library and a definition of
   struct dirent.  If not, the BSD directory reading library and struct
   direct are assumed. */
#  define HAVE_DIRENT

/* If your system does not supply /usr/lib/libtermcap.a, but includes
   the termcap routines as a part of the curses library, then define
   this.  This is the case on some System V machines. */
#  define USE_TERMCAP_EMULATION

/* Define VOID_SIGHANDLER if your system's signal () returns a pointer to
   a function returning void. */
/* #  define VOID_SIGHANDLER */

/* Define EXTRA_LIB_SEARCH_PATH if your required libraries (or standard)
   ones for that matter) are not normally in the ld search path.  For
   example, some machines require /usr/ucblib in the ld search path so
   that they can use -lucb. */
/* #  define EXTRA_LIB_SEARCH_PATH /usr/ucblib */

/* Define SEARCH_LIB_NEEDS_SPACE if your native ld requires a space after
   the -L argument, which gives the name of an alternate directory to search
   for libraries specified with -llib.  For example, the HPUX ld requires
   this:
   	-L lib/readline -lreadline
   instead of:
   	-Llib/readline -lreadline
 */
/* #  define SEARCH_LIB_NEEDS_SPACE */

/* Define LD_HAS_NO_DASH_L if your ld can't grok the -L flag in any way, or
   if it cannot grok the -l<lib> flag, or both. */
/* #  define LD_HAS_NO_DASH_L */

/* Define GCC_STANDARD if the standard `cc' is gcc and you don't want
   to use the compiler named `gcc' for some reason. */
/* #  define GCC_STANDARD */

#  if defined (LD_HAS_NO_DASH_L)
#   undef SEARCH_LIB_NEEDS_SPACE
#  endif /* LD_HAS_NO_DASH_L */

#endif  /* UNKNOWN_MACHINE */
