		CC=gcc
		CXX=g++
		LEX=flex -I
		YACC=bison -d
		CFLAGS=-gstabs+
		CXXFLAGS=-gstabs+
		LDFLAGS=-gstabs+
		LOADLIBES=-ll -lg++

scm:		scm.o read.o eval.o print.o objects.o lex.yy.o
	$(CXX) -o scm $(LDFLAGS) $^ $(LOADLIBES)

scm.o:		scm.cc objects.h read.extern.h

read.o:		read.cc objects.h read.extern.h

eval.o:		eval.cc objects.h

print.o:	print.cc objects.h

objects.o:	objects.cc objects.h

lex.yy.o:	lex.yy.c
	$(CXX) $(CXXFLAGS) -c lex.yy.c

lex.yy.c:	read.l
	$(LEX) read.l

mostlyclean:
	rm -f *.o scm

clean:	mostlyclean
	rm -f lex.yy.c
