From: cflatter@nrao.edu (Chris Flatters)
Newsgroups: comp.unix.bsd
Subject: GNU emacs for 386BSD
Date: 28 Jul 92 15:52:51 GMT
Reply-To: cflatter@nrao.edu
Organization: NRAO

The following shar file contains the two configuration files required
for GNU emacs 18.58 under 386BSD 0.1 (s-386bsd.h and m-386bsd.h) and a
brief README.  I have assumed that anybody who wants this has read the
GNU emacs INSTALL document.

I didn't know about Pace Willisson's earlier configuration for 386BSD 0.0
when I started this.  This version is organized rather differently than
Pace's and has one improvement --- the load-average function will now work
if emacs is installed with the correct privileges.


# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	README
#	m-386bsd.h
#	s-386bsd.h
#
echo x - README
sed 's/^X//' >README << 'END-of-README'
XThe two files s-386bsd.h and m-386bsd.h configure GNU emacs 18.58 for
X386BSD 0.1.  Copy them to the directory $BUILD/src where $BUILD stands
Xfor the topmost directory of the GNU emacs distribution.  You may then
Xfollow the instructions in the GNU Emacs Installation Guide using
Xs-386bsd.h and m-386bsd.h as the s- and m- files in conf.h.  Note,
Xhowever, that you must edit $BUILD/Makefile changing `/bin/sed' to
X`/usr/bin/sed' before running make.  Also note that you must run the
Xfollowing commands (as root) after installing emacs.
X
Xcd /usr/local/bin	# or wherever the emacs binary was installed
Xchgrp kmem emacs
Xchmod g+s emacs
X
XIf you don't perform this last step then the load-average function
Xwill always return (0 0 0).
X
XNOTES
X
X- Pressing Ctrl-Shift-2 generates `@' rather than C-@ so you will
X  have to change the keyboard mapping for set-mark.  I think that
X  this must be an oddity in the 386BSD keyboard driver.
X
X- There is nothing wrong with the status line.  The termcap database
X  for the console highlights text by changing the colour rather than
X  using inverse video: this looks rather odd if you are used to seeing
X  emacs on monochrome terminals.
X
X- The only substantial difference between m-386bsd.h and m-intel386.h
X  are the macros relating to the load average.  These should probably
X  have been placed in a #ifdef block in m-intel386.h but I dislike
X  #ifdefs.
END-of-README
echo x - m-386bsd.h
sed 's/^X//' >m-386bsd.h << 'END-of-m-386bsd.h'
X/* m- file for 386BSD.
X   Copyright (C) 1987 Free Software Foundation, Inc.
X
XThis file is part of GNU Emacs.
X
XGNU Emacs is free software; you can redistribute it and/or modify
Xit under the terms of the GNU General Public License as published by
Xthe Free Software Foundation; either version 1, or (at your option)
Xany later version.
X
XGNU Emacs is distributed in the hope that it will be useful,
Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
XGNU General Public License for more details.
X
XYou should have received a copy of the GNU General Public License
Xalong with GNU Emacs; see the file COPYING.  If not, write to
Xthe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
X
X
X/* The following three symbols give information on
X the size of various data types.  */
X
X#define SHORTBITS 16		/* Number of bits in a short */
X
X#define INTBITS 32		/* Number of bits in an int */
X
X#define LONGBITS 32		/* Number of bits in a long */
X
X/* i386 is not big-endian: lowest numbered byte is least significant. */
X
X/* #undef BIG_ENDIAN */
X
X/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
X * group of arguments and treat it as an array of the arguments.  */
X
X/* #define NO_ARG_ARRAY */
X
X/* Define WORD_MACHINE if addresses and such have
X * to be corrected before they can be used as byte counts.  */
X
X/* #define WORD_MACHINE */
X
X/* Define how to take a char and sign-extend into an int.
X   On machines where char is signed, this is a no-op.  */
X
X#define SIGN_EXTEND_CHAR(c) (c)
X
X/* Now define a symbol for the cpu type, if your compiler
X   does not define it automatically:
X   Ones defined so far include vax, m68000, ns16000, pyramid,
X   orion, tahoe, APOLLO and many others */
X
X#define INTEL386
X
X/* Use type int rather than a union, to represent Lisp_Object */
X
X#define NO_UNION_TYPE
X
X/* crt0.c, if it is used, should use the i386-bsd style of entry.
X   with no extra dummy args.  On USG and XENIX,
X   NO_REMAP says this isn't used. */
X
X#define CRT0_DUMMIES bogus_fp,
X
X/* crt0.c should define a symbol `start' and do .globl with a dot.  */
X
X#define DOT_GLOBAL_START
X
X/* Data type of load average, as read out of kmem.  */
X#define LOAD_AVE_TYPE unsigned long
X
X/* Convert that into an integer that is 100 for a load average of 1.0  */
X#define LOAD_AVE_CVT(x) ((int)(((double) (x)) * 100.0 / FSCALE))
X  
X/* Define CANNOT_DUMP on machines where unexec does not work.
X   Then the function dump-emacs will not be defined
X   and temacs will do (load "loadup") automatically unless told otherwise.  */
X
X/* #define CANNOT_DUMP */
X
X/* Define VIRT_ADDR_VARIES if the virtual addresses of
X   pure and impure space as loaded can vary, and even their
X   relative order cannot be relied on.
X
X   Otherwise Emacs assumes that text space precedes data space,
X   numerically.  */
X
X/* #define VIRT_ADDR_VARIES */
X
X#define HAVE_ALLOCA
X
X/* If compiling with GCC, let GCC implement alloca.  */
X#if defined(__GNUC__) && !defined(alloca)
X#define alloca(n) __builtin_alloca(n)
X#define HAVE_ALLOCA
X#endif
END-of-m-386bsd.h
echo x - s-386bsd.h
sed 's/^X//' >s-386bsd.h << 'END-of-s-386bsd.h'
X/* Definitions file for GNU Emacs running on 386BSD
X   Copyright (C) 1985, 1986 Free Software Foundation, Inc.
X
XThis file is part of GNU Emacs.
X
XGNU Emacs is free software; you can redistribute it and/or modify
Xit under the terms of the GNU General Public License as published by
Xthe Free Software Foundation; either version 1, or (at your option)
Xany later version.
X
XGNU Emacs is distributed in the hope that it will be useful,
Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
XGNU General Public License for more details.
X
XYou should have received a copy of the GNU General Public License
Xalong with GNU Emacs; see the file COPYING.  If not, write to
Xthe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
X
X
X/*
X *	Define symbols to identify the version of Unix this is.
X *	Define all the symbols that apply correctly.
X */
X
X#ifndef BSD4_3
X#define BSD4_3
X#endif /* BSD4_3 */
X
X#ifndef BSD
X#define BSD
X#endif /* BSD */
X
X/* SYSTEM_TYPE should indicate the kind of system you are using.
X It sets the Lisp variable system-type.  */
X
X#define SYSTEM_TYPE "386BSD"
X
X/* nomultiplejobs should be defined if your system's shell
X does not have "job control" (the ability to stop a program,
X run some other program, then continue the first one).  */
X
X/* #define NOMULTIPLEJOBS */
X
X/* Do not use interrupt_input = 1 by default, because in 4.3
X   we can make noninterrupt input work properly.  */
X
X#undef INTERRUPT_INPUT
X
X/* First pty name is /dev/ptyp0.  */
X
X#define FIRST_PTY_LETTER 'p'
X/*
X *	Define HAVE_TIMEVAL if the system supports the BSD style clock values.
X *	Look in <sys/time.h> for a timeval structure.
X */
X
X#define HAVE_TIMEVAL
X 
X/*
X *	Define HAVE_SELECT if the system supports the `select' system call.
X */
X
X#define HAVE_SELECT
X
X/*
X *	Define HAVE_PTYS if the system supports pty devices.
X */
X
X#define HAVE_PTYS
X
X/* Define HAVE_SOCKETS if system supports 4.2-compatible sockets.  */
X
X#define HAVE_SOCKETS
X
X/*
X *	Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
X *      The 4.2 opendir, etc., library functions.
X */
X
X/* #define NONSYSTEM_DIR_LIBRARY */
X
X/* Define this symbol if your system has the functions bcopy, etc. */
X
X#define BSTRING
X
X/* subprocesses should be defined if you want to
X   have code for asynchronous subprocesses
X   (as used in M-x compile and M-x shell).
X   This is generally OS dependent, and not supported
X   under most USG systems. */
X
X#define subprocesses
X
X/* If your system uses COFF (Common Object File Format) then define the
X   preprocessor symbol "COFF". */
X
X/* #define COFF */
X
X/* define MAIL_USE_FLOCK if the mailer uses flock
X   to interlock access to /usr/spool/mail/$USER.
X   The alternative is that a lock file named
X   /usr/spool/mail/$USER.lock.  */
X
X#define MAIL_USE_FLOCK
X
X/* Define CLASH_DETECTION if you want lock files to be written
X   so that Emacs can tell instantly when you try to modify
X   a file that someone else has modified in his Emacs.  */
X
X#define CLASH_DETECTION
X
X/* We use the Berkeley (and usg5.2.2) interface to nlist.  */
X
X#define NLIST_STRUCT
X
X/* The file containing the kernel's symbol table is called /386bsd.  */
X
X#define KERNEL_FILE "/386bsd"
X
X/* The symbol in the kernel where the load average is found
X   is named _averunnable. */
X
X#define LDAV_SYMBOL "_averunnable"
X
X/* This macro determines the number of bytes waiting to be written
X   in a FILE buffer. */
X
X#define PENDING_OUTPUT_COUNT(FILE) ((FILE)->_p - (FILE)->_bf._base)
X
X/* 386BSD uses GNU C */
X
X#define C_COMPILER gcc -traditional
X
X/* 386BSD stores the termcap database in /usr/share/misc rather than
X   /etc. We use the system termcap library to avoid putting a #ifdef
X   in termcap.c or forcing the user to use TERMCAP. */
X#define LIBS_TERMCAP -ltermcap
END-of-s-386bsd.h
exit