1 /* SCCS Id: @(#)config1.h 3.4 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 macintosh /* Auto-defined symbol for MPW compilers (sc and mrc) */ 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' Codewarrior 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 #ifdef _WIN32_WCE 112 #define WIN_CE 113 # ifndef WIN32 114 # define WIN32 115 # endif 116 #endif 117 118 #ifdef WIN32 119 # undef UNIX 120 # undef MSDOS 121 # define NHSTDC 122 # define USE_STDARG 123 # define NEED_VARARGS 124 125 #ifndef WIN_CE 126 # define STRNCMPI 127 # define STRCMPI 128 #endif 129 130 #endif 131 132 133 #if defined(__linux__) && defined(__GNUC__) && !defined(_GNU_SOURCE) 134 /* ensure _GNU_SOURCE is defined before including any system headers */ 135 # define _GNU_SOURCE 136 #endif 137 138 #ifdef VMS /* really old compilers need special handling, detected here */ 139 # undef UNIX 140 # ifdef __DECC 141 # ifndef __DECC_VER /* buggy early versions want widened prototypes */ 142 # define NOTSTDC /* except when typedefs are involved */ 143 # define USE_VARARGS 144 # else 145 # define NHSTDC 146 # define USE_STDARG 147 # define POSIX_TYPES 148 # define _DECC_V4_SOURCE /* avoid some incompatible V5.x changes */ 149 # endif 150 # undef __HIDE_FORBIDDEN_NAMES /* need non-ANSI library support functions */ 151 # else 152 # ifdef VAXC /* must use CC/DEFINE=ANCIENT_VAXC for vaxc v2.2 or older */ 153 # ifdef ANCIENT_VAXC /* vaxc v2.2 and earlier [lots of warnings to come] */ 154 # define KR1ED /* simulate defined() */ 155 # define USE_VARARGS 156 # else /* vaxc v2.3,2.4,or 3.x, or decc in vaxc mode */ 157 # if defined(USE_PROTOTYPES) /* this breaks 2.2 (*forces* use of ANCIENT)*/ 158 # define __STDC__ 0 /* vaxc is not yet ANSI compliant, but close enough */ 159 # define signed /* well, almost close enough */ 160 #include <stddef.h> 161 # define UNWIDENED_PROTOTYPES 162 # endif 163 # define USE_STDARG 164 # endif 165 # endif /*VAXC*/ 166 # endif /*__DECC*/ 167 # ifdef VERYOLD_VMS /* v4.5 or earlier; no longer available for testing */ 168 # define USE_OLDARGS /* <varargs.h> is there, vprintf & vsprintf aren't */ 169 # ifdef USE_VARARGS 170 # undef USE_VARARGS 171 # endif 172 # ifdef USE_STDARG 173 # undef USE_STDARG 174 # endif 175 # endif 176 #endif /*VMS*/ 177 178 #ifdef vax 179 /* just in case someone thinks a DECstation is a vax. It's not, it's a mips */ 180 # ifdef ULTRIX_PROTO 181 # undef ULTRIX_PROTO 182 # endif 183 # ifdef ULTRIX_CC20 184 # undef ULTRIX_CC20 185 # endif 186 #endif 187 188 #ifdef KR1ED /* For compilers which cannot handle defined() */ 189 #define defined(x) (-x-1 != -1) 190 /* Because: 191 * #define FOO => FOO={} => defined( ) => (-1 != - - 1) => 1 192 * #define FOO 1 or on command-line -DFOO 193 * => defined(1) => (-1 != - 1 - 1) => 1 194 * if FOO isn't defined, FOO=0. But some compilers default to 0 instead of 1 195 * for -DFOO, oh well. 196 * => defined(0) => (-1 != - 0 - 1) => 0 197 * 198 * But: 199 * defined("") => (-1 != - "" - 1) 200 * [which is an unavoidable catastrophe.] 201 */ 202 #endif 203 204 #endif /* CONFIG1_H */ 205