OSDN Git Service

4ba4792519b6aff1bb5b235973cdeec57c2e3cb6
[nethackexpress/trunk.git] / include / config.h
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 /* 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 */
177 #endif
178
179 #ifndef COMPRESS
180 # define INTERNAL_COMP  /* control use of NetHack's compression routines */
181 #endif
182
183 /*
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.
187  */
188 /* #define DLB */       /* not supported on all platforms */
189
190 /*
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.
194  */
195 #define INSURANCE       /* allow crashed game recovery */
196
197 #ifndef MAC
198 # define CHDIR          /* delete if no chdir() available */
199 #endif
200
201 #ifdef CHDIR
202 /*
203  * If you define HACKDIR, then this will be the default playground;
204  * otherwise it will be the current directory.
205  */
206 # ifndef HACKDIR
207 #  define HACKDIR "/usr/games/lib/nethackdir"
208 # endif
209
210 /*
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.
216  */
217 /* #define SECURE */    /* do setuid(getuid()) after chdir() */
218
219 /*
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
223  */
224 #endif /* CHDIR */
225
226
227
228 /*
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.
232  */
233
234 /*
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
237  * this definition).
238  */
239 /* #define NOVOID */                    /* define if no "void" data type. */
240
241 /*
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.
245  */
246 /* #define NOTSTDC */                   /* define for lying compilers */
247
248 #include "tradstdc.h"
249
250 /*
251  * type schar: small signed integers (8 bits suffice) (eg. TOS)
252  *
253  *      typedef char    schar;
254  *
255  *      will do when you have signed characters; otherwise use
256  *
257  *      typedef short int schar;
258  */
259 #ifdef AZTEC
260 # define schar  char
261 #else
262 typedef signed char     schar;
263 #endif
264
265 /*
266  * type uchar: small unsigned integers (8 bits suffice - but 7 bits do not)
267  *
268  *      typedef unsigned char   uchar;
269  *
270  *      will be satisfactory if you have an "unsigned char" type;
271  *      otherwise use
272  *
273  *      typedef unsigned short int uchar;
274  */
275 #ifndef _AIX32          /* identical typedef in system file causes trouble */
276 typedef unsigned char   uchar;
277 #endif
278
279 /*
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.)
285  */
286 #define BITFIELDS       /* Good bitfield handling */
287
288 /* #define STRNCMPI */  /* compiler/library has the strncmpi function */
289
290 /*
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.)
297  *
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.
301  */
302
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 */
307 # endif
308 #endif
309
310 /*
311  * Section 4:  THE FUN STUFF!!!
312  *
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.
316  */
317
318 /* dungeon features */
319 #define SINKS           /* Kitchen sinks - Janet Walz */
320 /* dungeon levels */
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 */
328 /* difficulty */
329 /* #define ELBERETH     /* Engraving the E-word repels monsters */
330 #define NO_BONES */     /* Disables loading and saving bones levels*/
331 /* I/O */
332 #define REDO            /* support for redoing last command - DGK */
333 #if !defined(MAC)
334 # define CLIPPING       /* allow smaller screens -- ERS */
335 #endif
336
337 #ifdef REDO
338 # define DOAGAIN '\001' /* ^A, the "redo" key used in cmd.c and getline.c */
339 #endif
340
341 #define EXP_ON_BOTL     /* Show experience on bottom line */
342 /* #define SCORE_ON_BOTL */     /* added by Gary Erickson (erickson@ucivax) */
343
344 /*
345  * Section 5:  EXPERIMENTAL STUFF
346  *
347  * Conditional compilation of new or experimental options are controlled here.
348  * Enable any of these at your own risk -- there are almost certainly
349  * bugs left here.
350  */
351
352 /*#define GOLDOBJ */    /* Gold is kept on obj chains - Helge Hafting */
353 /*#define AUTOPICKUP_EXCEPTIONS */ /* exceptions to autopickup */
354
355 /* End of Section 5 */
356
357 #include "global.h"     /* Define everything else according to choices above */
358
359 #endif /* CONFIG_H */