BASILISK=$(subst /ast/interpreter,,$(CURDIR))
CFLAGS += -I../.. -I.. -DBASILISK=\"$(BASILISK)\"
QCC = ../../qcc
interpreter.o: dimension.c graph.c ../ast.h ../symbols.h
check: $(subst .c,.tst,$(wildcard test*.c)) \
	test15.vtst test16.vtst test20.vtst \
	$(subst .c,.dtst,$(wildcard dimension-tests/test*.c))
refs:
	for f in test*.c; do 						\
		$(QCC) $(FLAGS) -source -run=1 $$f 2>&1 | 		\
                sed "s|$(BASILISK)||g" > `echo $$f | sed 's/\.c/.ref/'`; \
	done
drefs:
	for f in dimension-tests/test*.c; do 				\
		$(QCC) $(FLAGS) -source -dimensions -run=1 $$f 2>&1 | 	\
                sed "s|$(BASILISK)||g" > `echo $$f | sed 's/\.c/.ref/'`; \
	done
%.tst: %.c %.ref $(QCC) declarations.h  internal.h  overload.h
	$(QCC) $(FLAGS) -source -run=1 $< 2>&1 | sed "s|$(BASILISK)||g" > $@
	-rm -f _$<
	diff $@ $*.ref || (rm -f $@ && exit 1)
%.dtst: %.c %.ref $(QCC) declarations.h  internal.h  overload.h
	$(QCC) $(FLAGS) -source -dimensions -run=1 $< 2>&1 | sed "s|$(BASILISK)||g" > $@
	diff $@ $*.ref || (rm -f $@ && exit 1)
%.vtst: %.c %.ref $(QCC) declarations.h  internal.h  overload.h
	valgrind -q $(QCC) $(FLAGS) -source -run=1 $< 2>&1 | sed "s|$(BASILISK)||g" > $@
	-rm -f _$<
	diff $@ $*.ref || (rm -f $@ && exit 1)
clean:
	rm -f *.o *.a *.*tst dimension-tests/*.*tst
dimension-tests/test20.dtst: FLAGS += -non-finite