CFLAGS = -g -O2 -I.. -L/usr/X11/lib -L/usr/local/lib -I/usr/local/lib/glib/include -I. #-DUSE_THREADS 

LFLAGS = -lMesaGL -lMesaGLU -lgdk -lgtk -lglib -lgtkmm -lX11 -lm -lXext #-lefence -L.# -lpthread 
#-ldmalloc #

OBJS = expr_scanner.o expr_parser.o expr_tree.o eq_table.o quat.o

LEX = flex
YACC = bison -vdt
FFLAGS =  -d
YFLAGS = -d

CC = g++

all: libquat.a

%.o: %.cc %.h expr_parser.c
	${CC} ${CFLAGS} -c $<

%.o: %.cc expr_parser.c
	${CC} ${CFLAGS} -c $<

%.o: %.c
	${CC} ${CFLAGS} -c $<

expr_parser.c: expr_parser.y
	${YACC} ${YFLAGS} -oexpr_parser.c expr_parser.y 

expr_scanner.c: expr_scanner.l expr_parser.c
	${LEX} ${FFLAGS}  expr_scanner.l ; mv lex.yy.c expr_scanner.c

libquat.a: ${OBJS} 
	ar cru libquat.a ${OBJS} ; ranlib libquat.a

itertest: itertest.o libquat.a
	${CC} itertest.o libquat.a -o itertest -ldl

mandelgen: mandelgen.o libquat.a
	${CC} mandelgen.o libquat.a -o mandelgen

mandelgen2: mandelgen2.o libquat.a
	${CC} mandelgen2.o libquat.a -o mandelgen2 -ldl

clean:
	rm -f ${OBJS} libquat.a expr_parser.c expr_scanner.c expr_parser.h