1 /*	SCCS Id: @(#)config1.h	3.4	1999/12/05	*/
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed.  See license for details. */
4 
5 #ifndef CONFIG1_H
6 #define CONFIG1_H
7 
8 /*
9  * MS DOS - compilers
10  *
11  * Microsoft C auto-defines MSDOS,
12  * Borland C   auto-defines __MSDOS__,
13  * DJGPP       auto-defines MSDOS.
14  */
15 
16 /* #define MSDOS */	/* use if not defined by compiler or cases below */
17 
18 #ifdef __MSDOS__	/* for Borland C */
19 # ifndef MSDOS
20 # define MSDOS
21 # endif
22 #endif
23 
24 #ifdef __TURBOC__
25 # define __MSC		/* increase Borland C compatibility in libraries */
26 #endif
27 
28 #ifdef MSDOS
29 # undef UNIX
30 #endif
31 
32 /*
33  * Mac Stuff.
34  */
35 #ifdef macintosh	/*	Auto-defined symbol for MPW compilers (sc and mrc) */
36 # define MAC
37 #endif
38 
39 #ifdef THINK_C		/* Think C auto-defined symbol */
40 # define MAC
41 # define NEED_VARARGS
42 #endif
43 
44 #ifdef __MWERKS__	/* defined by Metrowerks' Codewarrior compiler */
45 # ifndef __BEOS__	/* BeOS */
46 #  define MAC
47 # endif
48 # define NEED_VARARGS
49 # define USE_STDARG
50 #endif
51 
52 #if defined(MAC) || defined(__BEOS__)
53 # define DLB
54 # undef UNIX
55 #endif
56 
57 #ifdef __BEOS__
58 # define NEED_VARARGS
59 #endif
60 
61 
62 /*
63  * Amiga setup.
64  */
65 #ifdef AZTEC_C	/* Manx auto-defines this */
66 # ifdef MCH_AMIGA	/* Manx auto-defines this for AMIGA */
67 #  ifndef AMIGA
68 #define AMIGA		/* define for Commodore-Amiga */
69 #  endif		/* (SAS/C auto-defines AMIGA) */
70 #define AZTEC_50	/* define for version 5.0 of manx */
71 # endif
72 #endif
73 #ifdef __SASC_60
74 # define NEARDATA __near /* put some data close */
75 #else
76 # ifdef _DCC
77 # define NEARDATA __near /* put some data close */
78 # else
79 # define NEARDATA
80 # endif
81 #endif
82 #ifdef AMIGA
83 # define NEED_VARARGS
84 # undef UNIX
85 # define DLB
86 # define HACKDIR "NetHack:"
87 # define NO_MACRO_CPATH
88 #endif
89 
90 /*
91  * Atari auto-detection
92  */
93 
94 #ifdef atarist
95 # undef UNIX
96 # ifndef TOS
97 # define TOS
98 # endif
99 #else
100 # ifdef __MINT__
101 #  undef UNIX
102 #  ifndef TOS
103 #  define TOS
104 #  endif
105 # endif
106 #endif
107 
108 /*
109  * Windows NT Autodetection
110  */
111 #ifdef _WIN32_WCE
112 #define WIN_CE
113 # ifndef WIN32
114 # define WIN32
115 # endif
116 #endif
117 
118 #ifdef WIN32
119 # undef UNIX
120 # undef MSDOS
121 # define NHSTDC
122 # define USE_STDARG
123 # define NEED_VARARGS
124 
125 #ifndef WIN_CE
126 # define STRNCMPI
127 # define STRCMPI
128 #endif
129 
130 #endif
131 
132 
133 #if defined(__linux__) && defined(__GNUC__) && !defined(_GNU_SOURCE)
134 /* ensure _GNU_SOURCE is defined before including any system headers */
135 # define _GNU_SOURCE
136 #endif
137 
138 #ifdef VMS	/* really old compilers need special handling, detected here */
139 # undef UNIX
140 # ifdef __DECC
141 #  ifndef __DECC_VER	/* buggy early versions want widened prototypes */
142 #   define NOTSTDC	/* except when typedefs are involved		*/
143 #   define USE_VARARGS
144 #  else
145 #   define NHSTDC
146 #   define USE_STDARG
147 #   define POSIX_TYPES
148 #   define _DECC_V4_SOURCE	/* avoid some incompatible V5.x changes */
149 #  endif
150 #  undef __HIDE_FORBIDDEN_NAMES /* need non-ANSI library support functions */
151 # else
152 #  ifdef VAXC	/* must use CC/DEFINE=ANCIENT_VAXC for vaxc v2.2 or older */
153 #   ifdef ANCIENT_VAXC	/* vaxc v2.2 and earlier [lots of warnings to come] */
154 #    define KR1ED	/* simulate defined() */
155 #    define USE_VARARGS
156 #   else		/* vaxc v2.3,2.4,or 3.x, or decc in vaxc mode */
157 #     if defined(USE_PROTOTYPES) /* this breaks 2.2 (*forces* use of ANCIENT)*/
158 #      define __STDC__ 0 /* vaxc is not yet ANSI compliant, but close enough */
159 #      define signed	/* well, almost close enough */
160 #include <stddef.h>
161 #      define UNWIDENED_PROTOTYPES
162 #     endif
163 #     define USE_STDARG
164 #   endif
165 #  endif /*VAXC*/
166 # endif /*__DECC*/
167 # ifdef VERYOLD_VMS	/* v4.5 or earlier; no longer available for testing */
168 #  define USE_OLDARGS	/* <varargs.h> is there, vprintf & vsprintf aren't */
169 #  ifdef USE_VARARGS
170 #   undef USE_VARARGS
171 #  endif
172 #  ifdef USE_STDARG
173 #   undef USE_STDARG
174 #  endif
175 # endif
176 #endif /*VMS*/
177 
178 #ifdef vax
179 /* just in case someone thinks a DECstation is a vax. It's not, it's a mips */
180 # ifdef ULTRIX_PROTO
181 #  undef ULTRIX_PROTO
182 # endif
183 # ifdef ULTRIX_CC20
184 #  undef ULTRIX_CC20
185 # endif
186 #endif
187 
188 #ifdef KR1ED		/* For compilers which cannot handle defined() */
189 #define defined(x) (-x-1 != -1)
190 /* Because:
191  * #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1
192  * #define FOO 1 or on command-line -DFOO
193  *	=> defined(1) => (-1 != - 1 - 1) => 1
194  * if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1
195  * for -DFOO, oh well.
196  *	=> defined(0) => (-1 != - 0 - 1) => 0
197  *
198  * But:
199  * defined("") => (-1 != - "" - 1)
200  *   [which is an unavoidable catastrophe.]
201  */
202 #endif
203 
204 #endif	/* CONFIG1_H */
205