PROGRAM = sql2theory
CC = g++
CFLAGS = -Wall -pedantic -ansi -std=c++11 -g
LEX = flex
YACC = bison
YFLAGS = -d -v

$(PROGRAM): y.tab.o lex.yy.o query.o
	$(CC) $(CFLAGS) -o $@ $^
y.tab.o: parser.tab.cpp query.hpp
	$(CC) $(CFLAGS) -c -o $@ $<
lex.yy.o: lex.yy.c parser.tab.hpp
	$(CC) $(CFLAGS) -Wno-sign-compare -c -o $@ $<
parser.tab.cpp parser.tab.hpp : parser.ypp
	$(YACC) $(YFLAGS) $<
lex.yy.c: lexer.lex
	$(LEX) -i $<
query.o: query.cpp query.hpp
	$(CC) $(CFLAGS) -c -o $@ $<

.PHONY: clean

clean:
	-rm -f *~ $(PROGRAM) lex.yy.c *.o *.tab.* parser.output
