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