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. */
5 #ifndef CONFIG_H /* make sure the compiler does not see the typedefs twice */
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).
17 #define UNIX /* delete if no fork(), exec() available */
19 /* #define MSDOS */ /* in case it's not auto-detected */
21 /* #define OS2 */ /* define for OS/2 */
23 /* #define TOS */ /* define for Atari ST/TT */
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
38 #include "config1.h" /* should auto-detect MSDOS, MAC, AMIGA, and WIN32 */
41 /* Windowing systems...
42 * Define all of those you want supported in your binary.
43 * Some combinations make no sense. See the installation document.
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 */
52 * Define the default window system. This should be one that is compiled
53 * into your system (see defines above). Known window systems are:
55 * tty, X11, mac, amii, BeOS, Qt, Gem, Gnome
58 /* MAC also means MAC windows */
61 # define DEFAULT_WINDOW_SYS "mac"
65 /* Amiga supports AMII_GRAPHICS and/or TTY_GRAPHICS */
67 # define AMII_GRAPHICS /* (optional) */
68 # define DEFAULT_WINDOW_SYS "amii" /* "amii", "amitile" or "tty" */
71 /* Atari supports GEM_GRAPHICS and/or TTY_GRAPHICS */
73 # define GEM_GRAPHICS /* Atari GEM interface (optional) */
74 # define DEFAULT_WINDOW_SYS "Gem" /* "Gem" or "tty" */
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"
86 # define DEFAULT_WC_TILED_MAP /* Default to tiles if users doesn't say wc_ascii_map */
87 # define USER_SOUNDS /* Use sounds */
89 # define USER_SOUNDS_REGEX
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"
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"
106 #ifdef MSWIN_GRAPHICS
110 # ifndef DEFAULT_WINDOW_SYS
111 # define DEFAULT_WINDOW_SYS "mswin"
113 # define HACKDIR "\\nethack"
116 #ifndef DEFAULT_WINDOW_SYS
117 # define DEFAULT_WINDOW_SYS "tty"
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
127 * xpmtoppm <x11tiles.xpm | pnmscale 1.25 | ppmquant 90 >x11tiles_big.xpm
129 /* # define USE_XPM */ /* Disable if you do not have the XPM library */
131 # define GRAPHIC_TOMBSTONE /* Use graphical tombstone (rip.xpm) */
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
144 #ifndef WIZARD /* allow for compile-time or Makefile changes */
146 # define WIZARD "wizard" /* the person allowed to use the -D option */
149 # define WIZARD_NAME "wizard"
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 */
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
171 /* path and file name extension for compression program */
172 #define COMPRESS "/usr/bin/compress" /* Lempel-Ziv compression */
173 #define COMPRESS_EXTENSION ".Z" /* compress's extension */
174 /* An example of one alternative you might want to use: */
175 /* #define COMPRESS "/usr/local/bin/gzip" */ /* FSF gzip compression */
176 /* #define COMPRESS_EXTENSION ".gz" */ /* normal gzip extension */
180 # define INTERNAL_COMP /* control use of NetHack's compression routines */
184 * Data librarian. Defining DLB places most of the support files into
185 * a tar-like file, thus making a neater installation. See *conf.h
186 * for detailed configuration.
188 /* #define DLB */ /* not supported on all platforms */
191 * Defining INSURANCE slows down level changes, but allows games that
192 * died due to program or system crashes to be resumed from the point
193 * of the last level change, after running a utility program.
195 #define INSURANCE /* allow crashed game recovery */
198 # define CHDIR /* delete if no chdir() available */
203 * If you define HACKDIR, then this will be the default playground;
204 * otherwise it will be the current directory.
207 # define HACKDIR "/usr/games/lib/nethackdir"
211 * Some system administrators are stupid enough to make Hack suid root
212 * or suid daemon, where daemon has other powers besides that of reading or
213 * writing Hack files. In such cases one should be careful with chdir's
214 * since the user might create files in a directory of his choice.
215 * Of course SECURE is meaningful only if HACKDIR is defined.
217 /* #define SECURE */ /* do setuid(getuid()) after chdir() */
220 * If it is desirable to limit the number of people that can play Hack
221 * simultaneously, define HACKDIR, SECURE and MAX_NR_OF_PLAYERS.
222 * #define MAX_NR_OF_PLAYERS 6
229 * Section 3: Definitions that may vary with system type.
230 * For example, both schar and uchar should be short ints on
231 * the AT&T 3B2/3B5/etc. family.
235 * Uncomment the following line if your compiler doesn't understand the
236 * 'void' type (and thus would give all sorts of compile errors without
239 /* #define NOVOID */ /* define if no "void" data type. */
242 * Uncomment the following line if your compiler falsely claims to be
243 * a standard C compiler (i.e., defines __STDC__ without cause).
244 * Examples are Apollo's cc (in some versions) and possibly SCO UNIX's rcc.
246 /* #define NOTSTDC */ /* define for lying compilers */
248 #include "tradstdc.h"
251 * type schar: small signed integers (8 bits suffice) (eg. TOS)
253 * typedef char schar;
255 * will do when you have signed characters; otherwise use
257 * typedef short int schar;
262 typedef signed char schar;
266 * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
268 * typedef unsigned char uchar;
270 * will be satisfactory if you have an "unsigned char" type;
273 * typedef unsigned short int uchar;
275 #ifndef _AIX32 /* identical typedef in system file causes trouble */
276 typedef unsigned char uchar;
280 * Various structures have the option of using bitfields to save space.
281 * If your C compiler handles bitfields well (e.g., it can initialize structs
282 * containing bitfields), you can define BITFIELDS. Otherwise, the game will
283 * allocate a separate character for each bitfield. (The bitfields used never
284 * have more than 7 bits, and most are only 1 bit.)
286 #define BITFIELDS /* Good bitfield handling */
288 /* #define STRNCMPI */ /* compiler/library has the strncmpi function */
291 * There are various choices for the NetHack vision system. There is a
292 * choice of two algorithms with the same behavior. Defining VISION_TABLES
293 * creates huge (60K) tables at compile time, drastically increasing data
294 * size, but runs slightly faster than the alternate algorithm. (MSDOS in
295 * particular cannot tolerate the increase in data size; other systems can
296 * flip a coin weighted to local conditions.)
298 * If VISION_TABLES is not defined, things will be faster if you can use
299 * MACRO_CPATH. Some cpps, however, cannot deal with the size of the
300 * functions that have been macroized.
303 /* #define VISION_TABLES */ /* use vision tables generated at compile time */
304 #ifndef VISION_TABLES
305 # ifndef NO_MACRO_CPATH
306 # define MACRO_CPATH /* use clear_path macros instead of functions */
311 * Section 4: THE FUN STUFF!!!
313 * Conditional compilation of special options are controlled here.
314 * If you define the following flags, you will add not only to the
315 * complexity of the game but also to the size of the load module.
318 /* dungeon features */
319 #define SINKS /* Kitchen sinks - Janet Walz */
321 #define WALLIFIED_MAZE /* Fancy mazes - Jean-Christophe Collet */
322 #define REINCARNATION /* Special Rogue-like levels */
323 /* monsters & objects */
324 #define KOPS /* Keystone Kops by Scott R. Turner */
325 #define SEDUCE /* Succubi/incubi seduction, by KAA, suggested by IM */
326 #define STEED /* Riding steeds */
327 #define TOURIST /* Tourist players with cameras and Hawaiian shirts */
329 #define ELBERETH /* Engraving the E-word repels monsters */
331 #define REDO /* support for redoing last command - DGK */
333 # define CLIPPING /* allow smaller screens -- ERS */
337 # define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */
340 #define EXP_ON_BOTL /* Show experience on bottom line */
341 /* #define SCORE_ON_BOTL */ /* added by Gary Erickson (erickson@ucivax) */
344 * Section 5: EXPERIMENTAL STUFF
346 * Conditional compilation of new or experimental options are controlled here.
347 * Enable any of these at your own risk -- there are almost certainly
351 /*#define GOLDOBJ */ /* Gold is kept on obj chains - Helge Hafting */
352 /*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */
354 /* End of Section 5 */
356 #include "global.h" /* Define everything else according to choices above */
358 #endif /* CONFIG_H */