[MKISOFS]
[reactos.git] / reactos / sdk / tools / mkisofs / schilytools / include / schily / mconfig.h
1 /* @(#)mconfig.h 1.71 15/08/14 Copyright 1995-2015 J. Schilling */
2 /*
3 * definitions for machine configuration
4 *
5 * Copyright (c) 1995-2015 J. Schilling
6 *
7 * This file must be included before any other file.
8 * If this file is not included before stdio.h you will not be
9 * able to get LARGEFILE support
10 *
11 * Use only cpp instructions.
12 *
13 * NOTE: SING: (Schily Is Not Gnu)
14 */
15 /*
16 * The contents of this file are subject to the terms of the
17 * Common Development and Distribution License, Version 1.0 only
18 * (the "License"). You may not use this file except in compliance
19 * with the License.
20 *
21 * See the file CDDL.Schily.txt in this distribution for details.
22 * A copy of the CDDL is also available via the Internet at
23 * http://www.opensource.org/licenses/cddl1.txt
24 *
25 * When distributing Covered Code, include this CDDL HEADER in each
26 * file and include the License file CDDL.Schily.txt from this distribution.
27 */
28
29 #ifndef _SCHILY_MCONFIG_H
30 #define _SCHILY_MCONFIG_H
31
32 /*
33 * Tell our users that this is a Schily SING compile environment.
34 */
35 #define IS_SCHILY
36
37 /*
38 * We need to do this before we include xconfig.h
39 */
40 #ifdef NO_LARGEFILES
41 #undef USE_LARGEFILES
42 #endif
43 #ifdef NO_ACL
44 #undef USE_ACL
45 #endif
46
47 /*
48 * Inside <schily/archdefs.h> we get architecture specific Processor defines
49 * fetched from compiler predefinitions only.
50 */
51 #include <schily/archdefs.h>
52
53 /*
54 * Inside <schily/xconfig.h> we decide whether to use static or dynamic
55 * autoconf stuff.
56 */
57 #include <schily/xconfig.h>
58
59 /*
60 * Make sure that neither HAVE_LARGEFILES nor USE_LARGEFILES is defined
61 * if the platform does not support large files.
62 */
63 #ifndef HAVE_LARGEFILES
64 #undef USE_LARGEFILES
65 #endif
66
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70
71 /*
72 * The NetBSD people want to bother us.
73 * They removed the definition for 'unix' and are bleating for every test
74 * for #if defined(unix). So we need to check for NetBSD early.
75 */
76 #ifndef IS_UNIX
77 # if defined(__NetBSD__)
78 # define IS_UNIX
79 # endif
80 #endif
81
82 #ifndef IS_UNIX
83 # if (defined(unix) || defined(__unix) || defined(__unix__)) && \
84 !defined(__DJGPP__)
85 # define IS_UNIX
86 # endif
87 #endif
88
89 #ifdef __MSDOS__
90 # define IS_MSDOS
91 #endif
92
93 #if defined(tos) || defined(__tos)
94 # define IS_TOS
95 #endif
96
97 #ifdef THINK_C
98 # define IS_MAC
99 #endif
100
101 #if defined(sun) || defined(__sun) || defined(__sun__)
102 # define IS_SUN
103 #endif
104
105 #if defined(__CYGWIN32__) || defined(__CYGWIN__)
106 # define IS_GCC_WIN32
107 # define IS_CYGWIN
108
109 #if defined(unix) || defined(_X86)
110 # define IS_CYGWIN_1
111 #endif
112 #endif
113
114 /* ------------------------------------------------------------------------- */
115 /*
116 * Some magic that cannot (yet) be figured out with autoconf.
117 */
118
119 #if defined(sun3) || defined(mc68000) || defined(mc68020)
120 # ifndef HAVE_SCANSTACK
121 # define HAVE_SCANSTACK
122 # endif
123 #endif
124 #ifdef sparc
125 # ifndef HAVE_LDSTUB
126 # define HAVE_LDSTUB
127 # endif
128 # ifndef HAVE_SCANSTACK
129 # define HAVE_SCANSTACK
130 # endif
131 #endif
132 #if defined(__i386_) || defined(i386)
133 # ifndef HAVE_XCHG
134 # define HAVE_XCHG
135 # endif
136 # ifndef HAVE_SCANSTACK
137 # define HAVE_SCANSTACK
138 # endif
139 #endif
140
141 /*
142 * Use of SCANSTACK is disabled by default
143 */
144 #ifndef USE_SCANSTACK
145 # undef HAVE_SCANSTACK
146 #else
147 /*
148 * But ....
149 * The tests are much better now, so always give it a chance.
150 */
151 #ifndef HAVE_SCANSTACK
152 # define HAVE_SCANSTACK
153 #endif
154 #endif
155
156 /*
157 * Allow to overwrite the defines in the makefiles by calling
158 *
159 * make COPTX=-DFORCE_SCANSTACK
160 */
161 #ifdef FORCE_SCANSTACK
162 # undef NO_SCANSTACK
163 #ifndef HAVE_SCANSTACK
164 # define HAVE_SCANSTACK
165 #endif
166 #ifndef USE_SCANSTACK
167 # define USE_SCANSTACK
168 #endif
169 #endif
170
171 /*
172 * This is the global switch to deactivate stack scanning
173 */
174 #ifdef NO_SCANSTACK
175 # ifdef HAVE_SCANSTACK
176 # undef HAVE_SCANSTACK
177 # endif
178 #endif
179
180 /*
181 * This is the global switch to deactivate using #pragma weak
182 */
183 #ifdef NO_PRAGMA_WEAK
184 # ifdef HAVE_PRAGMA_WEAK
185 # undef HAVE_PRAGMA_WEAK
186 # endif
187 #endif
188
189 #ifdef NO_FORK
190 # ifdef HAVE_FORK
191 # undef HAVE_FORK
192 # endif
193 # ifdef HAVE_VFORK
194 # undef HAVE_VFORK
195 # endif
196 #endif
197 #ifdef NO_VFORK
198 # ifdef HAVE_VFORK
199 # undef HAVE_VFORK
200 # endif
201 #endif
202
203 #if defined(SOL2) || defined(SOL2) || \
204 defined(S5R4) || defined(__S5R4) || defined(SVR4)
205 # ifndef __SVR4
206 # define __SVR4
207 # endif
208 #endif
209
210 #ifdef __SVR4
211 # ifndef SVR4
212 # define SVR4
213 # endif
214 #endif
215
216 /*
217 * SunOS 4.x / SunOS 5.x
218 */
219 #if defined(IS_SUN)
220 # define HAVE_GETAV0
221 #endif
222
223 /*
224 * AIX
225 */
226 #if defined(_IBMR2) || defined(_AIX)
227 # ifndef IS_UNIX
228 # define IS_UNIX /* ??? really ??? */
229 # endif
230 #endif
231
232 /*
233 * QNX
234 */
235 #if defined(__QNX__)
236 # ifndef IS_UNIX
237 # define IS_UNIX
238 # endif
239 #endif
240
241 /*
242 * Silicon Graphics (must be before SVR4)
243 */
244 #if defined(sgi) || defined(__sgi)
245 # define __NOT_SVR4__ /* Not a real SVR4 implementation */
246 #endif
247
248 /*
249 * Data General
250 */
251 #if defined(__DGUX__)
252 #ifdef XXXXXXX
253 # undef HAVE_MTGET_DSREG
254 # undef HAVE_MTGET_RESID
255 # undef HAVE_MTGET_FILENO
256 # undef HAVE_MTGET_BLKNO
257 #endif
258 # define mt_type mt_model
259 # define mt_dsreg mt_status1
260 # define mt_erreg mt_status2
261 /*
262 * DGUX hides its flock as dg_flock.
263 */
264 # define HAVE_FLOCK
265 # define flock dg_flock
266 /*
267 * Use the BSD style wait on DGUX to get the resource usages of child
268 * processes.
269 */
270 # define _BSD_WAIT_FLAVOR
271 #endif
272
273 /*
274 * Apple Rhapsody (This is the name for Mac OS X beta)
275 */
276 #if defined(__NeXT__) && defined(__TARGET_OSNAME) && __TARGET_OSNAME == rhapsody
277 # define HAVE_OSDEF /* prevent later definitions to overwrite current */
278 # ifndef IS_UNIX
279 # define IS_UNIX
280 # endif
281 #endif
282
283 /*
284 * NextStep
285 */
286 #if defined(__NeXT__) && !defined(HAVE_OSDEF)
287 #define NO_PRINT_OVR
288 #undef HAVE_USG_STDIO
289 /*
290 * NeXT Step 3.x uses
291 * __flsbuf(unsigned char, FILE *)
292 * instead of __flsbuf(int, FILE *)
293 */
294 # ifndef IS_UNIX
295 # define IS_UNIX
296 # endif
297 #endif
298
299 /*
300 * Mac OS X
301 */
302 #if defined(__APPLE__) && defined(__MACH__)
303 # ifndef IS_UNIX
304 # define IS_UNIX
305 # endif
306 # define IS_MACOS_X
307 #endif
308
309 /*
310 * NextStep 3.x has a broken linker that does not allow us to override
311 * these functions.
312 */
313 #ifndef __OPRINTF__
314
315 #ifdef NO_PRINT_OVR
316 # define printf Xprintf
317 # define fprintf Xfprintf
318 # define sprintf Xsprintf
319 #endif
320
321 #endif /* __OPRINTF__ */
322
323 /* ------------------------------------------------------------------------- */
324
325 #ifndef _SCHILY_PROTOTYP_H
326 #include <schily/prototyp.h>
327 #endif
328
329 /*
330 * We use HAVE_LONGLONG as generalized test on whether "long long", "__in64" or
331 * something similar exist.
332 *
333 * In case that HAVE_LONGLONG is defined here, this is an indication that
334 * "long long" works. We define HAVE_LONG_LONG to keep this knowledge.
335 */
336 #ifdef HAVE_LONGLONG
337 # define HAVE_LONG_LONG
338 #endif
339
340 /*
341 * Microsoft C defines _MSC_VER
342 * use __int64 instead of long long and use 0i64 for a signed long long const
343 * and 0ui64 for an unsigned long long const.
344 *
345 * #if defined(HAVE___INT64)
346 * use __int64
347 * #elif defined(HAVE_LONGLONG)
348 * use long long
349 * #endif
350 *
351 * Be very careful here as older MSVC versions do not implement long long but
352 * rather __int64 and once someone makes 'long long' 128 bits on a 64 bit
353 * machine, we may need to check for a MSVC __int128 type.
354 */
355 #ifndef HAVE_LONGLONG
356 # if defined(HAVE___INT64)
357 # define HAVE_LONGLONG
358 # endif
359 #endif
360
361 /*
362 * gcc 2.x generally implements the "long long" type.
363 */
364 #ifdef __GNUC__
365 # if __GNUC__ > 1
366 # ifndef HAVE_LONGLONG
367 # define HAVE_LONGLONG
368 # endif
369 # ifndef HAVE_LONG_LONG
370 # define HAVE_LONG_LONG
371 # endif
372 # endif
373 #endif
374
375 #ifdef __CHAR_UNSIGNED__ /* GNU GCC define (dynamic) */
376 #ifndef CHAR_IS_UNSIGNED
377 #define CHAR_IS_UNSIGNED /* Sing Schily define (static) */
378 #endif
379 #endif
380
381 /*
382 * Convert to GNU name
383 */
384 #ifdef HAVE_STDC_HEADERS
385 # ifndef STDC_HEADERS
386 # define STDC_HEADERS
387 # endif
388 #endif
389 /*
390 * Convert to SCHILY name
391 */
392 #ifdef STDC_HEADERS
393 # ifndef HAVE_STDC_HEADERS
394 # define HAVE_STDC_HEADERS
395 # endif
396 #endif
397
398 #ifdef IS_UNIX
399 # define HAVE_PATH_DELIM
400 # define PATH_DELIM '/'
401 # define PATH_DELIM_STR "/"
402 # define PATH_ENV_DELIM ':'
403 # define PATH_ENV_DELIM_STR ":"
404 # define far
405 # define near
406 #endif
407
408 /*
409 * Win32 with Gygwin
410 */
411 #ifdef IS_GCC_WIN32
412 # define HAVE_PATH_DELIM
413 # define PATH_DELIM '/'
414 # define PATH_DELIM_STR "/"
415 # define PATH_ENV_DELIM ':'
416 # define PATH_ENV_DELIM_STR ":"
417 # define HAVE_DOS_DRIVELETTER
418 # define far
419 # define near
420 # define NEED_O_BINARY
421 #endif
422
423 /*
424 * Win32 with Mingw32
425 */
426 #ifdef __MINGW32__
427 # define HAVE_PATH_DELIM
428 # define PATH_DELIM '/'
429 # define PATH_DELIM_STR "/"
430 # define PATH_ENV_DELIM ';'
431 # define PATH_ENV_DELIM_STR ";"
432 # define HAVE_DOS_DRIVELETTER
433 # define far
434 # define near
435 # define NEED_O_BINARY
436 #endif
437
438 /*
439 * OS/2 EMX
440 */
441 #ifdef __EMX__ /* We don't want to call it UNIX */
442 # define HAVE_PATH_DELIM
443 # define PATH_DELIM '/'
444 # define PATH_DELIM_STR "/"
445 # define PATH_ENV_DELIM ';'
446 # define PATH_ENV_DELIM_STR ";"
447 # define HAVE_DOS_DRIVELETTER
448 # define far
449 # define near
450 # define NEED_O_BINARY
451 #endif
452
453 #ifdef __BEOS__ /* We don't want to call it UNIX */
454 # define HAVE_PATH_DELIM
455 # define PATH_DELIM '/'
456 # define PATH_DELIM_STR "/"
457 # define PATH_ENV_DELIM ':'
458 # define PATH_ENV_DELIM_STR ":"
459 # define far
460 # define near
461 #endif
462
463 /*
464 * DOS with DJGPP
465 */
466 #ifdef __DJGPP__ /* We don't want to call it UNIX */
467 # define HAVE_PATH_DELIM
468 # define PATH_DELIM '/'
469 # define PATH_DELIM_STR "/"
470 # define PATH_ENV_DELIM ';'
471 # define PATH_ENV_DELIM_STR ";"
472 # define HAVE_DOS_DRIVELETTER
473
474 # define NEED_O_BINARY
475 #endif
476
477 /*
478 * Vanilla DOS
479 */
480 #if defined(IS_MSDOS) && !defined(__DJGPP__)
481 # define HAVE_PATH_DELIM
482 # define PATH_DELIM '\\'
483 # define PATH_DELIM_STR "\\"
484 # define PATH_ENV_DELIM ';'
485 # define PATH_ENV_DELIM_STR ";"
486 # define HAVE_DOS_DRIVELETTER
487
488 # define NEED_O_BINARY
489 #endif
490
491 /*
492 * ATARI TOS
493 */
494 #ifdef IS_TOS
495 # define HAVE_PATH_DELIM
496 # define PATH_DELIM '\\'
497 # define PATH_DELIM_STR "\\"
498 # define PATH_ENV_DELIM ','
499 # define PATH_ENV_DELIM_STR ","
500 # define HAVE_DOS_DRIVELETTER
501 # define far
502 # define near
503 #endif
504
505 /*
506 * Mac OS 9
507 */
508 #ifdef IS_MAC
509 # define HAVE_PATH_DELIM
510 # define PATH_DELIM ':'
511 # define PATH_DELIM_STR ":"
512 # define PATH_ENV_DELIM ';' /* ??? */
513 # define PATH_ENV_DELIM_STR ";" /* ??? */
514 # define far
515 # define near
516 #endif
517
518 /*
519 * I hope this will make compilation on unknown OS easier.
520 */
521 #ifndef HAVE_PATH_DELIM /* Default to POSIX rules */
522 # define HAVE_PATH_DELIM
523 # define PATH_DELIM '/'
524 # define PATH_DELIM_STR "/"
525 # define PATH_ENV_DELIM ':'
526 # define PATH_ENV_DELIM_STR ":"
527 # define far
528 # define near
529 #endif
530
531 /*
532 * Is there a solution for /dev/tty and similar?
533 */
534 #ifdef HAVE__DEV_NULL
535 # define DEV_NULL "/dev/null"
536 #else
537 #if defined(_MSC_VER) || defined(__MINGW32__)
538 # define DEV_NULL "NUL"
539 #else
540 /*
541 * What to do here?
542 */
543 #endif
544 #endif
545
546 #ifdef DBG_MALLOC
547 /*
548 * We need to include this here already in order to make sure that
549 * every program that is based on mconfig.h will include schily/dbgmalloc.h
550 * in case that we specify -DDBG_MALLOC
551 */
552 #include <schily/dbgmalloc.h>
553 #endif
554
555 #ifdef __cplusplus
556 }
557 #endif
558
559 #endif /* _SCHILY_MCONFIG_H */