1 | /* SCCS Id: @(#)config1.h 3.3 1999/12/05 */ 2 | /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3 | /* NetHack may be freely redistributed. See license for details. */ 4 | 5 | #ifndef CONFIG1_H 6 | #define CONFIG1_H 7 | 8 | /* 9 | * MS DOS - compilers 10 | * 11 | * Microsoft C auto-defines MSDOS, 12 | * Borland C auto-defines __MSDOS__, 13 | * DJGPP auto-defines MSDOS. 14 | */ 15 | 16 | /* #define MSDOS */ /* use if not defined by compiler or cases below */ 17 | 18 | #ifdef __MSDOS__ /* for Borland C */ 19 | # ifndef MSDOS 20 | # define MSDOS 21 | # endif 22 | #endif 23 | 24 | #ifdef __TURBOC__ 25 | # define __MSC /* increase Borland C compatibility in libraries */ 26 | #endif 27 | 28 | #ifdef MSDOS 29 | # undef UNIX 30 | #endif 31 | 32 | /* 33 | * Mac Stuff. 34 | */ 35 | #ifdef applec /* MPW auto-defined symbol */ 36 | # define MAC 37 | #endif 38 | 39 | #ifdef THINK_C /* Think C auto-defined symbol */ 40 | # define MAC 41 | # define NEED_VARARGS 42 | #endif 43 | 44 | #ifdef __MWERKS__ /* defined by Metrowerks compiler */ 45 | # ifndef __BEOS__ /* BeOS */ 46 | # define MAC 47 | # endif 48 | # define NEED_VARARGS 49 | # define USE_STDARG 50 | #endif 51 | 52 | #if defined(MAC) || defined(__BEOS__) 53 | # define DLB 54 | # undef UNIX 55 | #endif 56 | 57 | #ifdef __BEOS__ 58 | # define NEED_VARARGS 59 | #endif 60 | 61 | 62 | /* 63 | * Amiga setup. 64 | */ 65 | #ifdef AZTEC_C /* Manx auto-defines this */ 66 | # ifdef MCH_AMIGA /* Manx auto-defines this for AMIGA */ 67 | # ifndef AMIGA 68 | #define AMIGA /* define for Commodore-Amiga */ 69 | # endif /* (SAS/C auto-defines AMIGA) */ 70 | #define AZTEC_50 /* define for version 5.0 of manx */ 71 | # endif 72 | #endif 73 | #ifdef __SASC_60 74 | # define NEARDATA __near /* put some data close */ 75 | #else 76 | # ifdef _DCC 77 | # define NEARDATA __near /* put some data close */ 78 | # else 79 | # define NEARDATA 80 | # endif 81 | #endif 82 | #ifdef AMIGA 83 | # define NEED_VARARGS 84 | # undef UNIX 85 | # define DLB 86 | # define HACKDIR "NetHack:" 87 | # define NO_MACRO_CPATH 88 | #endif 89 | 90 | /* 91 | * Atari auto-detection 92 | */ 93 | 94 | #ifdef atarist 95 | # undef UNIX 96 | # ifndef TOS 97 | # define TOS 98 | # endif 99 | #else 100 | # ifdef __MINT__ 101 | # undef UNIX 102 | # ifndef TOS 103 | # define TOS 104 | # endif 105 | # endif 106 | #endif 107 | 108 | /* 109 | * Windows NT Autodetection 110 | */ 111 | 112 | #ifdef WIN32 113 | # undef UNIX 114 | # undef MSDOS 115 | # define NHSTDC 116 | # define STRNCMPI 117 | # define USE_STDARG 118 | # define NEED_VARARGS 119 | #endif 120 | 121 | 122 | #ifdef VMS /* really old compilers need special handling, detected here */ 123 | # undef UNIX 124 | # ifdef __DECC 125 | # ifndef __DECC_VER /* buggy early versions want widened prototypes */ 126 | # define NOTSTDC /* except when typedefs are involved */ 127 | # define USE_VARARGS 128 | # else 129 | # define NHSTDC 130 | # define USE_STDARG 131 | # define POSIX_TYPES 132 | # define _DECC_V4_SOURCE /* avoid some incompatible V5.x changes */ 133 | # endif 134 | # undef __HIDE_FORBIDDEN_NAMES /* need non-ANSI library support functions */ 135 | # else 136 | # ifdef VAXC /* must use CC/DEFINE=ANCIENT_VAXC for vaxc v2.2 or older */ 137 | # ifdef ANCIENT_VAXC /* vaxc v2.2 and earlier [lots of warnings to come] */ 138 | # define KR1ED /* simulate defined() */ 139 | # define USE_VARARGS 140 | # else /* vaxc v2.3,2.4,or 3.x, or decc in vaxc mode */ 141 | # if defined(USE_PROTOTYPES) /* this breaks 2.2 (*forces* use of ANCIENT)*/ 142 | # define __STDC__ 0 /* vaxc is not yet ANSI compliant, but close enough */ 143 | # define signed /* well, almost close enough */ 144 | #include <stddef.h> 145 | # define UNWIDENED_PROTOTYPES 146 | # endif 147 | # define USE_STDARG 148 | # endif 149 | # endif /*VAXC*/ 150 | # endif /*__DECC*/ 151 | # ifdef VERYOLD_VMS /* v4.5 or earlier; no longer available for testing */ 152 | # define USE_OLDARGS /* <varargs.h> is there, vprintf & vsprintf aren't */ 153 | # ifdef USE_VARARGS 154 | # undef USE_VARARGS 155 | # endif 156 | # ifdef USE_STDARG 157 | # undef USE_STDARG 158 | # endif 159 | # endif 160 | #endif /*VMS*/ 161 | 162 | #ifdef vax 163 | /* just in case someone thinks a DECstation is a vax. It's not, it's a mips */ 164 | # ifdef ULTRIX_PROTO 165 | # undef ULTRIX_PROTO 166 | # endif 167 | # ifdef ULTRIX_CC20 168 | # undef ULTRIX_CC20 169 | # endif 170 | #endif 171 | 172 | #ifdef KR1ED /* For compilers which cannot handle defined() */ 173 | #define defined(x) (-x-1 != -1) 174 | /* Because: 175 | * #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1 176 | * #define FOO 1 or on command-line -DFOO 177 | * => defined(1) => (-1 != - 1 - 1) => 1 178 | * if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1 179 | * for -DFOO, oh well. 180 | * => defined(0) => (-1 != - 0 - 1) => 0 181 | * 182 | * But: 183 | * defined("") => (-1 != - "" - 1) 184 | * [which is an unavoidable catastrophe.] 185 | */ 186 | #endif 187 | 188 | #endif /* CONFIG1_H */