These are the MacMach sources.

The MacMach system started as the Berkeley "Tahoe" release.  Besides running
a Mach environment, the other most significant change was converting all of
the sources to compile with the GNU C compiler and assembler.  PCC was not
ported at all.

The MacMach source tree maps exactly to the binary executable tree.  For
example, the source to /usr/bin/sum is /usr/src/usr/bin/sum.  All program
sources are in directories.  The source to /bin/cp is in the directory
/usr/src/bin/cp, not just the single file /usr/src/bin/cp.c.  Also, all man
pages are in the source directory of the thing they describe.  Thus, the
man page for /bin/cp is in /usr/src/bin/cp.

The Makefiles are similar to the original Berkeley versions, except for a
new "install.man" rule to install man pages and a new way of determining
dependency rules.  The Berkeley make was replaced by the version developed
at CMU.  This version allows including of files within a Makefile.  When
"all" is made (the default), a file ".depend" is created in the source
directory which contains the dependencies generated by mkdep.  This allows
system building from an object tree of symbolic links back to a read-only
source tree since the Makefiles themselves are not altered by mkdep.
The Makefiles for gas, bison, sc, sup, patch, xlisp, gdb, kermit, emacs,
uemacs, nethack, moria, gcc, X11 and motif are non-standard.

All Makefiles support the following rules:
make             -- build program and dependency file
make <prog>      -- build program
make install     -- install previously built program to DESTDIR
make install.man -- install manual pages to DESTDIR
make clean       -- remove everything that can be built from source
Note that "make install" does not compile anything.  Some programs compile in
full path names to configuration or data files.  They need to be built with
DESTDIR="".

To compile a Mach 3.0 MacMach from source, do:
cd /usr/src; make
This will create a temporary tree: /usr/tmp/mac2.tmp
This will create an object tree: /usr/tmp/mac2.obj
This will create a binary tree: /usr/tmp/mac2
Systems can then be installed from /usr/tmp/mac2

The /usr/bin/fixit program is used to keep track of checksums for all source
files.  Be sure to update /usr/src/.fixit whenever any changes are made.

THINGS TO DO AS OF 8/5/91

install g++
see /usr/bin/graph for possible as bignum bug
make phantasia stdc compatable
check math.h for -traditional compile
check that gcc bugs are no more
  1) allocating a zero lenght automatic array does not produce a warning
     even if it is dereferenced as an lval
  2) -fno-defer-pop actual parameters are not popped for the last function
     call in a function which contradicts the documentation
cpio -v does not list device files or symbolic links
test sendmail
test uucp
uemacs should use /bin/csh instead of /bin/sh, maybe check /etc/passwd??
cpp should use endian.h to decide byte_msf
inline functions for routed
port /usr/ucb/systat
port /usr/ucb/vlp
fix /usr/bin/efl
xtrek /usr/x11/lib should be /usr/lib/x11
mwm / twm conflicts
xman mwm garbles the title (wrong size for bold font???)
sendmail.cf & uucp
emacs special key/mouse bindings from in side x -- ctrl-shft left mouse button
install Mach 3.0 netmemoryserver

COPYRIGHTS for MacMach --
Most of this system is from the Tahoe release of BSD4.3, other portions come
from CMU/CS contributions.  Some parts come from the Free Software Foundation,
Inc., see /usr/src/X11/COPYRIGHTS for X Window copyrights.  The MacMach
project was initially funded by Apple Computer and then later on by DARPA.

Please send any bug reports, comments, etc.to macmach@andrew.cmu.edu

12/3/91 24-bit compatible kernel tested on:
        16MB fx, macos 7.0
        8MB cx, macos 7.0 32-bit mode
        8MB cx, macos 7.0 24-bit mode
        5MB II, macos 7.0 32-bit mode
        5MB II, macos 7.0 24-bit mode
        5MB SE/30, macos 7.0 24-bit mode
        5MB SE/30, macos 7.0 32-bit mode
        20MB SE/30, macos 6.07
        On the SE/30 and cx, more than 8MB of ram in 32-bit mode will cause
        the kernel to crash.  I think that there is a problem in the way that
        the kernel page maps are set up.
        In order to use the serial ports, use Mach boot init version 1.3 or
        greater.
        See /usr/src/mach_kernel/Makefile to make a 32-bit clean kernel.
