[comp.sys.amiga] Software Distillery Make--A review

walton@ametek.UUCP (Steve Walton) (12/17/86)

For those who neither know nor care what Make is, skip to the next
message now.  This review is >60 lines long.

The Software Distillery is a group of programmers whose creations can
be found on their BBS system at 919-471-6436.  They bill themselves as
"purveyors of the finest in Amiga freeware," a well-deserved label;
these are the people who brought you Amiga Hack, Amiga Kermit, BLINK,
and PopCLI.  Thus, the performance of the Make utility from the SD is
all the more disappointing.

The first thing you'll do once you download MAKE.ARC from the BBS is
read MAKE.DOC, of course.  It turns out to be a copy of the
documentation for the Make utility on Hewlett-Packard's UNIX System
III.  It does not describe the Make program which is in the same
archive, hereafter referred to as SD Make.  For example, the
documentation describes the standard UNIX convention that commands to
be executed by Make appear in the Makefile indented by a single tab.
SD Make rejects such lines as illegal, requiring a leading space
instead.  There are no built-in commands in SD Make (such as how to go
from a C file to an O file);  instead, such commands are supposed to
appear in  the file C:BUILTINS.MAKE.  I found this out the first time I
tried to run SD Make and got a "C:BUILTINS.MAKE:  File not found"
error.  The documentation also does not explain that SD Make requires
the : which denotes a dependency line to have white space on either
side of it;  I was told this by the Sysop of the SD BBS.

I generally use Fred Fish's CC utilities which allow compiling and
linking from a single command line.  CC starts the passes of the
Lattice compiler, for example, by simply doing an Execute("lc1 file.c",
0, 0).  This is standard AmigaDOS usage, but when run from within SD
Make, the system crashes (both version 1.1 and 1.2).  Trial and error
showed that changing the previous statement to Execute("lc1 file.c", 0,
Output()) allowed CC to work, but the two forms should be identical.
Apparently SD Make does some non-standard things when it starts up its
subsidiary commands.  The next bug in SD Make appeared in the programs
handling of macros.  In a large project, it is standard procedure to
define a macro such as OBJS which is a list of all your object files,
for example:

OBJS = a.o b.o

project : $(OBJS)
	ln -o project $(OBJS) -lc

Thus, addition or deletion of object modules from the list need only be
done in one place.  SD Make fails to handle this case properly;  it
jumps to the link (the "ln" command in the example above) even if the
object files don't exist but have to be compiled from C source.

In short, SD Make is so far away from "standard" Make as to be nearly
useless.  I recommend avoiding it.  If you really need and want a Make
utility, you have three options: (1) Buy Lattice's LMK (Lattice MaKe
utility), but read the review in Amazing Computing Issue 8 first! (2)
Buy one of the Aztec C packages which includes their Make (version
3.40, due in January, will have Make in the $299 package). (3) Use a PD
one, of which there are several.  In fact, I've just finished porting
one and will be uploading it to PeopleLink this week, certainly before
December 15.
					Steve Walton

[moderator's note: this came in the next day:]

Yesterday, I posted a negative review of the Software Distillery's make
program.  I had expressed similar thoughts on the SD BBS, and John
Toebes responded to the effect that I was absolutely right, that they
had gotten the program working, mostly, and were now busy with other
projects, but that if the PD Make I've ported is as good as I claim,
the SD might replace theirs with the one I've done.
     In other words, this is something of a long-winded apology for
a premature and somewhat ill-conceived posting.

Stephen Walton			ARPA:	ametek!walton@csvax.caltech.edu
Ametek Computer Research Div.	BITNET:	walton@caltech
610 N. Santa Anita Ave.		UUCP:	...!ucbvax!sun!megatest!ametek!walton
Arcadia, CA 91006 USA
818-445-6811
    The left half of my brain disavows any knowledge of the right half.

news@cit-vax.Caltech.Edu (Usenet netnews) (12/17/86)

Organization : California Institute of Technology
Keywords: 
From: tim@tomcat.Caltech.Edu (Tim Kay)
Path: tomcat!tim

In article <853@ulowell.UUCP> walton@ametek.UUCP (Steve Walton) writes:
>and PopCLI.  Thus, the performance of the Make utility from the SD is
>all the more disappointing.
>
>The first thing you'll do once you download MAKE.ARC from the BBS is
>read MAKE.DOC, of course.  It turns out to be a copy of the
>documentation for the Make utility on Hewlett-Packard's UNIX System
>III.  It does not describe the Make program which is in the same

Isn't the UNIX documentation copyrighted?  Aren't you supposed to
have a UNIX license before you reproduce AT&T's documents?

Timothy L. Kay				tim@csvax.caltech.edu
Department of Computer Science
Caltech, 256-80
Pasadena, CA  91125

dillon@CORY.BERKELEY.EDU (Matt Dillon) (12/18/86)

	Yes, there are quite a few bugs in terms of non-implimented commands,
but there are some good points too:

	-EXTREMELY small... 13K executable.
	-c:builtins.make autoinit file... this is mine:
--------------------------
.c.o:
   lc1 -oram: -icb:include/ -icb:include/lattice/ $<
   lc2 -s -v -o$*.o ram:$*.q
--------------------------

					-Matt

phil@scubed.UUCP (Phil Cohen) (12/18/86)

It is not hard to enhance "cc" to look at the timestamps and
only recompile what is needed.  If you have access to the SDAUG
DevDisk series, the cc distributed there has a -T option that
does this.