#
# Purpose:   Makefile for the Virtual Machine
# Author(s): Tony D. DeRose
#
# $Date: 91/01/27 19:06:08 $
# $Locker: smann $
#
RENAISSANCE = ..
WFF = ../../wff
INTERPRETER = $(RENAISSANCE)/Chaucer
GLIB = $(RENAISSANCE)/Lib
WFF.O = $(WFF)/MIPSbin/wff.o
#CFLAGS = -O -I$(GLIB) -I$(WFF)/include
CFLAGS = -g -I$(GLIB) -I$(WFF)/include
LIBS = -ll $(GLIB)/libgraphics.a -lm
LINTLIB = $(GLIB)/llib-lglib.ln

OFILES = lex.yy.o parser.o machine.o symbol.o stdops.o token.o \
         scene_ops.o arith_ops.o bool_ops.o csg_ops.o  scenedef.o util.o \
	 methods.o ListToMesh.o file_ops.o block_ops.o mallocnd.o \
	 invertmatrix.o ListToSpatch.o lmap.o multi.o

CFILES = lex.yy.c parser.c machine.c symbol.c stdops.c token.c \
	 util.c methods.c scenedef.c scene_ops.c arith_ops.c bool_ops.c \
	 csg_ops.c ListToMesh.c file_ops.c block_ops.c mallocnd.c \
	 invertmatrix.c ListToSpatch.c lmap.c multi.c

Chaucer : main.o interpreter.a
	cc $(CFLAGS) -o Chaucer main.o interpreter.a $(WFF.O) $(LIBS) 

interpreter.a : $(OFILES)
	ar ur interpreter.a $(OFILES)
	ranlib interpreter.a

lint: main.c $(CFILES)
	lint -u -I$(GLIB) -I$(INTERPRETER) -I$(WFF)/include main.c \
		$(CFILES) $(LINTLIB)

# Easier to remember than llib-linterpreter.ln
lintlib:  llib-linterpreter.ln
	touch lintlib

llib-linterpreter.ln: $(CFILES)
	lint -Cinterpreter -I$(GLIB) -I$(INTERPRETER) -I$(WFF)/include \
		$(CFILES) $(LINTLIB)
	
lex.yy.c : scanner.l machine.h parser.h
	lex scanner.l

MACHINE.H = machine.h $(GLIB)/graphics.h

arith_ops.o:	$(MACHINE.H) util.h
bool_ops.o:	$(MACHINE.H) util.h
block_ops.o:	$(MACHINE.H) util.h
csg_ops.o:	$(MACHINE.H) util.h 
file_ops.o:	$(MACHINE.H) util.h 
machine.o: 	$(MACHINE.H) symbol.h parser.h optable.h methods.h scenedef.h
main.o: 	$(MACHINE.H) scenedef.h
methods.o: 	$(MACHINE.H) symbol.h util.h
parser.o: 	$(MACHINE.H) parser.h
scene_ops.o:	$(MACHINE.H) scenedef.h util.h
scenedef.o: 	$(MACHINE.H) scenedef.h
stdops.o: 	$(MACHINE.H) symbol.h util.h
token.o: 	$(MACHINE.H) symbol.h
util.o: 	$(MACHINE.H) util.h mx.h
ListToMesh.o:   $(MACHINE.H) 
ListToSpatch.o:	$(MACHINE.H) multi.h
