diff src/s/sunos4-0.h @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children ac2d302a0011
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/s/sunos4-0.h	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,111 @@
+/* Synched up with: FSF 19.31. */
+
+/* For building XEmacs under SunOS 4.1.* with static libraries. */
+
+#ifndef _S_SUNOS4_H_
+#define _S_SUNOS4_H_
+
+#include "bsd4-2.h"
+
+#ifndef SUNOS4
+#define SUNOS4
+#endif
+
+/* XEmacs addition: */
+#ifndef HAVE_SYS_TIME_H
+#define HAVE_SYS_TIME_H
+#endif
+
+/* XEmacs addition */
+#undef HAVE_UNION_WAIT
+
+#if 0  /* This may have been needed for an earlier version of Sun OS 4.
+	  It seems to cause warnings in 4.0.3 and 4.1.  */
+#define O_NDELAY        FNDELAY /* Non-blocking I/O (4.2 style) */
+#endif
+
+#ifdef NOT_C_CODE
+  /* The new sunOS unexec eliminates the need for a custom crt0.o, so we
+     can just let the compiler invoke the linker and don't have to guess
+     what options it might have passed it. */
+# define ORDINARY_LINK
+# define START_FILES
+# define LD_CMD $(CC)
+# ifndef LD_SWITCH_SYSTEM
+#  ifdef USE_GCC
+/* of course gcc has to take different args than the rest of the universe */
+#   define LD_SWITCH_SYSTEM -static
+#  else
+#   define LD_SWITCH_SYSTEM -Bstatic
+#  endif
+# endif
+# define UNEXEC unexsunos4.o
+#endif
+
+#define RUN_TIME_REMAP
+
+/* these don't matter, but we have to define something to keep
+   sysdep.c from introducing bogus symbols */
+#define TEXT_START 0
+#define DATA_START 0
+
+/* XEmacs change -- Sun CC needs this to default to ANSI */
+#if __SUNPRO_C
+#define C_SWITCH_SYSTEM -Xa
+#endif
+
+/* #### XEmacs: #define of SYSTEM_MALLOC removed.  Is this OK?  FSF says:
+
+   In SunOS 4.1, a static function called by tzsetwall reportedly
+   clears the byte just past an eight byte region it mallocs, corrupting
+   GNU malloc's memory pool.  But Sun's malloc doesn't seem to mind. */
+
+/* XEmacs: additions for proper prototyping. */
+#ifndef NOT_C_CODE
+#ifdef __STDC__
+/* Sun's headers are categorically losing.
+   Mly uses broken-sun.h to get the protos for this, but lcc provides all
+   of the prototypes for the ANSI routines.  So I'm just going to put the
+   protos of the non-ANSI routines that we use here (I guess that would
+   be things that are Posix but not ANSI?)  You're in a maze of twisty
+   little standards, all alike...
+ */
+/* Since lcc is not going to be heavily used anymore if it ever was, I'm
+   putting broken-sun.h back in. */
+#include "broken-sun.h"
+extern char *strdup ();
+extern char *ttyname (int);
+extern void tzsetwall (void);
+extern int getpagesize (void);
+
+#ifndef __SUNPRO_C
+/* Bother! Sun can't even get the arg types right. */
+#include <string.h> /* But we need to include this first because
+		       *sometimes* (i.e. when using SparcWorks) the
+		       correct prototypes are provided. */
+#define memset(ptr, val, size) memset ((char *) ptr, val, size)
+#define memcpy(dest, src, size) \
+  memcpy ((char *) dest, (CONST char *) src, size)
+#define memcmp(src1, src2, size) \
+  memcmp ((CONST char *) src1, (CONST char *) src2, size)
+#endif /* !__SUNPRO_C */
+
+#endif /* __STDC__ */
+
+# ifdef __GNUC__
+  /* XEmacs addition: */
+  /* gcc has the bug that it claims to conform the the ANSI C standard
+     (which is what setting __STDC__ to 1 means) but does not necessarily
+     provide all of the library routines which the standard requires of a
+     conforming compiler -- such as memmove.  The other Sun ANSI compilers
+     (Sun's acc and Lucid's lcc) do not have this bug. */
+#  define memmove(to, from, size) bcopy ((char *) (from), (char *) (to), (size))
+/* We must define mkdir with this arg prototype
+   to match GCC's fixed stat.h.  */
+#  define MKDIR_PROTOTYPE \
+  int mkdir (const char *dpath, unsigned short dmode)
+# endif /* __GNUC__ */
+
+#endif /* !NOT_C_CODE */
+
+#endif /* _S_SUNOS4_H_ */