Initial git import
[sxemacs] / 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 /*
30  * everythign is pdump now. --SY
31  * # define UNEXEC "unexsunos4.o"
32  */
33 #undef UNEXEC
34 #endif                          /* NOT_C_CODE */
35
36 #define RUN_TIME_REMAP
37
38 /* these don't matter, but we have to define something to keep
39    sysdep.c from introducing bogus symbols */
40 #define TEXT_START 0
41 #define DATA_START 0
42
43 /* #### XEmacs: #define of SYSTEM_MALLOC removed.  Is this OK?  FSF says:
44
45    In SunOS 4.1, a static function called by tzsetwall reportedly
46    clears the byte just past an eight byte region it mallocs, corrupting
47    GNU malloc's memory pool.  But Sun's malloc doesn't seem to mind. */
48
49 /* XEmacs: additions for proper prototyping. */
50 #ifndef NOT_C_CODE
51 #ifdef __STDC__
52 /* Sun's headers are categorically losing.
53    Mly uses broken-sun.h to get the protos for this, but lcc provides all
54    of the prototypes for the ANSI routines.  So I'm just going to put the
55    protos of the non-ANSI routines that we use here (I guess that would
56    be things that are Posix but not ANSI?)  You're in a maze of twisty
57    little standards, all alike...
58  */
59 /* Since lcc is not going to be heavily used anymore if it ever was, I'm
60    putting broken-sun.h back in. */
61 /* Since Gcc 2.8 appears to have fixed the problem, I'm conditionalizing */
62 /* this ugly hack. */
63
64 #if defined (__GNUC__)
65 #if defined (__GNUC_MINOR__)
66 #if ((__GNUC__ == 2) && (__GNUC_MINOR__ > 7)) || ((__GNUC__ > 2))
67 /* Don't include for gcc 2.8.0*/
68 #else
69 #include "../broken-sun.h"
70 #endif
71
72 #else                           /* __GNUC_MINOR__ is undefined */
73 #include "../broken-sun.h"
74 #endif
75
76 #else
77 /* Not GNU C */
78 #endif
79
80 extern char *strdup();
81 extern char *ttyname(int);
82 extern void tzsetwall(void);
83 extern int getpagesize(void);
84
85 #include <memory.h>
86 #ifdef __SUNPRO_C
87 /* Suppress zillions of warnings from outdated SunOS4 prototypes */
88 /* Bother! Sun can't even get the arg types right. */
89 #include <string.h>
90 #define memset(a,b,c) memset((char*) (a), b, c)
91 #define memcpy(a,b,c) memcpy((char*) (a), (char*) (b), c)
92 #define memcmp(a,b,c) memcmp((char*) (a), (char*) (b), c)
93 #define memchr(a,b,c) memchr((char*) (a), b, c)
94 void *__builtin_alloca(int);
95 #ifdef HAVE_X_WINDOWS
96 #include <X11/Xlib.h>
97 #define XFree(p) XFree((char*)(p))
98 #endif                          /* X Windows */
99 #endif                          /* __SUNPRO_C */
100
101 #endif                          /* __STDC__ */
102
103 # ifdef __GNUC__
104   /* XEmacs addition: */
105   /* gcc has the bug that it claims to conform to the ANSI C standard
106      (which is what setting __STDC__ to 1 means) but does not necessarily
107      provide all of the library routines which the standard requires of a
108      conforming compiler -- such as memmove.  The other Sun ANSI compilers
109      (Sun's acc and Lucid's lcc) do not have this bug. */
110 #  define memmove(to, from, size) bcopy ((char *) (from), (char *) (to), (size))
111 /* We must define mkdir with this arg prototype
112    to match GCC's fixed stat.h.  */
113 #  define MKDIR_PROTOTYPE \
114   int mkdir (const char *dpath, unsigned short dmode)
115 # endif                         /* __GNUC__ */
116
117 #endif                          /* C_CODE */
118
119 #endif                          /* _S_SUNOS4_H_ */