[net.lang.lisp] 'make'ing Franz LISP

cassidy@fluke.UUCP (Rion Cassidy) (08/08/85)

I am attempting to write a Makefile for a rather large LISP program that
includes about 20 modules whose total size is over 200k.  I have used make for
'c' programs, but LISP is a little different and would appreciate any advice I
can get on 'make'-ing  a LISP program.

It appears that the real problem is that Liszt doesn't link modules together
as does the 'c' compiler, hence no single executable file causing all the
object modules to be tied together.  It does seem to me that the make system
should still work for this sort of situation, however; it just isn't real
obvious how at the moment.

Advice or sample makefiles e-mailed to me hear at Fluke would be greatly
appreciated.


Rion Cassidy @ Fluke

Everett, WA

ted@bcsaic.UUCP (ted jardine) (08/12/85)

In article <881@vax2.fluke.UUCP> cassidy@fluke.UUCP (Rion Cassidy) writes:
>I am attempting to write a Makefile for a rather large LISP program that
>includes about 20 modules whose total size is over 200k.  I have used make for
>'c' programs, but LISP is a little different and would appreciate any advice I
>can get on 'make'-ing  a LISP program.
>
>It appears that the real problem is that Liszt doesn't link modules together
>as does the 'c' compiler, hence no single executable file causing all the
>object modules to be tied together.  It does seem to me that the make system
>should still work for this sort of situation, however; it just isn't real
>obvious how at the moment.
>...

It is relatively straight-forward to get Liszt invoked on each module, as
you point out.  What I have used is a sort of 'trick'.  After listing the
depencies for the total program, let's call it 'abc', the following can be
done:
	abc: xyz.o pqr.o ... def.o
		echo "(progn (load 'xyz) \
			     ...         \
			     (load 'def) \
			     (dumplisp abc) \
		      )" | lisp

The progn expression will be passed via the pipe and appear as stdin content
to Lisp.  Lisp will eval as part of the read-eval-print loop, loading each
of the modules and then writing the lisp environment to the file abc.  Such
things as fasl and its kin can be used in the progn expression as well.  The
reverse slants at the end of each line keep the newline from being effective.

TJ (with Amazing Grace) The Piper
(aka Ted Jardine)
Boeing Artificial Intelligence Center
...uw-beaver!uw-june!bcsaic!ted