ALLOTHERLSP = lmdcls.lsp letmac.lsp generr.lsp clmacs.lsp commac.lsp \
              mormac.lsp compat.lsp defopt.lsp defcal.lsp maxmac.lsp \
              mopers.lsp mforma.lsp mrgmac.lsp procs.lsp rzmac.lsp strmac.lsp \
              displm.lsp ratmac.lsp mhayat.lsp numerm.lsp opers.lsp utils.lsp \
              sumcon.lsp sublis.lsp runtim.lsp merror.lsp mformt.lsp \
              mutils.lsp outmis.lsp ar.lsp misc.lsp comm.lsp comm2.lsp \
              mlisp.lsp mmacro.lsp buildq.lsp simp.lsp float.lsp csimp.lsp \
              csimp2.lsp zero.lsp logarc.lsp rpart.lsp macsys.lsp mload.lsp \
              suprv1.lsp dskfn.lsp lesfac.lsp factor.lsp algfac.lsp \
              nalgfa.lsp ufact.lsp result.lsp rat3a.lsp rat3b.lsp rat3d.lsp \
              rat3c.lsp rat3e.lsp nrat4.lsp ratout.lsp transm.lsp transl.lsp \
              transs.lsp trans1.lsp trans2.lsp trans3.lsp trans4.lsp \
              trans5.lsp transf.lsp troper.lsp trutil.lsp trmode.lsp \
              trdata.lsp trpred.lsp transq.lsp acall.lsp fcall.lsp evalw.lsp \
              trprop.lsp mdefun.lsp bessel.lsp ellipt.lsp numer.lsp \
              intpol.lsp rombrg.lsp nparse.lsp displa.lsp nforma.lsp \
              ldisp.lsp grind.lsp spgcd.lsp ezgcd.lsp option.lsp macdes.lsp \
              inmis.lsp db.lsp compar.lsp askp.lsp sinint.lsp sin.lsp \
              risch.lsp hayat.lsp defint.lsp residu.lsp trigi.lsp trigo.lsp \
              trgred.lsp specfn.lsp mat.lsp matrix.lsp sprdet.lsp newinv.lsp \
              linnew.lsp newdet.lsp schatc.lsp matcom.lsp matrun.lsp \
              nisimp.lsp tlimit.lsp limit.lsp solve.lsp psolve.lsp algsys.lsp \
              polyrz.lsp cpoly.lsp mtrace.lsp scs.lsp asum.lsp fortra.lsp \
              optim.lsp marray.lsp mdot.lsp irinte.lsp series.lsp numth.lsp \
              laplac.lsp pade.lsp homog.lsp combin.lsp mstuff.lsp ratpoi.lsp \
              pois2.lsp pois3.lsp

ALLOTHERFAS = lmdcls.fas letmac.fas generr.fas clmacs.fas commac.fas \
              mormac.fas compat.fas defopt.fas defcal.fas maxmac.fas \
              mopers.fas mforma.fas mrgmac.fas procs.fas rzmac.fas strmac.fas \
              displm.fas ratmac.fas mhayat.fas numerm.fas opers.fas utils.fas \
              sumcon.fas sublis.fas runtim.fas merror.fas mformt.fas \
              mutils.fas outmis.fas ar.fas misc.fas comm.fas comm2.fas \
              mlisp.fas mmacro.fas buildq.fas simp.fas float.fas csimp.fas \
              csimp2.fas zero.fas logarc.fas rpart.fas macsys.fas mload.fas \
              suprv1.fas dskfn.fas lesfac.fas factor.fas algfac.fas \
              nalgfa.fas ufact.fas result.fas rat3a.fas rat3b.fas rat3d.fas \
              rat3c.fas rat3e.fas nrat4.fas ratout.fas transm.fas transl.fas \
              transs.fas trans1.fas trans2.fas trans3.fas trans4.fas \
              trans5.fas transf.fas troper.fas trutil.fas trmode.fas \
              trdata.fas trpred.fas transq.fas acall.fas fcall.fas evalw.fas \
              trprop.fas mdefun.fas bessel.fas ellipt.fas numer.fas \
              intpol.fas rombrg.fas nparse.fas displa.fas nforma.fas \
              ldisp.fas grind.fas spgcd.fas ezgcd.fas option.fas macdes.fas \
              inmis.fas db.fas compar.fas askp.fas sinint.fas sin.fas \
              risch.fas hayat.fas defint.fas residu.fas trigi.fas trigo.fas \
              trgred.fas specfn.fas mat.fas matrix.fas sprdet.fas newinv.fas \
              linnew.fas newdet.fas schatc.fas matcom.fas matrun.fas \
              nisimp.fas tlimit.fas limit.fas solve.fas psolve.fas algsys.fas \
              polyrz.fas cpoly.fas mtrace.fas scs.fas asum.fas fortra.fas \
              optim.fas marray.fas mdot.fas irinte.fas series.fas numth.fas \
              laplac.fas pade.fas homog.fas combin.fas mstuff.fas ratpoi.fas \
              pois2.fas pois3.fas

all: sloop.fas make.fas sysdef.fas stamp.fas $(ALLOTHERFAS) maxima.mem

sloop.fas sloop.lib : sloop.lsp
	clisp -q -c sloop

make.fas make.lib : make.lsp sloop.fas
	clisp -q -i sloop -c make

sysdef.fas sysdef.lib : sysdef.lsp sloop.fas make.fas
	clisp -q -i sloop make -c sysdef

$(ALLOTHERFAS) : stamp.fas

stamp.fas : $(ALLOTHERLSP) sloop.fas make.fas sysdef.fas
	clisp -m 4MB -i sloop make sysdef lmdcls -x '(make:make :maxima :compile t)'
	touch stamp.fas

maxima.mem: sloop.fas make.fas sysdef.fas $(ALLOTHERFAS) autol.lsp max_ext.lsp version.lsp save.lsp
	clisp -m 4MB -i sloop -x '(load "save") (savemem "maxima.mem")'
	-rm -f ../maxima.mem
	ln maxima.mem ../maxima.mem

install: maxima.mem
	cp -p -f maxima /usr/local/bin/maxima

clean: force
	-rm -f *.lib *.fas *.mem

distclean: clean
	-rm -f ../maxima.mem

force:
