include tool_support

# add stupid prefix to parser_generated symbols
BFL=$(BISON_FLAGS) -p MML
FFL=$(FLEX_FLAGS)  -PMML

INCLUDES = $(MML_INCLUDES) $(BASE_INCLUDES) $(SME3_INCLUDE)
LINKS = $(BASE_LIB) $(MML_LIB) $(SME3_LIBS)

all: libBase libMML parser
	parser

libBase:
	cd $(top)/Base/src; $(MAKE) all

libMML:
	cd $(top)/MML/src; $(MAKE) all

lexer: MML_lexer.cc parser.bison.h
	$(CXX) -o lexer $(INCLUDES) MML_lexer.cc $ $(LEXLIB)

bison_sources: MML_parser.h MML_parser.cc
	cp MML_parser.cc ../../MML/src/MML_parser.cc
	cp MML_parser.h ../../MML/src/MML_parser.h

flex_sources: MML_lexer.cc
	cp MML_lexer.cc ../../MML/src/MML_lexer.cc

MML_lexer.cc: lexer.flex  
	$(LEX) $(FFL) -oMML_lexer.cc lexer.flex

MML_parser.h: parser.bison.y parser.bison.tab.c
	mv parser.bison.tab.h MML_parser.h

parser.bison.tab.c: parser.bison.y
	$(YACC) $(BFL) parser.bison.y


MML_parser.cc: parser.bison.tab.c
	mv parser.bison.tab.c MML_parser.cc
 
MML_lexer.o: MML_lexer.cc
	$(CC) -c $(INCLUDES) -o MML_lexer.o MML_lexer.cc

MML_parser.o: MML_parser.cc MML_parser.h
	$(CC) -c $(INCLUDES) -o MML_parser.o MML_parser.cc

Main.o: Main.cc
	$(CC) -c $(INCLUDES) -o Main.o Main.cc

parser: MML_parser.cc  MML_parser.h MML_lexer.o Main.o
	cp MML_lexer.cc ../../MML/src/MML_lexer.cc
	cp MML_parser.cc ../../MML/src/MML_parser.cc
	cp MML_parser.h ../../MML/src/MML_parser.h
	$(CXX) -o parser $(INCLUDES) Main.o $(LINKS) $(LEXLIB)

parserd: MML_parser.o  MML_lexer.o Main.o
	cp MML_lexer.cc ../../MML/src/MML_lexer.cc
	cp MML_parser.cc ../../MML/src/MML_parser.cc
	cp MML_parser.h ../../MML/src/MML_parser.h
	$(CXX) -o parserd $(INCLUDES) Main.o  MML_parser.o MML_lexer.o $(LINKS) $(LEXLIB)


clean:
	@$(RM) parser.bison.tab.c 
	@$(RM) parser.bison.tab.h
	@$(RM) parser
	@$(RM) parserd
	@$(RM) *.o
	@$(RM) *~

