Imported Upstream version 1.1.11
[platform/upstream/cdrkit.git] / include / mconfig.h
1 /*
2  * This file has been modified for the cdrkit suite.
3  *
4  * The behaviour and appearence of the program code below can differ to a major
5  * extent from the version distributed by the original author(s).
6  *
7  * For details, see Changelog file distributed with the cdrkit package. If you
8  * received this file from another source then ask the distributing person for
9  * a log of modifications.
10  *
11  */
12
13 /* @(#)mconfig.h        1.50 04/07/11 Copyright 1995 J. Schilling */
14 /*
15  *      definitions for machine configuration
16  *
17  *      Copyright (c) 1995 J. Schilling
18  *
19  *      This file must be included before any other file.
20  *      If this file is not included before stdio.h you will not be
21  *      able to get LARGEFILE support
22  *
23  *      Use only cpp instructions.
24  *
25  *      NOTE: SING: (Schily Is Not Gnu)
26  */
27 /*
28  * This program is free software; you can redistribute it and/or modify
29  * it under the terms of the GNU General Public License version 2
30  * as published by the Free Software Foundation.
31  *
32  * This program is distributed in the hope that it will be useful,
33  * but WITHOUT ANY WARRANTY; without even the implied warranty of
34  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
35  * GNU General Public License for more details.
36  *
37  * You should have received a copy of the GNU General Public License along with
38  * this program; see the file COPYING.  If not, write to the Free Software
39  * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
40  */
41
42 #ifndef _MCONFIG_H
43 #define _MCONFIG_H
44
45 /* whatever, just shut up */
46 #define __sccsid "forked version from cdrkit"
47 #define _sccsid "forked version from cdrkit"
48
49 /*
50  * This hack that is needed as long as VMS has no POSIX shell.
51  */
52 #ifdef  VMS
53 #       define  USE_STATIC_CONF
54 #endif
55
56 #ifdef  USE_STATIC_CONF
57 #include <xmconfig.h>   /* This is the current static autoconf stuff */
58 #else
59 #include <xconfig.h>    /* This is the current dynamic autoconf stuff */
60 #endif
61
62 #ifdef __cplusplus
63 extern "C" {
64 #endif
65
66 /*
67  * The NetBSD people want to bother us.
68  * They removed the definition for 'unix' and are bleating for every test
69  * for #if defined(unix). So we need to check for NetBSD early.
70  */
71 #ifndef IS_UNIX
72 #       if defined(__NetBSD__)
73 #               define  IS_UNIX
74 #       endif
75 #endif
76
77 #ifndef IS_UNIX
78 #       if (defined(unix) || defined(__unix) || defined(__unix__)) && !defined(__DJGPP__)
79 #               define  IS_UNIX
80 #       endif
81 #endif
82
83 #ifdef  __MSDOS__
84 #       define  IS_MSDOS
85 #endif
86
87 #if defined(tos) || defined(__tos)
88 #       define  IS_TOS
89 #endif
90
91 #ifdef  THINK_C
92 #       define  IS_MAC
93 #endif
94
95 #if defined(sun) || defined(__sun) || defined(__sun__)
96 #       define  IS_SUN
97 #endif
98
99 #if defined(__CYGWIN32__) || defined(__CYGWIN__)
100 #       define  IS_GCC_WIN32
101 #       define  IS_CYGWIN
102
103 #if     defined(unix) || defined(_X86)
104 #       define  IS_CYGWIN_1
105 #endif
106 #endif
107
108 /*--------------------------------------------------------------------------*/
109 /*
110  * Some magic that cannot (yet) be figured out with autoconf.
111  */
112
113 #if defined(sun3) || defined(mc68000) || defined(mc68020)
114 #       ifndef  HAVE_SCANSTACK
115 #       define  HAVE_SCANSTACK
116 #       endif
117 #endif
118 #ifdef sparc
119 #       ifndef  HAVE_LDSTUB
120 #       define  HAVE_LDSTUB
121 #       endif
122 #       ifndef  HAVE_SCANSTACK
123 #       define  HAVE_SCANSTACK
124 #       endif
125 #endif
126 #if     defined(__i386_) || defined(i386)
127 #       ifndef  HAVE_XCHG
128 #       define  HAVE_XCHG
129 #       endif
130 #       ifndef  HAVE_SCANSTACK
131 #       define  HAVE_SCANSTACK
132 #       endif
133 #endif
134
135 /*
136  * Use of SCANSTACK is disabled by default
137  */
138 #ifndef USE_SCANSTACK
139 #       undef   HAVE_SCANSTACK
140 #else
141 /*
142  * But ....
143  * The tests are much better now, so always give it a chance.
144  */
145 #ifndef HAVE_SCANSTACK
146 #       define  HAVE_SCANSTACK
147 #endif
148 #endif
149
150 /*
151  * Allow to overwrite the defines in the makefiles by calling
152  *
153  *      make COPTX=-DFORCE_SCANSTACK
154  */
155 #ifdef  FORCE_SCANSTACK
156 #       undef   NO_SCANSTACK
157 #ifndef HAVE_SCANSTACK
158 #       define  HAVE_SCANSTACK
159 #endif
160 #ifndef USE_SCANSTACK
161 #       define  USE_SCANSTACK
162 #endif
163 #endif
164
165 /*
166  * This is the global switch to deactivate stack scanning
167  */
168 #ifdef  NO_SCANSTACK
169 #       ifdef   HAVE_SCANSTACK
170 #       undef   HAVE_SCANSTACK
171 #       endif
172 #endif
173
174 #ifdef  NO_FORK
175 #       ifdef   HAVE_FORK
176 #       undef   HAVE_FORK
177 #       endif
178 #       ifdef   HAVE_VFORK
179 #       undef   HAVE_VFORK
180 #       endif
181 #endif
182 #ifdef  NO_VFORK
183 #       ifdef   HAVE_VFORK
184 #       undef   HAVE_VFORK
185 #       endif
186 #endif
187
188 #if     defined(SOL2) || defined(SOL2) || \
189         defined(S5R4) || defined(__S5R4) || defined(SVR4)
190 #       ifndef  __SVR4
191 #               define  __SVR4
192 #       endif
193 #endif
194
195 #ifdef  __SVR4
196 #       ifndef  SVR4
197 #               define  SVR4
198 #       endif
199 #endif
200
201 /*
202  * SunOS 4.x / SunOS 5.x
203  */
204 #if defined(IS_SUN)
205 #       define  HAVE_GETAV0
206 #endif
207
208 /*
209  * AIX
210  */
211 #if     defined(_IBMR2) || defined(_AIX)
212 #       ifndef  IS_UNIX
213 #       define  IS_UNIX         /* ??? really ??? */
214 #       endif
215 #endif
216
217 /*
218  * QNX
219  */
220 #if defined(__QNX__)
221 #       ifndef  IS_UNIX
222 #       define  IS_UNIX
223 #       endif
224 #endif
225
226 /*
227  * Silicon Graphics     (must be before SVR4)
228  */
229 #if defined(sgi) || defined(__sgi)
230 #       define  __NOT_SVR4__    /* Not a real SVR4 implementation */
231 #endif
232
233 /*
234  * Data General
235  */
236 #if defined(__DGUX__)
237 #ifdef  XXXXXXX
238 #       undef   HAVE_MTGET_DSREG
239 #       undef   HAVE_MTGET_RESID
240 #       undef   HAVE_MTGET_FILENO
241 #       undef   HAVE_MTGET_BLKNO
242 #endif
243 #       define  mt_type         mt_model
244 #       define  mt_dsreg        mt_status1
245 #       define  mt_erreg        mt_status2
246         /*
247          * DGUX hides its flock as dg_flock.
248          */
249 #       define  HAVE_FLOCK
250 #       define  flock   dg_flock
251         /*
252          * Use the BSD style wait on DGUX to get the resource usages of child
253          * processes.
254          */
255 #       define  _BSD_WAIT_FLAVOR
256 #endif
257
258 /*
259  * Apple Rhapsody (This is the name for Mac OS X beta)
260  */
261 #if defined(__NeXT__) && defined(__TARGET_OSNAME) && __TARGET_OSNAME == rhapsody
262 #       define  HAVE_OSDEF /* prevent later definitions to overwrite current */
263 #       ifndef  IS_UNIX
264 #       define  IS_UNIX
265 #       endif
266 #endif
267
268 /*
269  * NextStep
270  */
271 #if defined(__NeXT__) && !defined(HAVE_OSDEF)
272 #define NO_PRINT_OVR
273 #undef  HAVE_USG_STDIO          /*
274                                  * NeXT Step 3.x uses __flsbuf(unsigned char, FILE *)
275                                  * instead of __flsbuf(int, FILE *)
276                                  */
277 #       ifndef  IS_UNIX
278 #       define  IS_UNIX
279 #       endif
280 #endif
281
282 /*
283  * Mac OS X
284  */
285 #if defined(__APPLE__) && defined(__MACH__)
286 #       ifndef  IS_UNIX
287 #       define  IS_UNIX
288 #       endif
289 #       define  IS_MACOS_X
290 #endif
291
292 /*
293  * NextStep 3.x has a broken linker that does not allow us to override
294  * these functions.
295  */
296 #ifndef __OPRINTF__
297
298 #ifdef  NO_PRINT_OVR
299 #       define  printf  Xprintf
300 #       define  fprintf Xfprintf
301 #       define  sprintf Xsprintf
302 #endif
303
304 #endif  /* __OPRINTF__ */
305
306 /*--------------------------------------------------------------------------*/
307 /*
308  * If there is no flock defined by the system, use emulation
309  * through fcntl record locking.
310  */
311 #ifndef HAVE_FLOCK
312 #define LOCK_SH         1       /* shared lock */
313 #define LOCK_EX         2       /* exclusive lock */
314 #define LOCK_NB         4       /* don't block when locking */
315 #define LOCK_UN         8       /* unlock */
316 #endif
317
318 #ifndef _PROTOTYP_H
319 #include <prototyp.h>
320 #endif
321
322 /*
323  * gcc 2.x generally implements the long long type.
324  */
325 #ifdef  __GNUC__
326 #       if      __GNUC__ > 1
327 #               ifndef  HAVE_LONGLONG
328 #                       define  HAVE_LONGLONG
329 #               endif
330 #       endif
331 #endif
332
333 /*
334  * Convert to GNU name
335  */
336 #ifdef  HAVE_STDC_HEADERS
337 #       ifndef  STDC_HEADERS
338 #               define  STDC_HEADERS
339 #       endif
340 #endif
341 /*
342  * Convert to SCHILY name
343  */
344 #ifdef  STDC_HEADERS
345 #       ifndef  HAVE_STDC_HEADERS
346 #               define  HAVE_STDC_HEADERS
347 #       endif
348 #endif
349
350 #ifdef  IS_UNIX
351 #       define  HAVE_PATH_DELIM
352 #       define  PATH_DELIM              '/'
353 #       define  PATH_DELIM_STR          "/"
354 #       define  PATH_ENV_DELIM          ':'
355 #       define  PATH_ENV_DELIM_STR      ":"
356 #       define  far
357 #       define  near
358 #endif
359
360 /*
361  * Win32 with Gygwin
362  */
363 #ifdef  IS_GCC_WIN32
364 #       define  HAVE_PATH_DELIM
365 #       define  PATH_DELIM              '/'
366 #       define  PATH_DELIM_STR          "/"
367 #       define  PATH_ENV_DELIM          ':'
368 #       define  PATH_ENV_DELIM_STR      ":"
369 #       define  HAVE_DOS_DRIVELETTER
370 #       define  far
371 #       define  near
372 #       define  NEED_O_BINARY
373 #endif
374
375 /*
376  * Win32 with Mingw32
377  */
378 #ifdef  __MINGW32__
379 #       define  HAVE_PATH_DELIM
380 #       define  PATH_DELIM              '/'
381 #       define  PATH_DELIM_STR          "/"
382 #       define  PATH_ENV_DELIM          ';'
383 #       define  PATH_ENV_DELIM_STR      ";"
384 #       define  HAVE_DOS_DRIVELETTER
385 #       define  far
386 #       define  near
387 #       define  NEED_O_BINARY
388 #endif
389
390 /*
391  * OS/2 EMX
392  */
393 #ifdef  __EMX__                         /* We don't want to call it UNIX */
394 #       define  HAVE_PATH_DELIM
395 #       define  PATH_DELIM              '/'
396 #       define  PATH_DELIM_STR          "/"
397 #       define  PATH_ENV_DELIM          ';'
398 #       define  PATH_ENV_DELIM_STR      ";"
399 #       define  HAVE_DOS_DRIVELETTER
400 #       define  far
401 #       define  near
402 #       define  NEED_O_BINARY
403 #endif
404
405 #ifdef  __BEOS__                        /* We don't want to call it UNIX */
406 #       define  HAVE_PATH_DELIM
407 #       define  PATH_DELIM              '/'
408 #       define  PATH_DELIM_STR          "/"
409 #       define  PATH_ENV_DELIM          ':'
410 #       define  PATH_ENV_DELIM_STR      ":"
411 #       define  far
412 #       define  near
413 #endif
414
415 /*
416  * DOS with DJGPP
417  */
418 #ifdef  __DJGPP__                       /* We don't want to call it UNIX */
419 #       define  HAVE_PATH_DELIM
420 #       define  PATH_DELIM              '/'
421 #       define  PATH_DELIM_STR          "/"
422 #       define  PATH_ENV_DELIM          ';'
423 #       define  PATH_ENV_DELIM_STR      ";"
424 #       define  HAVE_DOS_DRIVELETTER
425
426 #       define  NEED_O_BINARY
427 #endif
428
429 /*
430  * Vanilla DOS
431  */
432 #if     defined(IS_MSDOS) && !defined(__DJGPP__)
433 #       define  HAVE_PATH_DELIM
434 #       define  PATH_DELIM              '\\'
435 #       define  PATH_DELIM_STR          "\\"
436 #       define  PATH_ENV_DELIM          ';'
437 #       define  PATH_ENV_DELIM_STR      ";"
438 #       define  HAVE_DOS_DRIVELETTER
439
440 #       define  NEED_O_BINARY
441 #endif
442
443 /*
444  * ATARI TOS
445  */
446 #ifdef  IS_TOS
447 #       define  HAVE_PATH_DELIM
448 #       define  PATH_DELIM              '\\'
449 #       define  PATH_DELIM_STR          "\\"
450 #       define  PATH_ENV_DELIM          ','
451 #       define  PATH_ENV_DELIM_STR      ","
452 #       define  HAVE_DOS_DRIVELETTER
453 #       define  far
454 #       define  near
455 #endif
456
457 /*
458  * Mac OS 9
459  */
460 #ifdef  IS_MAC
461 #       define  HAVE_PATH_DELIM
462 #       define  PATH_DELIM              ':'
463 #       define  PATH_DELIM_STR          ":"
464 #       define  PATH_ENV_DELIM          ';'     /* ??? */
465 #       define  PATH_ENV_DELIM_STR      ";"     /* ??? */
466 #       define  far
467 #       define  near
468 #endif
469
470 /*
471  * I hope this will make compilation on unknown OS easier.
472  */
473 #ifndef HAVE_PATH_DELIM                 /* Default to POSIX rules */
474 #       define  HAVE_PATH_DELIM
475 #       define  PATH_DELIM              '/'
476 #       define  PATH_DELIM_STR          "/"
477 #       define  PATH_ENV_DELIM          ':'
478 #       define  PATH_ENV_DELIM_STR      ":"
479 #       define  far
480 #       define  near
481 #endif
482
483 #ifdef __cplusplus
484 }
485 #endif
486
487 #endif /* _MCONFIG_H */