/*  Copyright (C) 1989, 1988, 1987 Barak Pearlmutter and Kevin Lang */

/*
 * This file describes the configuration of the machine that is being
 * compiled on.  It deals with quirks of the CPU, compiler, and OS.
 */



/* I'd love to be able to case things out here: */

/* Length of (long).  Must be <= length of (char *). */
#define WORDSIZE 32


#ifdef AMIGA
#define unix_files
#define MALLOC_STACK_BUFFER 
#define MALLOC_WP_TABLE
#define PROTOTYPES
#define BIG_ENDIAN
#define UNSIGNED_CHARS
#define SIGNALS
#endif



/* Try to figure out the endianity. */

#ifdef CMUCS

#ifdef BYTE_MSF
#define BIG_ENDIAN
#endif

#else /* not CMUCS */


#ifndef vax		/* cpp on a BSD or ULTRIX vax thinks big endian! */
#ifndef mips		/* as does Ultrix on a DEC 3100. */

#ifdef mac
#define BIG_ENDIAN
#endif

#ifdef mc68000
#define BIG_ENDIAN
#endif

#ifdef sun
#define BIG_ENDIAN
#endif

#ifdef convex
#define BIG_ENDIAN
#endif

/* Default */
#define BIG_ENDIAN

#endif /* not mips */
#endif /* not vax */

#endif /* CMUCS */

/* This is for gcc with -ansi */
#ifdef __unix__
#define unix
#endif




/* UNALIGNED should be defined if malloc() might return a pointer that isn't
   long aligned, ie, whose low two bits might not be 0. */

#ifdef mac
#define UNALIGNED
#endif






/* Expand this to include all systems with unsigned chars: */

#ifdef ibmrt
#define UNSIGNED_CHARS
#endif




/* unix_files is defined if things like ftell() and fseek() are
   around.  For things like fileno() and isatty() we need real unix. */

#ifdef Mac_LSC
#define unix_files
#define MALLOC_STACK_BUFFER 
#define MALLOC_WP_TABLE
#define PROTOTYPES
#define CANT_FLUSH_STD
#define mac
#endif

#ifdef __STDC__
#define PROTOTYPES
#endif



/* Machines with int's smaller than (char *)'s should not define this. */
#ifndef Mac_LSC
#define BIGINT
#endif




#ifdef unix
#define unix_files
#endif






/* The following can be ((x)>>2) on machines with arithmetic right
   shifts of signed numbers.  Regrettably, some machines (like the
   Convex) treat all numbers being shifted as unsigned.  If your
   compiler emits better code for (x>>2) than for (x/4) and does not
   have this weird problem, you should use the definition that is
   commented out. */

#define ASHR2(x) ((x)/4)
/* #define ASHR2(x) ((x)>>2) */




/* Some machines have a 64 bit variant of long called a "long long",
   which makes multiplication overflow detection easier. */

#ifdef convex
#define HAVE_LONG_LONG
#endif



/* Some operating systems support trapping user interrupts. */

#ifdef unix
#define SIGNALS
#endif



/* It is possible to use floating point hardware to detect overflows.
   This doesn't seem to be a speed win on any tested system, and is
   therefore commented out.  */

#ifndef HAVE_LONG_LONG
/* #define DOUBLES_FOR_OVERFLOW */
#endif




/* eof */
