1 /* @(#)mconfig.h 1.24 98/12/14 Copyright 1995 J. Schilling */ 2 /* 3 * definitions for machine configuration 4 * 5 * Copyright (c) 1995 J. Schilling 6 * 7 * This file must be included before any other file. 8 * Use only cpp instructions. 9 * 10 * NOTE: SING: (Schily Is Not Gnu) 11 */ 12 /* 13 * This program is free software; you can redistribute it and/or modify 14 * it under the terms of the GNU General Public License as published by 15 * the Free Software Foundation; either version 2, or (at your option) 16 * any later version. 17 * 18 * This program is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 * GNU General Public License for more details. 22 * 23 * You should have received a copy of the GNU General Public License 24 * along with this program; see the file COPYING. If not, write to 25 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 26 */ 27 28 #ifndef _MCONFIG_H 29 #define _MCONFIG_H 30 31 /* 32 * This hack that is needed as long as VMS has no POSIX shell. 33 */ 34 #ifdef VMS 35 # define USE_STATIC_CONF 36 #endif 37 38 #ifdef VANILLA_AUTOCONF 39 #include <config.h> 40 #else 41 #ifdef USE_STATIC_CONF 42 #include <xmconfig.h> /* This is the current static autoconf stuff */ 43 #else 44 #include <xconfig.h> /* This is the current dynamic autoconf stuff */ 45 #endif 46 #endif 47 48 #ifdef __cplusplus 49 extern "C" { 50 #endif 51 52 #if defined(unix) || defined(__unix) || defined(__unix__) 53 # define IS_UNIX 54 #endif 55 56 #ifdef __MSDOS__ 57 # define IS_MSDOS 58 #endif 59 60 #if defined(tos) || defined(__tos) 61 # define IS_TOS 62 #endif 63 64 #ifdef THINK_C 65 # define IS_MAC 66 #endif 67 68 #if defined(sun) || defined(__sun) || defined(__sun__) 69 # define IS_SUN 70 #endif 71 72 #if defined(__CYGWIN32__) 73 # define IS_GCC_WIN32 74 #endif 75 76 /*--------------------------------------------------------------------------*/ 77 /* 78 * Some magic that cannot (yet) be figured out with autoconf. 79 */ 80 81 #ifdef sparc 82 # ifndef HAVE_LDSTUB 83 # define HAVE_LDSTUB 84 # endif 85 # ifndef HAVE_SCANSTACK 86 # define HAVE_SCANSTACK 87 # endif 88 #endif 89 #if defined(__i386_) || defined(i386) 90 # ifndef HAVE_XCHG 91 # define HAVE_XCHG 92 # endif 93 # ifndef HAVE_SCANSTACK 94 # define HAVE_SCANSTACK 95 # endif 96 #endif 97 98 #if defined(SOL2) || defined(SOL2) || defined(S5R4) || defined(__S5R4) \ 99 || defined(SVR4) 100 # ifndef __SVR4 101 # define __SVR4 102 # endif 103 #endif 104 105 #ifdef __SVR4 106 # ifndef SVR4 107 # define SVR4 108 # endif 109 #endif 110 111 /* 112 * SunOS 4.x / SunOS 5.x 113 */ 114 #if defined(IS_SUN) 115 # define HAVE_GETAV0 116 #endif 117 118 /* 119 * AIX 120 */ 121 #if defined(_IBMR2) || defined(_AIX) 122 # define IS_UNIX /* ??? really ??? */ 123 #endif 124 125 /* 126 * Silicon Graphics (must be before SVR4) 127 */ 128 #if defined(sgi) || defined(__sgi) 129 # define __NOT_SVR4__ /* Not a real SVR4 implementation */ 130 #endif 131 132 /* 133 * Data General 134 */ 135 #if defined(__DGUX__) 136 #ifdef XXXXXXX 137 # undef HAVE_MTGET_DSREG 138 # undef HAVE_MTGET_RESID 139 # undef HAVE_MTGET_FILENO 140 # undef HAVE_MTGET_BLKNO 141 #endif 142 # define mt_type mt_model 143 # define mt_dsreg mt_status1 144 # define mt_erreg mt_status2 145 /* 146 * DGUX hides its flock as dg_flock. 147 */ 148 # define HAVE_FLOCK 149 # define flock dg_flock 150 /* 151 * Use the BSD style wait on DGUX to get the resource usages of child 152 * processes. 153 */ 154 # define _BSD_WAIT_FLAVOR 155 #endif 156 157 /* 158 * Apple Rhapsody 159 */ 160 #if defined(__NeXT__) && defined(__TARGET_OSNAME) && __TARGET_OSNAME == rhapsody 161 # define HAVE_OSDEF /* prevent later definitions to overwrite current */ 162 #endif 163 164 /* 165 * NextStep 166 */ 167 #if defined(__NeXT__) && !defined(HAVE_OSDEF) 168 #define NO_PRINT_OVR 169 #undef HAVE_USG_STDIO /* 170 * NeXT Step 3.x uses __flsbuf(unsigned char , FILE *) 171 * instead of __flsbuf(int, FILE *) 172 */ 173 #endif 174 175 /* 176 * NextStep 3.x has a broken linker that does not allow us to override 177 * these functions. 178 */ 179 #ifndef __OPRINTF__ 180 181 #ifdef NO_PRINT_OVR 182 # define printf Xprintf 183 # define fprintf Xfprintf 184 # define sprintf Xsprintf 185 #endif 186 187 #endif /* __OPRINTF__ */ 188 189 /*--------------------------------------------------------------------------*/ 190 /* 191 * If there is no flock defined by the system, use emulation 192 * through fcntl record locking. 193 */ 194 #if !defined(HAVE_FLOCK_H) && !defined(HAVE_SYS_FCNTL_H) 195 #define LOCK_SH 1 /* shared lock */ 196 #define LOCK_EX 2 /* exclusive lock */ 197 #define LOCK_NB 4 /* don't block when locking */ 198 #define LOCK_UN 8 /* unlock */ 199 #endif 200 201 #include <prototyp.h> 202 203 /* 204 * gcc 2.x generally implements the long long type. 205 */ 206 #ifdef __GNUC__ 207 # if __GNUC__ > 1 208 # ifndef HAVE_LONGLONG 209 # define HAVE_LONGLONG 210 # endif 211 # endif 212 #endif 213 214 /* 215 * Convert to GNU name 216 */ 217 #ifdef HAVE_STDC_HEADERS 218 # ifndef STDC_HEADERS 219 # define STDC_HEADERS 220 # endif 221 #endif 222 /* 223 * Convert to SCHILY name 224 */ 225 #ifdef STDC_HEADERS 226 # ifndef HAVE_STDC_HEADERS 227 # define HAVE_STDC_HEADERS 228 # endif 229 #endif 230 231 #ifdef IS_UNIX 232 # define PATH_DELIM '/' 233 # define PATH_DELIM_STR "/" 234 # define far 235 # define near 236 #endif 237 238 #ifdef IS_GCC_WIN32 239 # define PATH_DELIM '/' 240 # define PATH_DELIM_STR "/" 241 # define far 242 # define near 243 #endif 244 245 #ifdef IS_MSDOS 246 # define PATH_DELIM '\\' 247 # define PATH_DELIM_STR "\\" 248 #endif 249 250 #ifdef IS_TOS 251 # define PATH_DELIM '\\' 252 # define PATH_DELIM_STR "\\" 253 # define far 254 # define near 255 #endif 256 257 #ifdef IS_MAC 258 # define PATH_DELIM ':' 259 # define PATH_DELIM_STR ":" 260 # define far 261 # define near 262 #endif 263 264 #ifdef __cplusplus 265 } 266 #endif 267 268 #endif /* _MCONFIG_H */ 269