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