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# ifndef __APPLE__
89#  define USER_SOUNDS_REGEX
90# endif
91# define USE_XPM		/* Use XPM format for images (required) */
92# define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.ppm) */
93# ifndef DEFAULT_WINDOW_SYS
94#  define DEFAULT_WINDOW_SYS "Qt"
95# endif
96#endif
97
98#ifdef GNOME_GRAPHICS
99# define USE_XPM		/* Use XPM format for images (required) */
100# define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.ppm) */
101# ifndef DEFAULT_WINDOW_SYS
102#  define DEFAULT_WINDOW_SYS "Gnome"
103# endif
104#endif
105
106#ifdef MSWIN_GRAPHICS
107# ifdef TTY_GRAPHICS
108# undef TTY_GRAPHICS
109# endif
110# ifndef DEFAULT_WINDOW_SYS
111#  define DEFAULT_WINDOW_SYS "mswin"
112# endif
113# define HACKDIR "\\nethack"
114#endif
115
116#ifndef DEFAULT_WINDOW_SYS
117# define DEFAULT_WINDOW_SYS "tty"
118#endif
119
120#ifdef X11_GRAPHICS
121/*
122 * There are two ways that X11 tiles may be defined.  (1) using a custom
123 * format loaded by NetHack code, or (2) using the XPM format loaded by
124 * the free XPM library.  The second option allows you to then use other
125 * programs to generate tiles files.  For example, the PBMPlus tools
126 * would allow:
127 *  xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm
128 */
129/* # define USE_XPM */		/* Disable if you do not have the XPM library */
130# ifdef USE_XPM
131#  define GRAPHIC_TOMBSTONE	/* Use graphical tombstone (rip.xpm) */
132# endif
133#endif
134
135
136/*
137 * Section 2:	Some global parameters and filenames.
138 *		Commenting out WIZARD, LOGFILE, NEWS or PANICLOG removes that
139 *		feature from the game; otherwise set the appropriate wizard
140 *		name.  LOGFILE, NEWS and PANICLOG refer to files in the
141 *		playground.
142 */
143
144#ifndef WIZARD		/* allow for compile-time or Makefile changes */
145# ifndef KR1ED
146#  define WIZARD  "wizard" /* the person allowed to use the -D option */
147# else
148#  define WIZARD
149#  define WIZARD_NAME "wizard"
150# endif
151#endif
152
153#define LOGFILE "logfile"	/* larger file for debugging purposes */
154#define NEWS "news"		/* the file containing the latest hack news */
155#define PANICLOG "paniclog"	/* log of panic and impossible events */
156
157/*
158 *	If COMPRESS is defined, it should contain the full path name of your
159 *	'compress' program.  Defining INTERNAL_COMP causes NetHack to do
160 *	simpler byte-stream compression internally.  Both COMPRESS and
161 *	INTERNAL_COMP create smaller bones/level/save files, but require
162 *	additional code and time.  Currently, only UNIX fully implements
163 *	COMPRESS; other ports should be able to uncompress save files a
164 *	la unixmain.c if so inclined.
165 *	If you define COMPRESS, you must also define COMPRESS_EXTENSION
166 *	as the extension your compressor appends to filenames after
167 *	compression.
168 */
169
170//#ifdef UNIX
171#if 0
172/* path and file name extension for compression program */
173#define COMPRESS "/usr/bin/compress"	/* Lempel-Ziv compression */
174#define COMPRESS_EXTENSION ".Z"		/* compress's extension */
175/* An example of one alternative you might want to use: */
176/* #define COMPRESS "/usr/local/bin/gzip" */	/* FSF gzip compression */
177/* #define COMPRESS_EXTENSION ".gz" */		/* normal gzip extension */
178#endif
179
180#ifndef COMPRESS
181# define INTERNAL_COMP	/* control use of NetHack's compression routines */
182#endif
183
184/*
185 *	Data librarian.  Defining DLB places most of the support files into
186 *	a tar-like file, thus making a neater installation.  See *conf.h
187 *	for detailed configuration.
188 */
189#define DLB 	/* not supported on all platforms */
190
191/*
192 *	Defining INSURANCE slows down level changes, but allows games that
193 *	died due to program or system crashes to be resumed from the point
194 *	of the last level change, after running a utility program.
195 */
196//#define INSURANCE	/* allow crashed game recovery */ // No insurance in RefOS.
197
198#ifndef MAC
199//# define CHDIR		/* delete if no chdir() available */
200#endif
201
202# ifndef HACKDIR
203#define HACKDIR "/fileserv/"
204# endif
205
206#ifdef CHDIR
207/*
208 * If you define HACKDIR, then this will be the default playground;
209 * otherwise it will be the current directory.
210 */
211# ifndef HACKDIR
212#  define HACKDIR "/usr/games/lib/nethackdir"
213# endif
214
215/*
216 * Some system administrators are stupid enough to make Hack suid root
217 * or suid daemon, where daemon has other powers besides that of reading or
218 * writing Hack files.	In such cases one should be careful with chdir's
219 * since the user might create files in a directory of his choice.
220 * Of course SECURE is meaningful only if HACKDIR is defined.
221 */
222/* #define SECURE */	/* do setuid(getuid()) after chdir() */
223
224/*
225 * If it is desirable to limit the number of people that can play Hack
226 * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
227 * #define MAX_NR_OF_PLAYERS 6
228 */
229#endif /* CHDIR */
230
231
232
233/*
234 * Section 3:	Definitions that may vary with system type.
235 *		For example, both schar and uchar should be short ints on
236 *		the AT&T 3B2/3B5/etc. family.
237 */
238
239/*
240 * Uncomment the following line if your compiler doesn't understand the
241 * 'void' type (and thus would give all sorts of compile errors without
242 * this definition).
243 */
244/* #define NOVOID */			/* define if no "void" data type. */
245
246/*
247 * Uncomment the following line if your compiler falsely claims to be
248 * a standard C compiler (i.e., defines __STDC__ without cause).
249 * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
250 */
251/* #define NOTSTDC */			/* define for lying compilers */
252
253#include "tradstdc.h"
254
255/*
256 * type schar: small signed integers (8 bits suffice) (eg. TOS)
257 *
258 *	typedef char	schar;
259 *
260 *	will do when you have signed characters; otherwise use
261 *
262 *	typedef short int schar;
263 */
264#ifdef AZTEC
265# define schar	char
266#else
267typedef signed char	schar;
268#endif
269
270/*
271 * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
272 *
273 *	typedef unsigned char	uchar;
274 *
275 *	will be satisfactory if you have an "unsigned char" type;
276 *	otherwise use
277 *
278 *	typedef unsigned short int uchar;
279 */
280#ifndef _AIX32		/* identical typedef in system file causes trouble */
281typedef unsigned char	uchar;
282#endif
283
284/*
285 * Various structures have the option of using bitfields to save space.
286 * If your C compiler handles bitfields well (e.g., it can initialize structs
287 * containing bitfields), you can define BITFIELDS.  Otherwise, the game will
288 * allocate a separate character for each bitfield.  (The bitfields used never
289 * have more than 7 bits, and most are only 1 bit.)
290 */
291#define BITFIELDS	/* Good bitfield handling */
292
293/* #define STRNCMPI */	/* compiler/library has the strncmpi function */
294
295/*
296 * There are various choices for the NetHack vision system.  There is a
297 * choice of two algorithms with the same behavior.  Defining VISION_TABLES
298 * creates huge (60K) tables at compile time, drastically increasing data
299 * size, but runs slightly faster than the alternate algorithm.  (MSDOS in
300 * particular cannot tolerate the increase in data size; other systems can
301 * flip a coin weighted to local conditions.)
302 *
303 * If VISION_TABLES is not defined, things will be faster if you can use
304 * MACRO_CPATH.  Some cpps, however, cannot deal with the size of the
305 * functions that have been macroized.
306 */
307
308/* #define VISION_TABLES */ /* use vision tables generated at compile time */
309#ifndef VISION_TABLES
310# ifndef NO_MACRO_CPATH
311#  define MACRO_CPATH	/* use clear_path macros instead of functions */
312# endif
313#endif
314
315/*
316 * Section 4:  THE FUN STUFF!!!
317 *
318 * Conditional compilation of special options are controlled here.
319 * If you define the following flags, you will add not only to the
320 * complexity of the game but also to the size of the load module.
321 */
322
323/* dungeon features */
324#define SINKS		/* Kitchen sinks - Janet Walz */
325/* dungeon levels */
326#define WALLIFIED_MAZE	/* Fancy mazes - Jean-Christophe Collet */
327#define REINCARNATION	/* Special Rogue-like levels */
328/* monsters & objects */
329#define KOPS		/* Keystone Kops by Scott R. Turner */
330#define SEDUCE		/* Succubi/incubi seduction, by KAA, suggested by IM */
331#define STEED		/* Riding steeds */
332#define TOURIST		/* Tourist players with cameras and Hawaiian shirts */
333/* difficulty */
334#define ELBERETH	/* Engraving the E-word repels monsters */
335/* I/O */
336#define REDO		/* support for redoing last command - DGK */
337#if !defined(MAC)
338# define CLIPPING	/* allow smaller screens -- ERS */
339#endif
340
341#ifdef REDO
342# define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */
343#endif
344
345#define EXP_ON_BOTL	/* Show experience on bottom line */
346/* #define SCORE_ON_BOTL */	/* added by Gary Erickson (erickson@ucivax) */
347
348/*
349 * Section 5:  EXPERIMENTAL STUFF
350 *
351 * Conditional compilation of new or experimental options are controlled here.
352 * Enable any of these at your own risk -- there are almost certainly
353 * bugs left here.
354 */
355
356/*#define GOLDOBJ */	/* Gold is kept on obj chains - Helge Hafting */
357/*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */
358
359/* End of Section 5 */
360
361#define NO_SIGNAL // No signals in RefOS.
362
363#include "global.h"	/* Define everything else according to choices above */
364
365#endif /* CONFIG_H */
366