2019-02-18 16:39:39 +00:00
|
|
|
Following is a repost of the public domain 'make' that I posted
|
|
|
|
to net.sources a couple of months ago. I have fixed a few bugs, and
|
|
|
|
added some more features, and the resulting changes amounted to
|
|
|
|
about as much text as the whole program (hence the repost).
|
|
|
|
|
|
|
|
For those that missed the net.sources posting, this is a public domain
|
|
|
|
re-implementation of the UNIX make program. There is no manual included;
|
|
|
|
for documentation, refer to a UNIX manual, or the source.
|
|
|
|
|
|
|
|
Here is a list of the changes made:
|
|
|
|
|
|
|
|
i) If '-' (ignore) or '@' (silent) where used at the start
|
|
|
|
of a command, their effect was not turned off for the following
|
|
|
|
commands.
|
|
|
|
ii) A special target (.SUFFIXES, .PRECIOUS) or a rule (.c.o, .a.o),
|
|
|
|
if first in the file would be taken as the default target.
|
|
|
|
This resulted in error messages like "Don't know how to
|
|
|
|
make .c", because things like .SUFFIXES were being made.
|
|
|
|
This was further complicated by ---
|
|
|
|
iii) Special target lines with no dependents (ie. .SUFFIXES:\n)
|
|
|
|
were not clearing out the existing dependents like
|
|
|
|
they should.
|
|
|
|
iv) Default rules could not be redefined because of the error
|
|
|
|
checking for commands being defined twice. Now you are
|
|
|
|
allowed to define a target beinging with '.', having
|
|
|
|
no dependents with commands.
|
|
|
|
v) The -q option didn't do the time comparison correctly,
|
|
|
|
or clear the variable used to keep track of this. Thus
|
|
|
|
it didn't work very well.
|
|
|
|
vi) The syntax ${..} for macro's supported by UNIX make was
|
|
|
|
not supported.
|
|
|
|
vii) There wuz a couple of spelling errors.
|
|
|
|
viii) When make checked for implicit rules on targets without
|
|
|
|
a suffix, there were problems. (Note: The ~ feature of
|
|
|
|
UNIX make wasn't and still isn't supported)
|
|
|
|
ix) The -n option did not print @ lines like it was supposed to.
|
|
|
|
x) :: added. (See UNIX manual)
|
|
|
|
xi) $? added. (see UNIX manual)
|
|
|
|
|
|
|
|
Hacked further by Ceriel Jacobs to make it work better. Use this "make" to
|
|
|
|
install ACK under Microsoft Xenix V3.2. Some of the makefiles are just too
|
|
|
|
big for the Xenix "make". Strange, they work on a PDP-11 ...
|
|
|
|
|
|
|
|
Made it almost ISO C90 and POSIX portable by Carl Eric Codere, and
|
|
|
|
also made it safer by using correct datatypes on some library calls.
|