# ---------------------------------------------------------- 
#   (C)1993 Institute for New Generation Computer Technology 
#       (Read COPYRIGHT for detailed information.) 
# ----------------------------------------------------------

.SUFFIXES: $(SUFFIXES) .kl1
ARCHIVES= libklic.a libklict.a
TARGETS = $(ARCHIVES) klicdb.init
COMPILEINC = ../include/klic

HEADERS = $(COMPILEINC)/alloc.h \
	$(COMPILEINC)/control.h \
	$(COMPILEINC)/index.h \
	$(COMPILEINC)/struct.h \
	$(COMPILEINC)/param.h \
	$(COMPILEINC)/timing.h \
	$(COMPILEINC)/basic.h \
	$(COMPILEINC)/primitives.h \
	$(COMPILEINC)/unify.h \
	$(COMPILEINC)/generic.h \
	$(COMPILEINC)/newatom.h \
	$(COMPILEINC)/g_basic.h \
	$(COMPILEINC)/g_method_table.h \
	$(COMPILEINC)/gdobject.h \
	$(COMPILEINC)/gd_macro.h \
	$(COMPILEINC)/gd_method_table.h \
	$(COMPILEINC)/gc_macro.h \
	$(COMPILEINC)/gc_method_table.h

SRCS = alloc.c failsusp.c main.c unify.c newgc.c\
	print.c debug.c timing.c bodyblt.c\
	unify2.c bb.c schedule.c\
	generic.c newatom.c gtermp.c gbinp.c \
	gvector.c gstring.c \
	gmerge.c wakeup.c
COMMONOBJS = \
	alloc.o debug.o timing.o bodyblt.o \
	unify_terms.o unify2.o version.o io.o \
	atomt.o functt.o newatom.o gtermp.o gbinp.o gen.o \
	gvector.o gstring.o \
	gmerge.o wakeup.o
NOTRACEOBJS = \
	main.o failsusp.o   newgc.o   print.o   unify.o   bb.o \
	schedule.o generic.o
TRACEOBJS = \
	main-t.o failsusp-t.o newgc-t.o print-t.o unify-t.o bb-t.o \
	schedule-t.o generic-t.o trace.o

ALLOBJS = $(COMMONOBJS) $(NOTRACEOBJS) $(TRACEOBJS)

all: $(HEADERS) $(TARGETS)

libklic.a: $(COMMONOBJS) $(NOTRACEOBJS)
	ar rcv $@ $?
	$(RANLIB) $@

libklict.a: $(COMMONOBJS) $(TRACEOBJS)
	ar rcv $@ $?
	$(RANLIB) $@

main-t.o: main.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o main-t.o -c main.c
failsusp-t.o: failsusp.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o failsusp-t.o -c failsusp.c
newgc-t.o: newgc.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o newgc-t.o -c newgc.c
print-t.o: print.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o print-t.o -c print.c
unify-t.o: unify.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o unify-t.o -c unify.c
bb-t.o: bb.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o bb-t.o -c bb.c
schedule-t.o: schedule.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o schedule-t.o -c schedule.c

generic-t.o: generic.c
	$(CC) $(CFLAGS) -DTRACE -I../include -o generic-t.o -c generic.c

io.c: io.kl1 klicdb.init
	../compiler/klic -v -C -K../compiler/kl1cmp -D../compiler/klicdb \
		-I../include -X. -g io.kl1

unify_terms.c: unify_terms.kl1 klicdb.init
	../compiler/klic -v -C -K../compiler/kl1cmp -D../compiler/klicdb \
		-I../include -X. -g unify_terms.kl1

atomt.c: atomt.kl1 klicdb.init
	../compiler/klic -v -C -K../compiler/kl1cmp -D../compiler/klicdb \
		-I../include -X. -g atomt.kl1

functt.c: functt.kl1 klicdb.init
	../compiler/klic -v -C -K../compiler/kl1cmp -D../compiler/klicdb \
		-I../include -X. -g functt.kl1

gen.c: gen.kl1 klicdb.init
	../compiler/klic -v -C -K../compiler/kl1cmp -D../compiler/klicdb \
		-I../include -X. -g gen.kl1

klicdb.init: klicdb.etc
	cat klicdb.etc >klicdb.init
klic.db: io.c unify_terms.c atomt.c functt.c gen.c

version.c: version.c.tmplt
	sed -e "s%##DATE%`date`%" <version.c.tmplt >version.c

.c.o:
	$(CC) $(CFLAGS) -I../include -c $<

tags:	$(SRCS) $(HEADERS)
	etags $(SRCS) $(HEADERS)

lint:	$(SRCS) $(HEADERS)
	lint $(DEFINITIONS) $(SRCS)

protoize: $(SRCS) $(HEADERS)
	protoize -c $(DEFINITIONS) $(SRCS)

.c.s: ;	$(CC) $(CFLAGS) -I../include -S $*.c

