XEmacs 21.2.28 "Hermes".
[chise/xemacs-chise.git.1] / src / s / sunos4-0.h
1 /* Synched up with: FSF 19.31. */
2
3 /* For building XEmacs under SunOS 4.1.* with static libraries. */
4
5 #ifndef _S_SUNOS4_H_
6 #define _S_SUNOS4_H_
7
8 #include "bsd4-2.h"
9
10 #ifndef SUNOS4
11 #define SUNOS4
12 #endif
13
14 #if 0  /* This may have been needed for an earlier version of Sun OS 4.
15           It seems to cause warnings in 4.0.3 and 4.1.  */
16 #define O_NDELAY        FNDELAY /* Non-blocking I/O (4.2 style) */
17 #endif
18
19 #ifdef NOT_C_CODE
20   /* The new sunOS unexec eliminates the need for a custom crt0.o, so we
21      can just let the compiler invoke the linker and don't have to guess
22      what options it might have passed it. */
23 # define ORDINARY_LINK
24 # define START_FILES
25 # define LD_CMD $(CC)
26 # ifndef LD_SWITCH_SYSTEM
27 # define LD_SWITCH_SYSTEM "-Bstatic"
28 # endif
29 # define UNEXEC "unexsunos4.o"
30 #endif /* NOT_C_CODE */
31
32 #define RUN_TIME_REMAP
33
34 /* these don't matter, but we have to define something to keep
35    sysdep.c from introducing bogus symbols */
36 #define TEXT_START 0
37 #define DATA_START 0
38
39 /* #### XEmacs: #define of SYSTEM_MALLOC removed.  Is this OK?  FSF says:
40
41    In SunOS 4.1, a static function called by tzsetwall reportedly
42    clears the byte just past an eight byte region it mallocs, corrupting
43    GNU malloc's memory pool.  But Sun's malloc doesn't seem to mind. */
44
45 /* XEmacs: additions for proper prototyping. */
46 #ifndef NOT_C_CODE
47 #ifdef __STDC__
48 /* Sun's headers are categorically losing.
49    Mly uses broken-sun.h to get the protos for this, but lcc provides all
50    of the prototypes for the ANSI routines.  So I'm just going to put the
51    protos of the non-ANSI routines that we use here (I guess that would
52    be things that are Posix but not ANSI?)  You're in a maze of twisty
53    little standards, all alike...
54  */
55 /* Since lcc is not going to be heavily used anymore if it ever was, I'm
56    putting broken-sun.h back in. */
57 /* Since Gcc 2.8 appears to have fixed the problem, I'm conditionalizing */
58 /* this ugly hack. */
59
60 #if defined (__GNUC__)
61 #if defined (__GNUC_MINOR__)
62 #if ((__GNUC__ == 2) && (__GNUC_MINOR__ > 7)) || ((__GNUC__ > 2))
63 /* Don't include for gcc 2.8.0*/
64 #else
65 #include "../broken-sun.h"
66 #endif
67
68 #else /* __GNUC_MINOR__ is undefined */
69 #include "../broken-sun.h"
70 #endif
71
72 #else
73 /* Not GNU C */
74 #endif
75
76 extern char *strdup ();
77 extern char *ttyname (int);
78 extern void tzsetwall (void);
79 extern int getpagesize (void);
80
81 #include <memory.h>
82 #ifdef __SUNPRO_C
83 /* Suppress zillions of warnings from outdated SunOS4 prototypes */
84 /* Bother! Sun can't even get the arg types right. */
85 #include <string.h>
86 #define memset(a,b,c) memset((char*) (a), b, c)
87 #define memcpy(a,b,c) memcpy((char*) (a), (char*) (b), c)
88 #define memcmp(a,b,c) memcmp((char*) (a), (char*) (b), c)
89 #define memchr(a,b,c) memchr((char*) (a), b, c)
90 void * __builtin_alloca(int);
91 #ifdef HAVE_X_WINDOWS
92 #include <X11/Xlib.h>
93 #define XFree(p) XFree((char*)(p))
94 #endif /* X Windows */
95 #endif /* __SUNPRO_C */
96
97 #endif /* __STDC__ */
98
99 # ifdef __GNUC__
100   /* XEmacs addition: */
101   /* gcc has the bug that it claims to conform to the ANSI C standard
102      (which is what setting __STDC__ to 1 means) but does not necessarily
103      provide all of the library routines which the standard requires of a
104      conforming compiler -- such as memmove.  The other Sun ANSI compilers
105      (Sun's acc and Lucid's lcc) do not have this bug. */
106 #  define memmove(to, from, size) bcopy ((char *) (from), (char *) (to), (size))
107 /* We must define mkdir with this arg prototype
108    to match GCC's fixed stat.h.  */
109 #  define MKDIR_PROTOTYPE \
110   int mkdir (const char *dpath, unsigned short dmode)
111 # endif /* __GNUC__ */
112
113 #endif /* C_CODE */
114
115 #endif /* _S_SUNOS4_H_ */