include tool_support

# add stupid prefix to parser_generated symbols
BFL=$(BISON_FLAGS) -p STELLA
FFL=$(FLEX_FLAGS) -i  -PSTELLA

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

all: libBase libMML parser
	parser STELLA.eqns;

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

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


lexer: STELLA_lexer.cc parser.bison.h
	$(CXX) -o lexer -DLEXTEST $(INCLUDES) STELLA_lexer.cc $(LINKS) $(LEXLIB)

cfiles: STELLA_lexer.cc STELLA_parser.cc
	cp STELLA_lexer.cc STELLA_parser.cc STELLA_parser.h $(top)/MCP/src

STELLA_lexer.cc: lexer.flex  
	$(LEX) $(FFL) -oSTELLA_lexer.cc lexer.flex

flex_files: STELLA_lexer.cc
	cp STELLA_lexer.cc ../../MCP/src/STELLA_lexer.cc

bison_files: STELLA_parser.h STELLA_parser.cc
	cp STELLA_parser.cc ../../MCP/src/STELLA_parser.cc
	cp STELLA_parser.h ../../MCP/src/STELLA_parser.h

STELLA_parser.h: parser.bison.y
	$(YACC) $(BFL) parser.bison.y
	mv parser.bison.tab.h STELLA_parser.h

STELLA_parser.cc: STELLA_parser.h
	mv parser.bison.tab.c STELLA_parser.cc

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

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

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


parser: STELLA_parser.cc  STELLA_parser.o STELLA_lexer.o Main.o
	cp STELLA_lexer.cc ../../MCP/src/STELLA_lexer.cc
	cp STELLA_parser.cc ../../MCP/src/STELLA_parser.cc
	cp STELLA_parser.h ../../MCP/src/STELLA_parser.h
	$(CXX) $(CFL) -o parser STELLA_parser.o STELLA_lexer.o Main.o $(LINKS) $(LEXLIB)

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







