Make Version 1.6					90-02-08

This is the source for a public domain version of make.  It is very
similar to the `make' provided on Sun systems.  It is compiled with
Microsoft C (5.1) and runs on PCDOS 3.3.  It also compiles and runs on
BSD 4.2 Unix.

Many thanks to Dr. T. Andrews (uunet!cdin-1!cdis-1!tanner)
	       Arend van den Brug (arend@philmds@philnl@mcvax)
	       Jeff Fried (jfried@informix.com)
	       Brian Wilson (island!sun!grenada!dr_unix)
	       Kirk Bailey (bailey@mist.cs.orst)

for pointing out problems and improvements.

I have included a makefile and a (rudimentary) default.mk for BSD Unix.
Updates, additions and corrections are welcomed.  The shar distribution
has the filenames reversed from the ZOO distribution:

	ZOO distribution		shar distribution
	----------------------------    --------------------------
	makefile	makefile.bsd	makefile.dos	makefile
	default.mk	default.bsd	default.dos	default.mk


I'm assuming that the ZOO is used on DOS and the shar on Unix.  If what
you got is not appropriate, rename the appropriate files and make.  For
example, if you got the DOS version on a Unix system:

	mv makefile makefile.dos
	mv makefile.bsd makefile
	mv default.mk default.dos
	mv default.bsd default.mk
	make

Alternatively, you can (probably) just use this following command:

	make -r -f default.bsd -f makefile.bsd
===========================================================================
This is version 1.6.  Here are the changes from 1.5 to 1.6:

     accept and ignore the -b option for backwards compatibility.

     accept and ignore the -- option for compatibility with SCO Xenix.

     set up spawnvp() so that the wait() call works on non-BSD Unix.

     translate "$$" to "$" when doing macro expansion.

     set "$?" to the set of dependents younger than the current target.

     support GnuMake's -W (What If) switch.

     strip quotes from around arguments before spawning a command (DOS).

     emulate inline-stdin redirection ("<<") on DOS by collecting the
     following commands into a temporary file and placing the filename
     on the command line.

===========================================================================
There is a version 1.4 that was submitted to comp.binaries.ibm.pc by
Arend van den Brug.  I have incorporated many of the changes into my
version and called it 1.5.  These are the changes from 1.3 to 1.5:

     support the -k, -S and -q options (see make.man).

     correctly support the $(MAKE) macro.

     allow target lines to end with a semi-colon and a command.

     corrected bugs when allocated strings are over-run.

     added "*?[]()&" to the list of characters that force the use of the
     shell on Unix.

===========================================================================
These are the changes from 1.2 to 1.3:

     don't append shell command lines when encountering multiple targets
     of the same name.  if this is a *special* target (e.g.  .c.obj),
     just override.  otherwise exit with an error.

     flush output before executing the command, so the output comes out
     in the right order when redirecting stdout to a file.

     if a file is supposedly built, but does not exists, use current
     time.

     exit with an error if a target line does not have a ':'.

     don't force a space after "include" in case TAB is used.

     D and F modifiers for Directory and Filename of $@, $<, $*.

     use a dependent file for an implicit rule, if possible.

     allow Makefile as well as makefile, for Unix.

     always print statements when using -n, even if they start with @.

     backquote (`) will force use of a shell, in Unix.

===========================================================================
These are the changes from 1.1 to 1.2:

     ensure command line macros override makefile macros, even as
     makefiles are being read in.

     support time checks correctly on MSDOS directories.

     use MAKEFLAGS macro, and set it up for subordinate makes.

     import environment variables and support -e flag.

     handle `-f -' (i.e.  makefile from stdin) correctly.

     clean up some potential NULL pointer dereferences.

     correct errors in handling nested makes.

     modify tokenizing routine to correctly handle trailing separators.

     the documentation has been re-written

===========================================================================
These are the changes from 1.0 to 1.1:

     modify prerequisite list handling to correctly allow a target to
     appear on multiple target lines.


There is a short story which goes with this offering.  Sometime early in
1988, someone (possibly Dan Grayson) posted copyrighted source for a
`make' to Usenet.  I used it and modified it somewhat, and then lost my
hard disk.  Having found this program to be very useful, I set about
rewriting it from my recollection of the source that I had seen.  I have
asked Rahul (moderator of comp.binaries.ibm.pc) if he could trace the
original submitter, and have also posted a note to the net in c.b.i.p.d,
trying to locate this person.  So far, no trace has been found.  I
really would like to show this source to him (and hopefully have him
agree that it is not the same as his).

I have based my algorithms on this previous source code.  Algorithms are
not copyrightable, so I feel that I have not infringed upon anyone's
rights.  Also, I have acted in good faith trying to trace this person.
I hope that recipients of this code feel the same.  I am releasing this
into the public domain.  You may do anything you wish with it, even
copyright it yourself and try to sell it as your own.  Good luck, and
have fun.

	-greg

Greg Yachuk		  Informix Software Inc., Menlo Park, CA 92025
greggy@informix.com | {uunet,pyramid}!infmx!greggy	(415) 926-6300
