1 #ifndef _SYSDEFS_H
2 #define _SYSDEFS_H
3 /* sysdefs.h */
4 /*****************************************************************************/
5 /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
6 /*                                                                           */
7 /* AS Port                                                                   */
8 /*                                                                           */
9 /* system-specific definitions                                               */
10 /*                                                                           */
11 /* History:  2001-04-13 activated DRSEP for Win32 platform                   */
12 /*           2001-09-11 added MacOSX                                         */
13 /*           2001-10-13 added ARM/Linux                                      */
14 /*                                                                           */
15 /*****************************************************************************/
16 /* $Id: sysdefs.h,v 1.16 2016/09/22 15:36:15 alfred Exp $                     */
17 /*****************************************************************************
18  * $Log: sysdefs.h,v $
19  * Revision 1.16  2016/09/22 15:36:15  alfred
20  * - use platform-dependent format string for LongInt
21  *
22  * Revision 1.15  2015/08/21 19:12:19  alfred
23  * - avoid double definition if both K8 and x86_64 set
24  *
25  * Revision 1.14  2015/03/04 18:37:24  alfred
26  * - add AArch64
27  *
28  * Revision 1.13  2014/05/29 10:59:06  alfred
29  * - some const cleanups
30  *
31  * Revision 1.12  2012-11-28 20:47:29  alfred
32  * - correct typo
33  *
34  * Revision 1.11  2012-08-22 20:01:22  alfred
35  * - add OSX 32 bit
36  *
37  * Revision 1.10  2012-08-19 09:39:18  alfred
38  * - consider OSX
39  *
40  * Revision 1.9  2012-05-16 21:04:23  alfred
41  * - add Linux/MIPS
42  *
43  * Revision 1.8  2012-01-14 14:34:58  alfred
44  * - add some platforms
45  *
46  * Revision 1.7  2008/01/02 22:32:21  alfred
47  * - better heap checking for DOS target
48  *
49  * Revision 1.6  2007/11/24 22:48:08  alfred
50  * - some NetBSD changes
51  *
52  * Revision 1.5  2007/09/16 08:56:04  alfred
53  * - add K8 target
54  *
55  * Revision 1.4  2006/05/01 09:09:10  alfred
56  * - treat __PPC__ like _POWER
57  *
58  * Revision 1.3  2004/02/08 20:39:25  alfred
59  * -
60  *
61  * Revision 1.2  2004/01/17 16:12:35  alfred
62  * - add ePOC
63  *
64  *****************************************************************************/
65 
66 /* NOTE:
67  *
68  * when adding new platforms, " gcc -dM -E - <<<'' " might be helpful to
69  * find out about predefined symbols
70  *
71  */
72 
73 /*---------------------------------------------------------------------------*/
74 /* unify 68K platforms */
75 
76 #ifdef __mc68020
77 #ifndef __m68k
78 #define __m68k
79 #endif
80 #endif
81 
82 #ifdef m68000
83 #ifndef __m68k
84 #define __m68k
85 #endif
86 #endif
87 
88 #ifdef __mc68000
89 # ifndef __m68k
90 #  define __m68k
91 # endif
92 #endif
93 
94 /*---------------------------------------------------------------------------*/
95 /* ditto for i386 platforms */
96 
97 /* MSDOS only runs on x86s... */
98 
99 #ifdef __MSDOS__
100 #define __i386
101 #endif
102 
103 /* For IBMC... */
104 
105 #ifdef _M_I386
106 #define __i386
107 #endif
108 
109 #ifdef __i386__
110 #ifndef __i386
111 #define __i386
112 #endif
113 #endif
114 
115 /*---------------------------------------------------------------------------*/
116 /* ditto for VAX platforms */
117 
118 #ifdef vax
119 #define __vax__
120 #endif
121 
122 /*---------------------------------------------------------------------------*/
123 /* ditto for PPC platforms */
124 
125 #ifdef __PPC
126 #ifndef _POWER
127 #define _POWER
128 #endif
129 #endif
130 
131 #ifdef __ppc__
132 #ifndef _POWER
133 #define _POWER
134 #endif
135 #endif
136 
137 #ifdef __PPC__
138 # ifndef _POWER
139 #  define _POWER
140 # endif
141 #endif
142 
143 /*---------------------------------------------------------------------------*/
144 /* ditto for ARM platforms */
145 
146 #ifdef __arm__
147 #ifndef __arm
148 #define __arm
149 #endif
150 #endif
151 
152 /*---------------------------------------------------------------------------*/
153 /* If the compiler claims to be ANSI, we surely can use prototypes */
154 
155 #ifdef __STDC__
156 #define __PROTOS__
157 #define UNUSED(x) (void)x
158 #else
159 #define UNUSED(x) {}
160 #endif
161 
162 /*---------------------------------------------------------------------------*/
163 /* just a hack to allow distinguishing SunOS from Solaris on Sparcs... */
164 
165 #ifdef sparc
166 #ifndef __sparc
167 #define __sparc
168 #endif
169 #endif
170 
171 #ifdef __sparc
172 # ifndef __NetBSD__
173 #  ifndef __FreeBSD__
174 #   ifndef __linux__
175 #    ifndef __SVR4
176 #     define __sunos__
177 #    else /* __SVR4 */
178 #     define __solaris__
179 #    endif /* __SVR4 */
180 #   endif /* __linux__ */
181 #  endif /* __FreeBSD__ */
182 # endif /* __NetBSD */
183 #endif /* __sparc */
184 
185 #ifdef __sparc__
186 #ifndef __sparc
187 #define __sparc
188 #endif
189 #endif
190 
191 /*---------------------------------------------------------------------------*/
192 /* similar on Sun 3's... */
193 
194 #ifdef __m68k
195 #ifndef __NetBSD__
196 #ifndef __MUNIX__
197 #ifndef __amiga
198 #define __sunos__
199 #endif
200 #endif
201 #endif
202 #endif
203 
204 /*===========================================================================*/
205 /* 68K platforms */
206 
207 #ifdef __m68k
208 
209 #define ARCHPRNAME "m68k"
210 
211 /*---------------------------------------------------------------------------*/
212 /* SUN/3 with SunOS 4.x:
213 
214    see my SunOS quarrels in the Sparc section... */
215 
216 #ifdef __sunos__
217 #define ARCHSYSNAME "sun-sunos"
218 #define DEFSMADE
219 #define OPENRDMODE "r"
220 #define OPENWRMODE "w"
221 #define OPENUPMODE "r+"
222 #define IEEEFLOAT
223 typedef signed char Integ8;
224 typedef unsigned char Card8;
225 typedef signed short Integ16;
226 typedef unsigned short Card16;
227 #define HAS16
228 typedef signed int Integ32;
229 #define PRIInteg32 "d"
230 typedef unsigned int Card32;
231 #ifdef __GNUC__
232 typedef signed long long Integ64;
233 typedef unsigned long long Card64;
234 #define HAS64
235 #else
236 #define NOLONGLONG
237 #endif
238 #define memmove(s1,s2,len) bcopy(s2,s1,len)
239 extern void bcopy();
240 #define NO_NLS
241 #endif
242 
243 /*---------------------------------------------------------------------------*/
244 /* SUN/3 with NetBSD 1.x:
245 
246    quite a normal 32-Bit-UNIX system */
247 
248 #ifdef __NetBSD__
249 #define ARCHSYSNAME "sun-netbsd"
250 #define DEFSMADE
251 #define OPENRDMODE "r"
252 #define OPENWRMODE "w"
253 #define OPENUPMODE "r+"
254 #define IEEEFLOAT
255 typedef signed char Integ8;
256 typedef unsigned char Card8;
257 typedef signed short Integ16;
258 typedef unsigned short Card16;
259 #define HAS16
260 typedef signed int Integ32;
261 #define PRIInteg32 "d"
262 typedef unsigned int Card32;
263 typedef signed long long Integ64;
264 typedef unsigned long long Card64;
265 #define HAS64
266 #define LOCALE_NLS
267 #endif
268 
269 /*---------------------------------------------------------------------------*/
270 /* PCS/Cadmus:
271 
272    quite a bare system, lots of work required... */
273 
274 #ifdef __MUNIX__
275 #define ARCHSYSNAME "pcs-munix"
276 #define DEFSMADE
277 #define OPENRDMODE "r"
278 #define OPENWRMODE "w"
279 #define OPENUPMODE "r+"
280 #define IEEEFLOAT
281 #define NEEDS_STRSTR
282 typedef char Integ8;
283 typedef unsigned char Card8;
284 typedef short Integ16;
285 typedef unsigned short Card16;
286 #define HAS16
287 typedef int Integ32;
288 #define PRIInteg32 "d"
289 typedef unsigned int Card32;
290 #define NOLONGLONG
291 #define memmove(s1,s2,len) bcopy(s2,s1,len)
292 extern double strtod();
293 extern char *getenv();
294 #define NO_NLS
295 #endif
296 
297 /*---------------------------------------------------------------------------*/
298 /* Linux/68K:
299 
300    quite a normal 32-Bit-UNIX system */
301 
302 #ifdef __linux__
303 #define ARCHSYSNAME "unknown-linux"
304 #define DEFSMADE
305 #define OPENRDMODE "r"
306 #define OPENWRMODE "w"
307 #define OPENUPMODE "r+"
308 #define IEEEFLOAT
309 typedef signed char Integ8;
310 typedef unsigned char Card8;
311 typedef signed short Integ16;
312 typedef unsigned short Card16;
313 #define HAS16
314 typedef signed int Integ32;
315 #define PRIInteg32 "d"
316 typedef unsigned int Card32;
317 typedef signed long long Integ64;
318 typedef unsigned long long Card64;
319 #define HAS64
320 #define NO_NLS
321 #endif
322 
323 #endif /* __m68k */
324 
325 /*===========================================================================*/
326 /* SPARC platforms */
327 
328 #ifdef __sparc
329 
330 #define ARCHPRNAME "sparc"
331 
332 /*---------------------------------------------------------------------------*/
333 /* SUN Sparc with SunOS 4.1.x:
334 
335    don't try cc, use gcc, it's hopeless without an ANSI-compliant compiler...
336    SunOS does have NLS support, but it does not have D_FMT and T_FMT
337    I should change this ...
338    Though the manual pages claim that memmove and atexit exist, I could not
339    find them in any library :-(  Fortunately, bcopy claims to be safe for
340    overlapping arrays, we just have to reverse source and destination pointers.
341    The sources themselves contain a switch to use on_exit instead of atexit
342    (it uses a different callback scheme, so we cannot just make a #define here...)
343    To get rid of most of the messages about missing prototypes, add
344    -D__USE_FIXED_PROTOTYPES__ to your compiler flags!
345    Apart from these few points, one could claim SunOS to be quite a normal
346    32-bit-UNIX... */
347 
348 #ifdef __sunos__
349 #define ARCHSYSNAME "sun-sunos"
350 #define DEFSMADE
351 #define OPENRDMODE "r"
352 #define OPENWRMODE "w"
353 #define OPENUPMODE "r+"
354 #define IEEEFLOAT
355 typedef signed char Integ8;
356 typedef unsigned char Card8;
357 typedef signed short Integ16;
358 typedef unsigned short Card16;
359 #define HAS16
360 typedef signed int Integ32;
361 #define PRIInteg32 "d"
362 typedef unsigned int Card32;
363 #ifdef __GNUC__
364 typedef signed long long Integ64;
365 typedef unsigned long long Card64;
366 #define HAS64
367 #else
368 #define NOLONGLONG
369 #endif
370 #define fpos_t long
371 #ifdef __STDC__
372 extern void bcopy();
373 #endif
374 #define memmove(s1,s2,len) bcopy(s2,s1,len)
375 #define NO_NLS
376 #endif
377 
378 /*---------------------------------------------------------------------------*/
379 /* SUN Sparc with Solaris 2.x:
380 
381    quite a normal 32-Bit-UNIX system */
382 
383 #ifdef __solaris__
384 #define ARCHSYSNAME "sun-solaris"
385 #define DEFSMADE
386 #define OPENRDMODE "r"
387 #define OPENWRMODE "w"
388 #define OPENUPMODE "r+"
389 #define IEEEFLOAT
390 typedef signed char Integ8;
391 typedef unsigned char Card8;
392 typedef signed short Integ16;
393 typedef unsigned short Card16;
394 #define HAS16
395 typedef signed int Integ32;
396 #define PRIInteg32 "d"
397 typedef unsigned int Card32;
398 typedef signed long long Integ64;
399 typedef unsigned long long Card64;
400 #define HAS64
401 #define LOCALE_NLS
402 #endif
403 
404 /*---------------------------------------------------------------------------*/
405 /* Sparc with NetBSD 1.x:
406 
407    quite a normal 32-Bit-UNIX system */
408 
409 #ifdef __NetBSD__
410 #define ARCHSYSNAME "sun-netbsd"
411 #define DEFSMADE
412 #define OPENRDMODE "r"
413 #define OPENWRMODE "w"
414 #define OPENUPMODE "r+"
415 #define IEEEFLOAT
416 typedef signed char Integ8;
417 typedef unsigned char Card8;
418 typedef signed short Integ16;
419 typedef unsigned short Card16;
420 #define HAS16
421 typedef signed int Integ32;
422 #define PRIInteg32 "d"
423 typedef unsigned int Card32;
424 typedef signed long long Integ64;
425 typedef unsigned long long Card64;
426 #define HAS64
427 #define LOCALE_NLS
428 #endif
429 
430 /*---------------------------------------------------------------------------*/
431 /* Sparc with Linux                                                          */
432 
433 #ifdef __linux__
434 #define ARCHSYSNAME "unknown-linux"
435 #define DEFSMADE
436 #define OPENRDMODE "r"
437 #define OPENWRMODE "w"
438 #define OPENUPMODE "r+"
439 #define IEEEFLOAT
440 typedef signed char Integ8;
441 typedef unsigned char Card8;
442 typedef signed short Integ16;
443 typedef unsigned short Card16;
444 #define HAS16
445 typedef signed int Integ32;
446 #define PRIInteg32 "d"
447 typedef unsigned int Card32;
448 typedef signed long long Integ64;
449 typedef unsigned long long Card64;
450 #define HAS64
451 #define LOCALE_NLS
452 #endif
453 
454 #endif /* __sparc */
455 
456 /*===========================================================================*/
457 /* Mips platforms */
458 
459 #ifdef __mips
460 
461 #define ARCHPRNAME "mips"
462 
463 /*---------------------------------------------------------------------------*/
464 /* R3000 with Ultrix 4.3:
465 
466    nl_langinfo prototype is there, but no function in library ?!
467    use long long only if you have gcc, c89 doesn't like them !
468    cc isn't worth trying, believe me! */
469 
470 #ifdef __ultrix
471 #define ARCHSYSNAME "dec-ultrix"
472 #define DEFSMADE
473 #define OPENRDMODE "r"
474 #define OPENWRMODE "w"
475 #define OPENUPMODE "r+"
476 #define IEEEFLOAT
477 #define NEEDS_STRDUP
478 typedef signed char Integ8;
479 typedef unsigned char Card8;
480 typedef signed short Integ16;
481 typedef unsigned short Card16;
482 #define HAS16
483 typedef signed int Integ32;
484 #define PRIInteg32 "d"
485 typedef unsigned int Card32;
486 #ifdef __GNUC__
487 typedef signed long long Integ64;
488 typedef unsigned long long Card64;
489 #define HAS64
490 #else
491 #define NOLONGLONG
492 #endif
493 #define NO_NLS
494 #endif
495 
496 /*---------------------------------------------------------------------------*/
497 /* R2000/3000 with NetBSD 1.2:
498 
499    quite a normal 32-Bit-UNIX system */
500 
501 #ifdef __NetBSD__
502 #define ARCHSYSNAME "dec-netbsd"
503 #define DEFSMADE
504 #define OPENRDMODE "r"
505 #define OPENWRMODE "w"
506 #define OPENUPMODE "r+"
507 #define IEEEFLOAT
508 typedef signed char Integ8;
509 typedef unsigned char Card8;
510 typedef signed short Integ16;
511 typedef unsigned short Card16;
512 #define HAS16
513 typedef signed int Integ32;
514 #define PRIInteg32 "d"
515 typedef unsigned int Card32;
516 typedef signed long long Integ64;
517 typedef unsigned long long Card64;
518 #define HAS64
519 #define LOCALE_NLS
520 #endif
521 
522 /*---------------------------------------------------------------------------*/
523 /* R3000/4x00 with Irix 5.x:
524 
525   quite a normal 32-Bit-UNIX system
526   seems also to work with 6.2... */
527 
528 #ifdef __sgi
529 #define ARCHSYSNAME "sgi-irix"
530 #define DEFSMADE
531 #define OPENRDMODE "r"
532 #define OPENWRMODE "w"
533 #define OPENUPMODE "r+"
534 #define IEEEFLOAT
535 typedef signed char Integ8;
536 typedef unsigned char Card8;
537 typedef signed short Integ16;
538 typedef unsigned short Card16;
539 #define HAS16
540 typedef signed int Integ32;
541 #define PRIInteg32 "d"
542 typedef unsigned int Card32;
543 typedef signed long long Integ64;
544 typedef unsigned long long Card64;
545 #define HAS64
546 #define LOCALE_NLS
547 #endif
548 
549 #ifdef __linux__
550 #define ARCHSYSNAME "unknown-linux"
551 #define DEFSMADE
552 #define OPENRDMODE "r"
553 #define OPENWRMODE "w"
554 #define OPENUPMODE "r+"
555 #define IEEEFLOAT
556 typedef signed char Integ8;
557 typedef unsigned char Card8;
558 typedef signed short Integ16;
559 typedef unsigned short Card16;
560 #define HAS16
561 typedef signed int Integ32;
562 #define PRIInteg32 "d"
563 typedef unsigned int Card32;
564 typedef signed long long Integ64;
565 typedef unsigned long long Card64;
566 #define HAS64
567 #define LOCALE_NLS
568 #endif
569 
570 #endif /* __mips */
571 
572 /*===========================================================================*/
573 /* HP-PA platforms */
574 
575 #ifdef __hppa
576 
577 #define ARCHPRNAME "parisc"
578 
579 /*---------------------------------------------------------------------------*/
580 /* HP-PA 1.x with HP-UX: */
581 
582 #ifdef __hpux
583 #define ARCHSYSNAME "hp-hpux"
584 #define DEFSMADE
585 #define OPENRDMODE "r"
586 #define OPENWRMODE "w"
587 #define OPENUPMODE "r+"
588 #define IEEEFLOAT
589 typedef signed char Integ8;
590 typedef unsigned char Card8;
591 typedef signed short Integ16;
592 typedef unsigned short Card16;
593 #define HAS16
594 typedef signed int Integ32;
595 #define PRIInteg32 "d"
596 typedef unsigned int Card32;
597 typedef signed long long Integ64;
598 typedef unsigned long long Card64;
599 #define HAS64
600 #define LOCALE_NLS
601 #endif
602 
603 #endif /* __hppa */
604 
605 /*===========================================================================*/
606 /* POWER platforms */
607 
608 #ifdef _POWER
609 
610 #define ARCHPRNAME "ppc"
611 
612 /*---------------------------------------------------------------------------*/
613 /* POWER with AIX 4.1: rs6000 */
614 
615 #ifdef _AIX
616 #define ARCHSYSNAME "ibm-aix"
617 #define DEFSMADE
618 #define OPENRDMODE "r"
619 #define OPENWRMODE "w"
620 #define OPENUPMODE "r+"
621 #define IEEEFLOAT
622 typedef signed char Integ8;
623 typedef unsigned char Card8;
624 typedef signed short Integ16;
625 typedef unsigned short Card16;
626 #define HAS16
627 typedef signed int Integ32;
628 #define PRIInteg32 "d"
629 typedef unsigned int Card32;
630 typedef signed long long Integ64;
631 typedef unsigned long long Card64;
632 #define HAS64
633 #define LOCALE_NLS
634 #endif
635 
636 /*---------------------------------------------------------------------------*/
637 /* POWER with Linux (Macintosh) */
638 
639 #ifdef __linux__
640 #define ARCHSYSNAME "unknown-linux"
641 #define DEFSMADE
642 #define OPENRDMODE "r"
643 #define OPENWRMODE "w"
644 #define OPENUPMODE "r+"
645 #define IEEEFLOAT
646 typedef signed char Integ8;
647 typedef unsigned char Card8;
648 typedef signed short Integ16;
649 typedef unsigned short Card16;
650 #define HAS16
651 typedef signed int Integ32;
652 #define PRIInteg32 "d"
653 typedef unsigned int Card32;
654 typedef signed long long Integ64;
655 typedef unsigned long long Card64;
656 #define HAS64
657 #define LOCALE_NLS
658 #endif
659 
660 /*---------------------------------------------------------------------------*/
661 /* POWER with OSX (Macintosh) */
662 
663 #ifdef __APPLE__
664 #define ARCHSYSNAME "apple-macosx"
665 #define DEFSMADE
666 #define OPENRDMODE "r"
667 #define OPENWRMODE "w"
668 #define OPENUPMODE "r+"
669 #define IEEEFLOAT
670 typedef signed char Integ8;
671 typedef unsigned char Card8;
672 typedef signed short Integ16;
673 typedef unsigned short Card16;
674 #define HAS16
675 typedef signed int Integ32;
676 #define PRIInteg32 "d"
677 typedef unsigned int Card32;
678 typedef signed long long Integ64;
679 typedef unsigned long long Card64;
680 #define HAS64
681 #define NO_NLS
682 #endif
683 
684 #endif /* _POWER */
685 
686 /*===========================================================================*/
687 /* VAX platforms */
688 
689 #ifdef __vax__
690 
691 #define ARCHPRNAME "vax"
692 
693 /*---------------------------------------------------------------------------*/
694 /* VAX with Ultrix: */
695 
696 #ifdef ultrix
697 #define ARCHSYSNAME "dec-ultrix"
698 #define DEFSMADE
699 #define OPENRDMODE "r"
700 #define OPENWRMODE "w"
701 #define OPENUPMODE "r+"
702 #define VAXFLOAT
703 #define NEEDS_STRDUP
704 #define BKOKEN_SPRINTF
705 typedef signed char Integ8;
706 typedef unsigned char Card8;
707 typedef signed short Integ16;
708 typedef unsigned short Card16;
709 #define HAS16
710 typedef signed int Integ32;
711 #define PRIInteg32 "d"
712 typedef unsigned int Card32;
713 #define NOLONGLONG
714 #define NO_NLS
715 #endif
716 
717 /*---------------------------------------------------------------------------*/
718 /* VAX with NetBSD 1.x:
719 
720    quite a normal 32-Bit-UNIX system - apart from the float format... */
721 
722 #ifdef __NetBSD__
723 #define ARCHSYSNAME "vax-netbsd"
724 #define DEFSMADE
725 #define OPENRDMODE "r"
726 #define OPENWRMODE "w"
727 #define OPENUPMODE "r+"
728 #define VAXFLOAT
729 typedef signed char Integ8;
730 typedef unsigned char Card8;
731 typedef signed short Integ16;
732 typedef unsigned short Card16;
733 #define HAS16
734 typedef signed int Integ32;
735 #define PRIInteg32 "d"
736 typedef unsigned int Card32;
737 typedef signed long long Integ64;
738 typedef unsigned long long Card64;
739 #define HAS64
740 #define LOCALE_NLS
741 #endif
742 
743 #endif /* vax */
744 
745 #ifdef __aarch64__
746 
747 #define ARCHPRNAME "aarch64"
748 
749 /*---------------------------------------------------------------------------*/
750 /* AArch64 with Linux and GCC: */
751 
752 #ifdef __linux__
753 #define ARCHSYSNAME "unknown-linux"
754 #define DEFSMADE
755 #define OPENRDMODE "r"
756 #define OPENWRMODE "w"
757 #define OPENUPMODE "r+"
758 #define IEEEFLOAT
759 typedef signed char Integ8;
760 typedef unsigned char Card8;
761 typedef signed short Integ16;
762 typedef unsigned short Card16;
763 #define HAS16
764 typedef signed int Integ32;
765 #define PRIInteg32 "d"
766 typedef unsigned int Card32;
767 typedef signed long Integ64;
768 typedef unsigned long Card64;
769 #define HAS64
770 #define LOCALE_NLS
771 #endif
772 
773 #endif /* __aarch64__ */
774 
775 /*===========================================================================*/
776 /* DEC Alpha platforms */
777 
778 #ifdef __alpha
779 
780 #define ARCHPRNAME "alpha"
781 
782 /*---------------------------------------------------------------------------*/
783 /* DEC Alpha with Digital UNIX and DEC C / GCC:
784 
785    Alpha is a 64 bit machine, so we do not need to use extra longs
786    OSF has full NLS support */
787 
788 #ifdef __osf__
789 #define ARCHSYSNAME "dec-osf"
790 #define DEFSMADE
791 #define OPENRDMODE "r"
792 #define OPENWRMODE "w"
793 #define OPENUPMODE "r+"
794 #define IEEEFLOAT
795 typedef signed char Integ8;
796 typedef unsigned char Card8;
797 typedef signed short Integ16;
798 typedef unsigned short Card16;
799 #define HAS16
800 typedef signed int Integ32;
801 #define PRIInteg32 "d"
802 typedef unsigned int Card32;
803 typedef signed long Integ64;
804 typedef unsigned long Card64;
805 #define HAS64
806 #define LOCALE_NLS
807 #endif
808 
809 /*---------------------------------------------------------------------------*/
810 /* DEC Alpha with Linux and GCC:
811 
812    see OSF... */
813 
814 #ifdef __linux__
815 #define ARCHSYSNAME "unknown-linux"
816 #define DEFSMADE
817 #define OPENRDMODE "r"
818 #define OPENWRMODE "w"
819 #define OPENUPMODE "r+"
820 #define IEEEFLOAT
821 typedef signed char Integ8;
822 typedef unsigned char Card8;
823 typedef signed short Integ16;
824 typedef unsigned short Card16;
825 #define HAS16
826 typedef signed int Integ32;
827 #define PRIInteg32 "d"
828 typedef unsigned int Card32;
829 typedef signed long Integ64;
830 typedef unsigned long Card64;
831 #define HAS64
832 #define LOCALE_NLS
833 #endif
834 
835 /*---------------------------------------------------------------------------*/
836 /* DEC Alpha with NetBSD and GCC:
837 
838    see OSF... */
839 
840 #ifdef __NetBSD__
841 #define ARCHSYSNAME "unknown-netbsd"
842 #define DEFSMADE
843 #define OPENRDMODE "r"
844 #define OPENWRMODE "w"
845 #define OPENUPMODE "r+"
846 #define IEEEFLOAT
847 typedef signed char Integ8;
848 typedef unsigned char Card8;
849 typedef signed short Integ16;
850 typedef unsigned short Card16;
851 #define HAS16
852 typedef signed int Integ32;
853 #define PRIInteg32 "d"
854 typedef unsigned int Card32;
855 typedef signed long Integ64;
856 typedef unsigned long Card64;
857 #define HAS64
858 #define LOCALE_NLS
859 #endif
860 
861 #ifdef __FreeBSD__
862 #define ARCHSYSNAME "unknown-freebsd"
863 #define DEFSMADE
864 #define OPENRDMODE "r"
865 #define OPENWRMODE "w"
866 #define OPENUPMODE "r+"
867 #define IEEEFLOAT
868 typedef int8_t Integ8;
869 typedef uint8_t Card8;
870 typedef int16_t Integ16;
871 typedef uint16_t Card16;
872 #define HAS16
873 typedef uint32_t Integ32;
874 #define PRIInteg32 PRId
875 typedef uint32_t Card32;
876 typedef int64_t Integ64;
877 typedef uint65_t Card64;
878 #define HAS64
879 #define NO_NLS
880 #endif
881 
882 #endif /* __alpha */
883 
884 /*===========================================================================*/
885 /* Intel i386 platforms */
886 
887 #ifdef __i386
888 
889 #define ARCHPRNAME "i386"
890 
891 /*---------------------------------------------------------------------------*/
892 /* Intel i386 with NetBSD 1. and GCC: (tested on 1.5.3)
893 
894    principally, a normal 32-bit UNIX */
895 
896 #ifdef __NetBSD__
897 #define ARCHSYSNAME "i386-netbsd"
898 #define DEFSMADE
899 #define OPENRDMODE "r"
900 #define OPENWRMODE "w"
901 #define OPENUPMODE "r+"
902 #define IEEEFLOAT
903 typedef signed char Integ8;
904 typedef unsigned char Card8;
905 typedef signed short Integ16;
906 typedef unsigned short Card16;
907 #define HAS16
908 typedef signed int Integ32;
909 #define PRIInteg32 "d"
910 typedef unsigned int Card32;
911 typedef signed long long Integ64;
912 typedef unsigned long long Card64;
913 #define HAS64
914 #define LOCALE_NLS
915 #endif
916 
917 /*---------------------------------------------------------------------------*/
918 /* Intel i386 with Linux and GCC:
919 
920    principally, a normal 32-bit *NIX */
921 
922 #ifdef __linux__
923 
924 /* no long long data type if C89 is used */
925 
926 #if (defined __STDC__) && (!defined __STDC_VERSION__)
927 # define NOLONGLONG
928 #endif
929 
930 #define ARCHSYSNAME "unknown-linux"
931 #define DEFSMADE
932 #define OPENRDMODE "r"
933 #define OPENWRMODE "w"
934 #define OPENUPMODE "r+"
935 #define IEEEFLOAT
936 typedef signed char Integ8;
937 typedef unsigned char Card8;
938 typedef signed short Integ16;
939 typedef unsigned short Card16;
940 #define HAS16
941 typedef signed int Integ32;
942 #define PRIInteg32 "d"
943 typedef unsigned int Card32;
944 #ifndef NOLONGLONG
945 typedef signed long long Integ64;
946 typedef unsigned long long Card64;
947 #define HAS64
948 #endif /* !NOLONGLONG */
949 #define LOCALE_NLS
950 #endif
951 
952 /*---------------------------------------------------------------------------*/
953 /* Intel i386 with FreeBSD and GCC:
954 
955    principally, a normal 32-bit *NIX */
956 
957 #ifdef __FreeBSD__
958 #define ARCHSYSNAME "unknown-freebsd"
959 #define DEFSMADE
960 #define OPENRDMODE "r"
961 #define OPENWRMODE "w"
962 #define OPENUPMODE "r+"
963 #define IEEEFLOAT
964 typedef signed char Integ8;
965 typedef unsigned char Card8;
966 typedef signed short Integ16;
967 typedef unsigned short Card16;
968 #define HAS16
969 typedef signed int Integ32;
970 #define PRIInteg32 "d"
971 typedef unsigned int Card32;
972 typedef signed long long Integ64;
973 typedef unsigned long long Card64;
974 #define HAS64
975 #define NO_NLS
976 #endif
977 
978 /*---------------------------------------------------------------------------*/
979 /* Intel i386 with Darwin and GCC:
980    principally, a normal 32-bit *NIX */
981 
982 #ifdef __APPLE__
983 #define ARCHSYSNAME "apple-osx"
984 #define DEFSMADE
985 #define OPENRDMODE "r"
986 #define OPENWRMODE "w"
987 #define OPENUPMODE "r+"
988 #define IEEEFLOAT
989 typedef signed char Integ8;
990 typedef unsigned char Card8;
991 typedef signed short Integ16;
992 typedef unsigned short Card16;
993 #define HAS16
994 typedef signed int Integ32;
995 #define PRIInteg32 "d"
996 typedef unsigned int Card32;
997 typedef signed long long Integ64;
998 typedef unsigned long long Card64;
999 #define HAS64
1000 #define LOCALE_NLS
1001 #endif
1002 
1003 /*---------------------------------------------------------------------------*/
1004 /* Intel i386 with WIN32 and Cygnus GCC:
1005 
1006    well, not really a UNIX... */
1007 
1008 #ifdef _WIN32
1009 
1010 /* no long long data type if C89 is used */
1011 
1012 #if (defined __STDC__) && (!defined __STDC_VERSION__)
1013 # define NOLONGLONG
1014 #endif
1015 
1016 #define ARCHSYSNAME "unknown-win32"
1017 #define DEFSMADE
1018 #define OPENRDMODE "rb"
1019 #define OPENWRMODE "wb"
1020 #define OPENUPMODE "rb+"
1021 #define IEEEFLOAT
1022 #define SLASHARGS
1023 #define PATHSEP '\\'
1024 #define SPATHSEP "\\"
1025 #define DIRSEP ';'
1026 #define SDIRSEP ";"
1027 #define DRSEP ':'
1028 #define SDRSEP ":"
1029 #define NULLDEV "NUL"
1030 typedef signed char Integ8;
1031 typedef unsigned char Card8;
1032 typedef signed short Integ16;
1033 typedef unsigned short Card16;
1034 #define HAS16
1035 typedef signed int Integ32;
1036 #define PRIInteg32 "d"
1037 typedef unsigned int Card32;
1038 #ifndef NOLONGLONG
1039 typedef signed long long Integ64;
1040 typedef unsigned long long Card64;
1041 # define HAS64
1042 #endif
1043 #define W32_NLS
1044 #endif
1045 
1046 /*---------------------------------------------------------------------------*/
1047 /* Intel i386 with OS/2 and emx-GCC:
1048 
1049    well, not really a UNIX... */
1050 
1051 #ifdef __EMX__
1052 #define ARCHSYSNAME "unknown-os2"
1053 #define DEFSMADE
1054 #define OPENRDMODE "rb"
1055 #define OPENWRMODE "wb"
1056 #define OPENUPMODE "rb+"
1057 #define IEEEFLOAT
1058 #define SLASHARGS
1059 #define PATHSEP '\\'
1060 #define SPATHSEP "\\"
1061 #define DIRSEP ';'
1062 #define SDIRSEP ";"
1063 #define DRSEP ':'
1064 #define SDRSEP ":"
1065 #define NULLDEV "NUL"
1066 typedef signed char Integ8;
1067 typedef unsigned char Card8;
1068 typedef signed short Integ16;
1069 typedef unsigned short Card16;
1070 #define HAS16
1071 typedef signed int Integ32;
1072 #define PRIInteg32 "d"
1073 typedef unsigned int Card32;
1074 typedef signed long long Integ64;
1075 typedef unsigned long long Card64;
1076 #define HAS64
1077 #define OS2_NLS
1078 #endif
1079 
1080 /*---------------------------------------------------------------------------*/
1081 /* Intel i386 with OS/2 and IBMC:
1082 
1083 well, not really a UNIX... */
1084 
1085 #ifdef __IBMC__
1086 #define DEFSMADE
1087 #define NODUP
1088 #define OPENRDMODE "rb"
1089 #define OPENWRMODE "wb"
1090 #define OPENUPMODE "rb+"
1091 #define IEEEFLOAT
1092 #define SLASHARGS
1093 #define PATHSEP '\\'
1094 #define SPATHSEP "\\"
1095 #define DRSEP ':'
1096 #define SDRSEP ":"
1097 #define NULLDEV "NUL"
1098 typedef signed char Integ8;
1099 typedef unsigned char Card8;
1100 typedef signed short Integ16;
1101 typedef unsigned short Card16;
1102 #define HAS16
1103 typedef signed int Integ32;
1104 #define PRIInteg32 "d"
1105 typedef unsigned int Card32;
1106 #define NOLONGLONG
1107 #define OS2_NLS
1108 #endif
1109 
1110 /*---------------------------------------------------------------------------*/
1111 /* Intel x86 with MS-DOS and Borland-C:
1112 
1113    well, not really a UNIX...
1114    assure we get a usable memory model */
1115 
1116 #ifdef __MSDOS__
1117 #ifdef __TURBOC__
1118 #ifndef __LARGE__
1119 #error Wrong memory model - use large!
1120 #endif
1121 #undef ARCHPRNAME
1122 #ifdef __DPMI16__
1123 #define ARCHPRNAME "i286"
1124 #define ARCHSYSNAME "unknown-dpmi"
1125 #else
1126 #define ARCHPRNAME "i86"
1127 #define ARCHSYSNAME "unknown-msdos"
1128 #endif
1129 #define CKMALLOC
1130 #define HEAPRESERVE 4096
1131 #define DEFSMADE
1132 #define OPENRDMODE "rb"
1133 #define OPENWRMODE "wb"
1134 #define OPENUPMODE "rb+"
1135 #define IEEEFLOAT
1136 #define SLASHARGS
1137 #define PATHSEP '\\'
1138 #define SPATHSEP "\\"
1139 #define DIRSEP ';'
1140 #define SDIRSEP ";"
1141 #define DRSEP ':'
1142 #define SDRSEP ":"
1143 #define NULLDEV "NUL"
1144 typedef signed char Integ8;
1145 typedef unsigned char Card8;
1146 typedef signed short Integ16;
1147 typedef unsigned short Card16;
1148 #define HAS16
1149 typedef signed long Integ32;
1150 #define PRIInteg32 "ld"
1151 typedef unsigned long Card32;
1152 #define NOLONGLONG
1153 #define DOS_NLS
1154 #define __PROTOS__
1155 #undef UNUSED
1156 #define UNUSED(x) (void)x
1157 #endif
1158 #endif
1159 
1160 #endif /* __i386 */
1161 
1162 
1163 /*===========================================================================*/
1164 /* Intel x86_64 platforms */
1165 
1166 #if  (defined __k8__) || (defined __x86_64) || (defined __x86_64__)
1167 
1168 #define ARCHPRNAME "x86_64"
1169 
1170 /*---------------------------------------------------------------------------*/
1171 /* x86-64/amd64 with Linux/FreeBSD, OSX and GCC:
1172 
1173    Principally, a normal *NIX. */
1174 
1175 #if defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__)
1176 
1177 /* no long long data type if C89 is used */
1178 
1179 #if (defined __STDC__) && (!defined __STDC_VERSION__)
1180 # define NOLONGLONG
1181 #endif
1182 
1183 #ifdef __linux__
1184 #define ARCHSYSNAME "unknown-linux"
1185 #elif defined __FreeBSD__
1186 #define ARCHSYSNAME "unknown-freebsd"
1187 #else
1188 #define ARCHSYSNAME "apple-osx"
1189 #endif
1190 
1191 #define DEFSMADE
1192 #define OPENRDMODE "r"
1193 #define OPENWRMODE "w"
1194 #define OPENUPMODE "r+"
1195 #define IEEEFLOAT
1196 typedef signed char Integ8;
1197 typedef unsigned char Card8;
1198 typedef signed short Integ16;
1199 typedef unsigned short Card16;
1200 #define HAS16
1201 typedef signed int Integ32;
1202 #define PRIInteg32 "d"
1203 typedef unsigned int Card32;
1204 typedef signed long Integ64;
1205 typedef unsigned long Card64;
1206 #define HAS64
1207 #define LOCALE_NLS
1208 
1209 #endif /* __linux__ || __FreeBSD__ || __APPLE__ */
1210 
1211 /*---------------------------------------------------------------------------*/
1212 /* Intel i386 with WIN32 and MinGW:
1213 
1214    Well, not really a UNIX...note that in contrast to Unix-like systems,
1215    the size of 'long' remains 32 bit.  One still has to use 'long long' to
1216    get 64 bits. */
1217 
1218 #ifdef _WIN32
1219 
1220 /* no long long data type if C89 is used */
1221 
1222 #if (defined __STDC__) && (!defined __STDC_VERSION__)
1223 # define NOLONGLONG
1224 #endif
1225 
1226 #define ARCHSYSNAME "unknown-win64"
1227 #define DEFSMADE
1228 #define OPENRDMODE "rb"
1229 #define OPENWRMODE "wb"
1230 #define OPENUPMODE "rb+"
1231 #define IEEEFLOAT
1232 #define SLASHARGS
1233 #define PATHSEP '\\'
1234 #define SPATHSEP "\\"
1235 #define DIRSEP ';'
1236 #define SDIRSEP ";"
1237 #define DRSEP ':'
1238 #define SDRSEP ":"
1239 #define NULLDEV "NUL"
1240 typedef signed char Integ8;
1241 typedef unsigned char Card8;
1242 typedef signed short Integ16;
1243 typedef unsigned short Card16;
1244 #define HAS16
1245 typedef signed int Integ32;
1246 #define PRIInteg32 "d"
1247 typedef unsigned int Card32;
1248 #ifndef NOLONGLONG
1249 typedef signed long long Integ64;
1250 typedef unsigned long long Card64;
1251 # define HAS64
1252 #endif
1253 #define NO_NLS
1254 
1255 #endif /* _WIN32 */
1256 
1257 #endif /* __k8__ || __x86_64 || __x86_64__ */
1258 
1259 /*===========================================================================*/
1260 /* ARM platform */
1261 
1262 #ifdef __arm
1263 
1264 #define ARCHPRNAME "arm"
1265 
1266 /*---------------------------------------------------------------------------*/
1267 /* ARM linux with GCC */
1268 
1269 #ifdef __linux__
1270 #define ARCHSYSNAME "unknown-linux-arm"
1271 #define DEFSMADE
1272 #define OPENRDMODE "r"
1273 #define OPENWRMODE "w"
1274 #define OPENUPMODE "r+"
1275 #define IEEEFLOAT
1276 typedef signed char Integ8;
1277 typedef unsigned char Card8;
1278 typedef signed short Integ16;
1279 typedef unsigned short Card16;
1280 #define HAS16
1281 typedef signed int Integ32;
1282 #define PRIInteg32 "d"
1283 typedef unsigned int Card32;
1284 typedef signed long long Integ64;
1285 typedef unsigned long long Card64;
1286 #define HAS64
1287 #define LOCALE_NLS
1288 #endif /* __linux__ */
1289 
1290 /*---------------------------------------------------------------------------*/
1291 /* Psion PDA (ARM cpu) with SymbianOS Epoc32 rel.5 and installed epocemx-GCC:
1292 
1293    well, not really a UNIX... */
1294 
1295 #ifdef __EPOC32__
1296 
1297 #ifdef __EPOCEMX__
1298 #define ARCHSYSNAME "psion-epoc32-epocemx"
1299 #define DEFSMADE
1300 #define OPENRDMODE "r"
1301 #define OPENWRMODE "w"
1302 #define OPENUPMODE "r+"
1303 #define IEEEFLOAT
1304 typedef signed char Integ8;
1305 typedef unsigned char Card8;
1306 typedef signed short Integ16;
1307 typedef unsigned short Card16;
1308 #define HAS16
1309 typedef signed int Integ32;
1310 #define PRIInteg32 "d"
1311 typedef unsigned int Card32;
1312 typedef signed long long Integ64;
1313 typedef unsigned long long Card64;
1314 #define HAS64
1315 #define NO_NLS
1316 #endif /* __EPOCEMX__ */
1317 
1318 
1319 #endif /* __EPOC32__ */
1320 
1321 #endif /* __arm */
1322 
1323 /*===========================================================================*/
1324 /* Misc... */
1325 
1326 /*---------------------------------------------------------------------------*/
1327 /* Just for curiosity, it won't work without 16 bit int's... */
1328 
1329 #ifdef _CRAYMPP
1330 #define OPENRDMODE "r"
1331 #define OPENWRMODE "w"
1332 #define OPENUPMODE "r+"
1333 #define IEEEFLOAT
1334 typedef signed char Integ8;
1335 typedef unsigned char Card8;
1336 typedef signed short Integ32;
1337 #define PRIInteg32 "d"
1338 typedef unsigned short Card32;
1339 typedef signed int Integ64;
1340 typedef unsigned int Card64;
1341 #define HAS64
1342 #define LOCALE_NLS
1343 #endif
1344 
1345 /*===========================================================================*/
1346 /* Post-Processing: check for definition, add defaults */
1347 
1348 
1349 #ifdef DEFSMADE
1350 #ifndef PATHSEP
1351 #define PATHSEP '/'
1352 #define SPATHSEP "/"
1353 #define DIRSEP ':'
1354 #define SDIRSEP ":"
1355 #endif
1356 #ifndef NULLDEV
1357 #define NULLDEV "/dev/null"
1358 #endif
1359 #else
1360 #error "your platform so far is not included in AS's header files!"
1361 #error "please edit sysdefs.h!"
1362 #endif
1363 
1364 #ifdef CKMALLOC
1365 #define malloc(s) ckmalloc(s)
1366 #define realloc(p,s) ckrealloc(p,s)
1367 
1368 extern void *ckmalloc(size_t s);
1369 
1370 extern void *ckrealloc(void *p, size_t s);
1371 #endif
1372 #endif /* _SYSDEFS_H */
1373