clean:
	/bin/rm -f core $(ALLOBJS) Makefile.bak \
		io.c io.o unify_terms.c unify_terms.o \
		atomt.c atomt.o functt.c functt.o klic.db \
		atom.h funct.h \
		atom.c funct.c *.ext *~
distclean: clean
	/bin/rm -f $(TARGETS)

depend: $(SRCS) $(HEADERS)
	makedepend -- $(CFLAGS) -I../include -- $(SRCS)

install: all
	- $(INSTDIR) $(KLICLIB)
	$(INSTALL) $(TARGETS) $(KLICLIB)
	$(INSTALL) klic.db $(KLICLIB)/klicdb.init
	cd $(KLICLIB); $(RANLIB) $(ARCHIVES)

# DO NOT DELETE THIS LINE -- make depend depends on it.

alloc.o: ../include/klic/basic.h ../include/klic/struct.h
alloc.o: ../include/klic/param.h ../include/klic/primitives.h
alloc.o: ../include/klic/alloc.h ../include/klic/control.h
failsusp.o: ../include/klic/basic.h
failsusp.o: ../include/klic/struct.h ../include/klic/param.h
failsusp.o: ../include/klic/alloc.h ../include/klic/control.h
main.o: ../include/klic/basic.h ../include/klic/struct.h
main.o: ../include/klic/param.h ../include/klic/primitives.h
main.o: ../include/klic/alloc.h ../include/klic/control.h
main.o: ../include/klic/unify.h ../include/klic/timing.h
unify.o: ../include/klic/basic.h ../include/klic/struct.h
unify.o: ../include/klic/param.h ../include/klic/primitives.h
unify.o: ../include/klic/alloc.h ../include/klic/control.h
unify.o: ../include/klic/schedule.h ../include/klic/gb.h
unify.o: ../include/klic/gobj.h ../include/klic/g_method_table.h
unify.o: ../include/klic/gobj2.h
newgc.o: ../include/klic/basic.h ../include/klic/struct.h
newgc.o: ../include/klic/param.h ../include/klic/primitives.h
newgc.o: ../include/klic/alloc.h ../include/klic/control.h
newgc.o: ../include/klic/timing.h ../include/klic/functorstuffs.h
newgc.o: ../include/klic/gcdebug.h ../include/klic/schedule.h
newgc.o: ../include/klic/gobj.h ../include/klic/g_method_table.h
newgc.o: ../include/klic/gobj2.h
print.o: ../include/klic/basic.h ../include/klic/struct.h
print.o: ../include/klic/param.h ../include/klic/primitives.h
print.o: ../include/klic/alloc.h ../include/klic/control.h
print.o: ../include/klic/index.h ../include/klic/gb.h
print.o: ../include/klic/functorstuffs.h ../include/klic/atomstuffs.h
print.o: ../include/klic/gobj.h
print.o: ../include/klic/g_method_table.h ../include/klic/gobj2.h
debug.o: ../include/klic/basic.h
debug.o: ../include/klic/struct.h ../include/klic/param.h
debug.o: ../include/klic/primitives.h ../include/klic/alloc.h
debug.o: ../include/klic/control.h ../include/klic/unify.h
debug.o: ../include/klic/index.h
timing.o: ../include/klic/basic.h
bodyblt.o: ../include/klic/basic.h ../include/klic/struct.h
bodyblt.o: ../include/klic/param.h ../include/klic/primitives.h
bodyblt.o: ../include/klic/alloc.h ../include/klic/control.h
bodyblt.o: ../include/klic/unify.h ../include/klic/index.h
bodyblt.o: ../include/klic/timing.h
bodyblt.o: ../include/klic/gb.h
unify2.o: ../include/klic/basic.h
unify2.o: ../include/klic/struct.h ../include/klic/param.h
unify2.o: ../include/klic/primitives.h ../include/klic/alloc.h
unify2.o: ../include/klic/control.h ../include/klic/unify.h
unify2.o: ../include/klic/index.h ../include/klic/gb.h
unify2.o: ../include/klic/functorstuffs.h ../include/klic/gobj.h
unify2.o: ../include/klic/g_method_table.h ../include/klic/gobj2.h
bb.o: ../include/klic/basic.h ../include/klic/struct.h
bb.o: ../include/klic/param.h ../include/klic/primitives.h
bb.o: ../include/klic/alloc.h ../include/klic/control.h
bb.o: ../include/klic/unify.h ../include/klic/index.h ../include/klic/gb.h
bb.o: ../include/klic/bb.h
schedule.o: ../include/klic/basic.h ../include/klic/struct.h
schedule.o: ../include/klic/param.h ../include/klic/alloc.h
generic.o: ../include/klic/gdobject.h ../include/klic/basic.h
generic.o: ../include/klic/struct.h ../include/klic/param.h
generic.o: ../include/klic/primitives.h ../include/klic/alloc.h
generic.o: ../include/klic/control.h ../include/klic/unify.h
generic.o: ../include/klic/index.h ../include/klic/gb.h ../include/klic/bb.h
generic.o: ../include/klic/g_basic.h ../include/klic/g_extern.h
generic.o: ../include/klic/g_extern_inline.h ../include/klic/g_method_table.h
generic.o: ../include/klic/functorstuffs.h ../include/klic/atomstuffs.h
generic.o: ../include/klic/gd_macro.h
newatom.o: ../include/klic/newatom.h
newatom.o: ../include/klic/basic.h ../include/klic/struct.h
newatom.o: ../include/klic/param.h ../include/klic/primitives.h
newatom.o: ../include/klic/alloc.h ../include/klic/control.h
newatom.o: ../include/klic/unify.h ../include/klic/index.h
newatom.o: ../include/klic/atomstuffs.h
gtermp.o: ../include/klic/gdobject.h ../include/klic/basic.h
gtermp.o: ../include/klic/struct.h ../include/klic/param.h
gtermp.o: ../include/klic/primitives.h ../include/klic/alloc.h
gtermp.o: ../include/klic/control.h ../include/klic/unify.h
gtermp.o: ../include/klic/index.h ../include/klic/gb.h ../include/klic/bb.h
gtermp.o: ../include/klic/g_basic.h ../include/klic/g_extern.h
gtermp.o: ../include/klic/g_extern_inline.h ../include/klic/g_method_table.h
gtermp.o: ../include/klic/gd_macro.h ../include/klic/gd_method_table.h
gbinp.o: ../include/klic/gdobject.h ../include/klic/basic.h
gbinp.o: ../include/klic/struct.h ../include/klic/param.h
gbinp.o: ../include/klic/primitives.h ../include/klic/alloc.h
gbinp.o: ../include/klic/control.h ../include/klic/unify.h
gbinp.o: ../include/klic/index.h ../include/klic/gb.h ../include/klic/bb.h
gbinp.o: ../include/klic/g_basic.h ../include/klic/g_extern.h
gbinp.o: ../include/klic/g_extern_inline.h ../include/klic/g_method_table.h
gbinp.o: ../include/klic/gd_macro.h ../include/klic/gd_method_table.h
gvector.o: ../include/klic/gdobject.h
gvector.o: ../include/klic/basic.h ../include/klic/struct.h
gvector.o: ../include/klic/param.h ../include/klic/primitives.h
gvector.o: ../include/klic/alloc.h ../include/klic/control.h
gvector.o: ../include/klic/unify.h ../include/klic/index.h
gvector.o: ../include/klic/gb.h ../include/klic/bb.h
gvector.o: ../include/klic/g_basic.h ../include/klic/g_extern.h
gvector.o: ../include/klic/g_extern_inline.h ../include/klic/g_method_table.h
gvector.o: ../include/klic/gd_macro.h ../include/klic/gd_method_table.h
gstring.o: ../include/klic/gdobject.h
gstring.o: ../include/klic/basic.h ../include/klic/struct.h
gstring.o: ../include/klic/param.h ../include/klic/primitives.h
gstring.o: ../include/klic/alloc.h ../include/klic/control.h
gstring.o: ../include/klic/unify.h ../include/klic/index.h
gstring.o: ../include/klic/gb.h ../include/klic/bb.h
gstring.o: ../include/klic/g_basic.h ../include/klic/g_extern.h
gstring.o: ../include/klic/g_extern_inline.h ../include/klic/g_method_table.h
gstring.o: ../include/klic/gd_macro.h ../include/klic/gd_method_table.h
gmerge.o: ../include/klic/gdobject.h
gmerge.o: ../include/klic/basic.h ../include/klic/struct.h
gmerge.o: ../include/klic/param.h ../include/klic/primitives.h
gmerge.o: ../include/klic/alloc.h ../include/klic/control.h
gmerge.o: ../include/klic/unify.h ../include/klic/index.h
gmerge.o: ../include/klic/gb.h ../include/klic/bb.h ../include/klic/g_basic.h
gmerge.o: ../include/klic/g_extern.h ../include/klic/g_extern_inline.h
gmerge.o: ../include/klic/g_method_table.h ../include/klic/gc_macro.h
gmerge.o: ../include/klic/gd_macro.h ../include/klic/gc_method_table.h
wakeup.o: ../include/klic/gdobject.h
wakeup.o: ../include/klic/basic.h ../include/klic/struct.h
wakeup.o: ../include/klic/param.h ../include/klic/primitives.h
wakeup.o: ../include/klic/alloc.h ../include/klic/control.h
wakeup.o: ../include/klic/unify.h ../include/klic/index.h
wakeup.o: ../include/klic/gb.h ../include/klic/bb.h ../include/klic/g_basic.h
wakeup.o: ../include/klic/g_extern.h ../include/klic/g_extern_inline.h
wakeup.o: ../include/klic/g_method_table.h ../include/klic/gc_macro.h
wakeup.o: ../include/klic/gc_method_table.h
