CC		=	gcc
#CC		=	cc
CFLAGS		=	-g -UDEBUGGING -Wall
EXECS		=	lextest parsetest asttest codegentest testintlist minidatadec
OBJS		=	lexer.o parser.o ast.o decs.o

all:	$(EXECS)

clean:
	/bin/rm -f *.o a.out core $(EXECS) $(OBJS) out.[ch] datatypes.[ch]

cutdowndecs:
	rm -f decs.c decs.h
	ln -s cutdowndecs.c decs.c
	ln -s cutdowndecs.h decs.h
	make clean
	make

fulldecs:
	rm -f decs.c decs.h
	ln -s fulldecs.c decs.c
	ln -s fulldecs.h decs.h
	make clean
	make

lextest:	lexer.o lextest.o
parsetest:	lexer.o parser.o ast.o
asttest:	ast.o asttest.o
codegentest:	lexer.o parser.o ast.o decs.o codegentest.o
minidatadec:	lexer.o parser.o ast.o decs.o minidatadec.o
testintlist:	datatypes.o testintlist.o

lexer.o:        lexer.h bool.h
lextest.o:      lexer.h bool.h
parser.o:	parser.h lexer.h bool.h ast.h
parsetest.o:	parser.h lexer.h bool.h ast.h
ast.o:	ast.h bool.h
asttest.o:	ast.h bool.h
decs.o:		ast.h bool.h decs.h
minidatadec.o:	bool.h lexer.h ast.h parser.h decs.h
codegentest.o:	bool.h lexer.h ast.h parser.h decs.h

testintlist.o:	datatypes.h

datatypes.c datatypes.h:	types.in minidatadec
	./minidatadec types.in

