# make fools' lisp

INC =
DEFINE = -O
DATE = -DDATE="\"`date`\""

CC =	cc
CLIBS =	-lm
CFLAGS = ${DEFINE} ${INC} ${DATE}

SRCS =	Basic.c Number.c Pair.c String.c Vector.c File.c Proc.c Frame.c \
	Special.c gc.c parser.c error.c cont.c globals.c main.c refine.c \
	prim.c mathprim.c sforms.c init.c utils.c codegen.c opcodes.c \
	stacks.c version.c memory.c mlists.c mtrees.c stuff.c
HDRS =	Basic.h Number.h Pair.h String.h Vector.h File.h Proc.h Frame.h \
	Special.h gc.h parser.h error.h cont.h globals.h refine.h \
	prim.h sforms.h fools.h utils.h codegen.h opcodes.h stacks.h \
	opcodes.i config.h memory.h mlists.h mtrees.h stuff.h

OBJS =	Basic.o Number.o Pair.o String.o Vector.o File.o Proc.o Frame.o \
	Special.o gc.o parser.o error.o cont.o globals.o main.o refine.o \
	prim.o mathprim.o sforms.o init.o utils.o codegen.o opcodes.o \
	stacks.o version.o memory.o mlists.o mtrees.o stuff.o
LISP =	scm/init.scm scm/extra.scm scm/pp.scm scm/extend.scm scm/macros.scm \
	scm/test.scm
MISC =	Makefile fl

fools:	${OBJS}
	${CC} ${CFLAGS} -o fools ${OBJS} ${CLIBS} ; rm -f version.o

tags:
	etags -t -w $(SRCS) $(HDRS)

lint:
	lint ${CFLAGS} -DDATE=\"lint\" ${SRCS}

clean:
	rm -f fools ${OBJS}

tar:
	tar cvf fools.tar ${HDRS} ${SRCS} ${LISP} ${MISC}

### dependencies
Basic.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h codegen.h stacks.h opcodes.h opcodes.i cont.h
File.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h parser.h
Frame.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h
Number.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h
Pair.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h
Proc.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h codegen.h stacks.h opcodes.h opcodes.i
Special.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h
String.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h
Vector.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h
codegen.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h codegen.h stacks.h opcodes.h opcodes.i cont.h \
	sforms.h
cont.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h codegen.h stacks.h opcodes.h opcodes.i cont.h
error.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h stdarg.h
gc.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h String.h \
	Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h error.h gc.h \
	globals.h
globals.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h
main.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h
mathprim.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h prim.h
memory.o: memory.h stuff.h config.h
mlists.o: mlists.h stuff.h config.h memory.h
mtrees.o: mtrees.h stuff.h config.h mlists.h memory.h
opcodes.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h codegen.h stacks.h opcodes.h opcodes.i \
	cont.h
parser.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h parser.h
prim.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h prim.h refine.h parser.h utils.h codegen.h \
	stacks.h opcodes.h opcodes.i
refine.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h refine.h utils.h
sforms.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h prim.h codegen.h stacks.h opcodes.h \
	opcodes.i sforms.h
stacks.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h stacks.h
stuff.o: stuff.h config.h
utils.o: fools.h config.h stuff.h memory.h mlists.h mtrees.h Basic.h \
	String.h Number.h Pair.h Vector.h Frame.h Proc.h File.h Special.h \
	error.h gc.h globals.h utils.h refine.h codegen.h stacks.h opcodes.h \
	opcodes.i parser.h
