# Destination for the front end, i.e. the visible program
DSTBIN = /usr/local
DST = /usr/local/lib/lmlc

IOBJS = con.o cno.o Cexpr.o mdep.o econv.o cast.o iabs.o icomp.o imisc.o toplev.o \
	idsubst.o compile.o iload.o mkprt.o topprt.o imain.o \
	load.o predefs.o loadm.o loadc.o \
	../version.o ../misc/*.o ../expr/*.o ../transform/*.o ../rename/*.o ../Expr/*.o \
	../type/*.o ../zf/*.o ../curry/*.o
LIB = -ltermcap -lm
LIBINDEX = ../lib
MSRC = imain.m imisc.m icomp.m iabs.m
LMLC = lmlc
LMLFLAGS = -DDEBUG
ASM = ../../bin/asm
GCC = gcc -finline-functions
#GCC = cc
CFLAGS = -O -DDEBUG
.SUFFIXES : .m .o

.m.o :
	${LMLC} -c ${LMLFLAGS} $<

ilmlcomp:	$(IOBJS)
	${LMLC} ${IOBJS} $(LIB) -o ilmlcomp

cast.o:	cast.m
	lmlc -c cast.m
	ed - cast.t <cast.ed

topprt.o:	topprt.m
	lmlc -c topprt.m
	ed - topprt.t <topprt.ed

compile.o:	compile.m
	lmlc -c -t compile.m
	echo "import compile:Cexpr->Univ{T,F};" > compile.t

predefs.o:	predefs.pre pre1.sed pre2.sed pre.ed $(LIBINDEX)/lib.index
	/lib/cpp -P predefs.pre | sed -e '/;/d' -e '/^$$/d' > predefs.tmp
	addlibs.csh $(LIBINDEX) >>predefs.tmp
	sed -f pre1.sed predefs.tmp >predefs.c
	sed -f pre2.sed predefs.tmp >>predefs.c
	$(CC) -S predefs.c
	ex -s predefs.s < pre.ed
	cc -c predefs.s

#rm predefs.tmp predefs.c predefs.s

load.o:	load.c
	$(GCC) $(CFLAGS) -c load.c

loadm.M:
	../runtime/cinterface loadmodule 1 _cloadmodule ../runtime/machdep.M > loadm.M

loadm.o:	loadm.M
	$(ASM) loadm.M
	echo "import loadmodule:List Char->OK (List Char) (List((List Char) # Univ)){F,F};" > loadmodule.t

cno.o:	cno.M
	$(ASM) cno.M
	echo "import kno:*a->Int{T,F};" > cno.t

con.o:	con.M
	$(ASM) con.M
	echo "import ktag0:Int->*a{T,F};" > con.t
	echo "import ktag:Int->*a->*b{TF,F};" >> con.t
	echo "import kpair0:*a->*b->*c{FF,F};" >> con.t
	echo "import kpair1:*a->*b->*c{FF,F};" >> con.t
	echo "import kpair2:*a->*b->*c{FF,F};" >> con.t
	echo "import kpair3:*a->*b->*c{FF,F};" >> con.t
	echo "import kpair4:*a->*b->*c{FF,F};" >> con.t
	echo "import ktpair:*a->*b->*c->*d{FFF,F};" >> con.t
	echo "import kppair:*a->*b->*c->*d->*e{FFFF,F};" >> con.t
	echo "import ktvek:*a;" >>con.t
	echo "import kpvek:*a;" >>con.t
	echo "import ksplvek:*a->*b->*c{FF,F};" >>con.t

ishowc.o:	ishow.m
	$(LMLC) -c -DCURRY ishow.m
	mv ishow.o ishowc.o

ishow.o:	ishow.m
	$(LMLC) -c ishow.m

clean:
	rm -f *.o ${COMP}

oosave:
	mv *.o saveoo
unosave:
	mv saveoo/*.o .
osave:
	mv *.o saveo
unsave:
	mv saveo/*.o .

countlines:
	wc ${MSRC}

count:
	make MFLAGS=countlines all

INST = lib.oindex DUMMY.o ishowc.o ishow.o lib.oindexc

install:	ilmlcomp $(INST)
	cp ilmlcomp $(DST)/bin
	strip $(DST)/bin/ilmlcomp
	chmod +w $(DST)/lib/lib.oindex*
	cp $(INST) $(DST)/lib
	cp lmli $(DSTBIN)
