1 /*	SCCS Id: @(#)config.h	3.4	2003/12/06	*/
2 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
3 /* NetHack may be freely redistributed.  See license for details. */
4 
5 #ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */
6 #define CONFIG_H
7 
8 
9 /*
10  * Section 1:	Operating and window systems selection.
11  *		Select the version of the OS you are using.
12  *		For "UNIX" select BSD, ULTRIX, SYSV, or HPUX in unixconf.h.
13  *		A "VMS" option is not needed since the VMS C-compilers
14  *		provide it (no need to change sec#1, vmsconf.h handles it).
15  */
16 
17 #define UNIX		/* delete if no fork(), exec() available */
18 
19 /* #define MSDOS */	/* in case it's not auto-detected */
20 
21 /* #define OS2 */	/* define for OS/2 */
22 
23 /* #define TOS */	/* define for Atari ST/TT */
24 
25 /* #define STUPID */	/* avoid some complicated expressions if
26 			   your C compiler chokes on them */
27 /* #define MINIMAL_TERM */
28 			/* if a terminal handles highlighting or tabs poorly,
29 			   try this define, used in pager.c and termcap.c */
30 /* #define ULTRIX_CC20 */
31 			/* define only if using cc v2.0 on a DECstation */
32 /* #define ULTRIX_PROTO */
33 			/* define for Ultrix 4.0 (or higher) on a DECstation;
34 			 * if you get compiler errors, don't define this. */
35 			/* Hint: if you're not developing code, don't define
36 			   ULTRIX_PROTO. */
37 
38 #include "config1.h"	/* should auto-detect MSDOS, MAC, AMIGA, and WIN32 */
39 
40 
41 /* Windowing systems...
42  * Define all of those you want supported in your binary.
43  * Some combinations make no sense.  See the installation document.
44  */
45 #define TTY_GRAPHICS	/* good old tty based graphics */
46 /* #define X11_GRAPHICS */	/* X11 interface */
47 /* #define QT_GRAPHICS */	/* Qt interface */
48 /* #define GNOME_GRAPHICS */	/* Gnome interface */
49 /* #define MSWIN_GRAPHICS */	/* Windows NT, CE, Graphics */
50 
51 /*
52  * Define the default window system.  This should be one that is compiled
53  * into your system (see defines above).  Known window systems are:
54  *
55  *	tty, X11, mac, amii, BeOS, Qt, Gem, Gnome
56  */
57 
58 /* MAC also means MAC windows */
59 #ifdef MAC
60 # ifndef	AUX
61 #  define DEFAULT_WINDOW_SYS "mac"
62 # endif
63 #endif
64 
65 /* Amiga supports AMII_GRAPHICS and/or TTY_GRAPHICS */
66 #ifdef AMIGA
67 # define AMII_GRAPHICS			/* (optional) */
68 # define DEFAULT_WINDOW_SYS "amii"	/* "amii", "amitile" or "tty" */
69 #endif
70 
71 /* Atari supports GEM_GRAPHICS and/or TTY_GRAPHICS */
72 #ifdef TOS
73 # define GEM_GRAPHICS			/* Atari GEM interface (optional) */
74 # define DEFAULT_WINDOW_SYS "Gem"	/* "Gem" or "tty" */
75 #endif
76 
77 #ifdef __BEOS__
78 #define BEOS_GRAPHICS /* (optional) */
79 #define DEFAULT_WINDOW_SYS "BeOS"  /* "tty" */
80 #ifndef HACKDIR	/* override the default hackdir below */
81 # define HACKDIR "/boot/apps/NetHack"
82 #endif
83 #endif
84 
85 #ifdef QT_GRAPHICS
86 # define DEFAULT_WC_TILED_MAP   /* Default to tiles if users doesn't say wc_ascii_map */
87 # define USER_SOUNDS		/* Use sounds */
88 # define USE_XPM		/* Use XPM format for images (required) */
89 # define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.ppm) */
90 # ifndef DEFAULT_WINDOW_SYS
91 #  define DEFAULT_WINDOW_SYS "Qt"
92 # endif
93 #endif
94 
95 #ifdef GNOME_GRAPHICS
96 # define USE_XPM		/* Use XPM format for images (required) */
97 # define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.ppm) */
98 # ifndef DEFAULT_WINDOW_SYS
99 #  define DEFAULT_WINDOW_SYS "Gnome"
100 # endif
101 #endif
102 
103 #ifdef MSWIN_GRAPHICS
104 # ifdef TTY_GRAPHICS
105 # undef TTY_GRAPHICS
106 # endif
107 # ifndef DEFAULT_WINDOW_SYS
108 #  define DEFAULT_WINDOW_SYS "mswin"
109 # endif
110 # define HACKDIR "\\nethack"
111 #endif
112 
113 #ifndef DEFAULT_WINDOW_SYS
114 # define DEFAULT_WINDOW_SYS "tty"
115 #endif
116 
117 #ifdef X11_GRAPHICS
118 /*
119  * There are two ways that X11 tiles may be defined.  (1) using a custom
120  * format loaded by NetHack code, or (2) using the XPM format loaded by
121  * the free XPM library.  The second option allows you to then use other
122  * programs to generate tiles files.  For example, the PBMPlus tools
123  * would allow:
124  *  xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm
125  */
126 # define USE_XPM		/* Disable if you do not have the XPM library */
127 # ifdef USE_XPM
128 #  define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.xpm) */
129 # endif
130 #endif
131 
132 
133 /*
134  * Section 2:	Some global parameters and filenames.
135  *		Commenting out WIZARD, LOGFILE, NEWS or PANICLOG removes that
136  *		feature from the game; otherwise set the appropriate wizard
137  *		name.  LOGFILE, NEWS and PANICLOG refer to files in the
138  *		playground.
139  */
140 
141 #ifndef WIZARD		/* allow for compile-time or Makefile changes */
142 # ifndef KR1ED
143 #  define WIZARD  "wizard" /* the person allowed to use the -D option */
144 # else
145 #  define WIZARD
146 #  define WIZARD_NAME "wizard"
147 # endif
148 #endif
149 
150 #define LOGFILE "logfile"	/* larger file for debugging purposes */
151 #define NEWS "news"		/* the file containing the latest hack news */
152 #define PANICLOG "paniclog"	/* log of panic and impossible events */
153 
154 /*
155  *	If COMPRESS is defined, it should contain the full path name of your
156  *	'compress' program.  Defining INTERNAL_COMP causes NetHack to do
157  *	simpler byte-stream compression internally.  Both COMPRESS and
158  *	INTERNAL_COMP create smaller bones/level/save files, but require
159  *	additional code and time.  Currently, only UNIX fully implements
160  *	COMPRESS; other ports should be able to uncompress save files a
161  *	la unixmain.c if so inclined.
162  *	If you define COMPRESS, you must also define COMPRESS_EXTENSION
163  *	as the extension your compressor appends to filenames after
164  *	compression.
165  */
166 
167 #ifdef UNIX
168 /* path and file name extension for compression program */
169 /* #define COMPRESS "/usr/bin/compress"*/	/* Lempel-Ziv compression */
170 /* #define COMPRESS_EXTENSION ".Z"	*/	/* compress's extension */
171 /* An example of one alternative you might want to use: */
172 #define COMPRESS "/usr/bin/gzip"	 	/* FSF gzip compression */
173 #define COMPRESS_EXTENSION ".gz" 		/* normal gzip extension */
174 #endif
175 
176 #ifndef COMPRESS
177 # define INTERNAL_COMP	/* control use of NetHack's compression routines */
178 #endif
179 
180 /*
181  *	Data librarian.  Defining DLB places most of the support files into
182  *	a tar-like file, thus making a neater installation.  See *conf.h
183  *	for detailed configuration.
184  */
185 /* #define DLB */	/* not supported on all platforms */
186 
187 /*
188  *	Defining INSURANCE slows down level changes, but allows games that
189  *	died due to program or system crashes to be resumed from the point
190  *	of the last level change, after running a utility program.
191  */
192 #define INSURANCE	/* allow crashed game recovery */
193 
194 #ifndef MAC
195 # define CHDIR		/* delete if no chdir() available */
196 #endif
197 
198 #ifdef CHDIR
199 /*
200  * If you define HACKDIR, then this will be the default playground;
201  * otherwise it will be the current directory.
202  */
203 # ifndef HACKDIR
204 #  define HACKDIR "/usr/local/share/nethack34"
205 # endif
206 
207 /*
208  * Some system administrators are stupid enough to make Hack suid root
209  * or suid daemon, where daemon has other powers besides that of reading or
210  * writing Hack files.	In such cases one should be careful with chdir's
211  * since the user might create files in a directory of his choice.
212  * Of course SECURE is meaningful only if HACKDIR is defined.
213  */
214 /* #define SECURE */	/* do setuid(getuid()) after chdir() */
215 
216 /*
217  * If it is desirable to limit the number of people that can play Hack
218  * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
219  * #define MAX_NR_OF_PLAYERS 6
220  */
221 #endif /* CHDIR */
222 
223 
224 
225 /*
226  * Section 3:	Definitions that may vary with system type.
227  *		For example, both schar and uchar should be short ints on
228  *		the AT&T 3B2/3B5/etc. family.
229  */
230 
231 /*
232  * Uncomment the following line if your compiler doesn't understand the
233  * 'void' type (and thus would give all sorts of compile errors without
234  * this definition).
235  */
236 /* #define NOVOID */			/* define if no "void" data type. */
237 
238 /*
239  * Uncomment the following line if your compiler falsely claims to be
240  * a standard C compiler (i.e., defines __STDC__ without cause).
241  * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
242  */
243 /* #define NOTSTDC */			/* define for lying compilers */
244 
245 #include "tradstdc.h"
246 
247 /*
248  * type schar: small signed integers (8 bits suffice) (eg. TOS)
249  *
250  *	typedef char	schar;
251  *
252  *	will do when you have signed characters; otherwise use
253  *
254  *	typedef short int schar;
255  */
256 #ifdef AZTEC
257 # define schar	char
258 #else
259 typedef signed char	schar;
260 #endif
261 
262 /*
263  * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
264  *
265  *	typedef unsigned char	uchar;
266  *
267  *	will be satisfactory if you have an "unsigned char" type;
268  *	otherwise use
269  *
270  *	typedef unsigned short int uchar;
271  */
272 #ifndef _AIX32		/* identical typedef in system file causes trouble */
273 typedef unsigned char	uchar;
274 #endif
275 
276 /*
277  * Various structures have the option of using bitfields to save space.
278  * If your C compiler handles bitfields well (e.g., it can initialize structs
279  * containing bitfields), you can define BITFIELDS.  Otherwise, the game will
280  * allocate a separate character for each bitfield.  (The bitfields used never
281  * have more than 7 bits, and most are only 1 bit.)
282  */
283 #define BITFIELDS	/* Good bitfield handling */
284 
285 /* #define STRNCMPI */	/* compiler/library has the strncmpi function */
286 
287 /*
288  * There are various choices for the NetHack vision system.  There is a
289  * choice of two algorithms with the same behavior.  Defining VISION_TABLES
290  * creates huge (60K) tables at compile time, drastically increasing data
291  * size, but runs slightly faster than the alternate algorithm.  (MSDOS in
292  * particular cannot tolerate the increase in data size; other systems can
293  * flip a coin weighted to local conditions.)
294  *
295  * If VISION_TABLES is not defined, things will be faster if you can use
296  * MACRO_CPATH.  Some cpps, however, cannot deal with the size of the
297  * functions that have been macroized.
298  */
299 
300 /* #define VISION_TABLES */ /* use vision tables generated at compile time */
301 #ifndef VISION_TABLES
302 # ifndef NO_MACRO_CPATH
303 #  define MACRO_CPATH	/* use clear_path macros instead of functions */
304 # endif
305 #endif
306 
307 /*
308  * Section 4:  THE FUN STUFF!!!
309  *
310  * Conditional compilation of special options are controlled here.
311  * If you define the following flags, you will add not only to the
312  * complexity of the game but also to the size of the load module.
313  */
314 
315 /* dungeon features */
316 #define SINKS		/* Kitchen sinks - Janet Walz */
317 /* dungeon levels */
318 #define WALLIFIED_MAZE	/* Fancy mazes - Jean-Christophe Collet */
319 #define REINCARNATION	/* Special Rogue-like levels */
320 /* monsters & objects */
321 #define KOPS		/* Keystone Kops by Scott R. Turner */
322 #define SEDUCE		/* Succubi/incubi seduction, by KAA, suggested by IM */
323 #define STEED		/* Riding steeds */
324 #define TOURIST		/* Tourist players with cameras and Hawaiian shirts */
325 /* difficulty */
326 #define ELBERETH	/* Engraving the E-word repels monsters */
327 /* I/O */
328 #define REDO		/* support for redoing last command - DGK */
329 #if !defined(MAC)
330 # define CLIPPING	/* allow smaller screens -- ERS */
331 #endif
332 
333 #ifdef REDO
334 # define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */
335 #endif
336 
337 #define EXP_ON_BOTL	/* Show experience on bottom line */
338 /* #define SCORE_ON_BOTL */	/* added by Gary Erickson (erickson@ucivax) */
339 
340 /*
341  * Section 5:  EXPERIMENTAL STUFF
342  *
343  * Conditional compilation of new or experimental options are controlled here.
344  * Enable any of these at your own risk -- there are almost certainly
345  * bugs left here.
346  */
347 
348 /*#define GOLDOBJ */	/* Gold is kept on obj chains - Helge Hafting */
349 /*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */
350 
351 /* End of Section 5 */
352 
353 #include "global.h"	/* Define everything else according to choices above */
354 
355 #endif /* CONFIG_H */
356