H=	config.h\
	object.h\
	extern.h\
	macros.h

C=	auto.c\
	bignum.c\
	bool.c\
	char.c\
	cont.c\
	debug.c\
	dump.c\
	env.c\
	error.c\
	features.c\
	fixmul.c\
	heap.c\
	io.c\
	list.c\
	load.c\
	main.c\
	math.c\
	prim.c\
	print.c\
	proc.c\
	promise.c\
	read.c\
	special.c\
	stab.c\
	string.c\
	symbol.c\
	type.c\
	vector.c

O=	alloca.o\
	auto.o\
	bignum.o\
	bool.o\
	char.o\
	cont.o\
	debug.o\
	dump.o\
	env.o\
	error.o\
	features.o\
	fixmul.o\
	heap.o\
	io.o\
	list.o\
	load.o\
	main.o\
	math.o\
	prim.o\
	print.o\
	proc.o\
	promise.o\
	read.o\
	special.o\
	stab.o\
	stack.o\
	string.o\
	symbol.o\
	type.o\
	vector.o

scheme:	$(O)
	$(CC) -o scheme $(CFLAGS) $(O) -lm $(LDFLAGS) 

stack.o:	stack.s
	cp stack.s.$(MACHTYPE) stack.s
	/lib/cpp <stack.s | sed '/^#/d' >stack.ss
	as -o stack.o stack.ss
	rm stack.ss

alloca.o:	alloca.s
	cp alloca.s.$(MACHTYPE) alloca.s
	/lib/cpp <alloca.s | sed '/^#/d' >alloca.ss
	as -o alloca.o alloca.ss
	rm alloca.ss

auto.o:		$(H)
bignum.o:	$(H)
bool.o:		$(H)
char.o:		$(H)
cont.o:		$(H)
debug.o:	$(H)
dump.o:		$(H)
env.o:		$(H)
error.o:	$(H)
features.o:	$(H)
fixmul.o:	$(H)
heap.o:		$(H)
io.o:		$(H)
list.o:		$(H)
load.o:		$(H)
main.o:		$(H)
math.o:		$(H)
prim.o:		$(H)
print.o:	$(H)
proc.o:		$(H)
promise.o:	$(H)
read.o:		$(H)
special.o:	$(H)
stab.o:		$(H)
string.o:	$(H)
symbol.o:	$(H)
type.o:		$(H)
vector.o:	$(H)

lint:
	lint $(LINTFLAGS) -abxh $(C) | egrep -v '\?\?\?'

clean:
	rm -f *.o core a.out
