# Makefile for GenKit front end

#GENKITPATH = d:/cmu/genkit

#ARCH = cygwin
#GENKITPATH = .
#INCLUDE = /usr/local/include
#LIB = /usr/local/lib

ARCH = linux
#GENKITPATH = /afs/cs.cmu.edu/user/eepeter/genkit
GENKITPATH = /shared/code/genkit
INCLUDE = /shared/code/antlr/antlr-2.7.1/lib/cpp
LIB = /shared/code/antlr/antlr-2.7.1/lib/cpp/src/.libs


#allparse: ParseKitTest

allgen: cpart

fpart: fstructparse

fstructparse: FStructLexer.o FStructParser.o FStructTest.o
	g++3 -o fstructparse FStructTest.o FStructLexer.o FStructParser.o ${GENKITPATH}/gen/*.o ${GENKITPATH}/UKernel/*.o ${GENKITPATH}/Toolbox/*.o -L${LIB} -lantlr

FStructTest.o: FStructParser.hpp FStructLexer.hpp FStructTest.cpp 
	g++3 -c FStructTest.cpp -o FStructTest.o -Igen -IToolbox -IUKernel

FStructLexer.o: FStructLexer.cpp FStructLexer.hpp
	g++3 -O2 -ftemplate-depth-25 -c FStructLexer.cpp -o FStructLexer.o -I/usr/local/include -I${INCLUDE} -I${GENKITPATH}/gen -I${GENKITPATH}/Toolbox -I${GENKITPATH}/UKernel

FStructParser.o: FStructParser.cpp FStructParser.hpp
	g++3 -O2 -ftemplate-depth-25 -c FStructParser.cpp -o FStructParser.o -I${INCLUDE} -I${GENKITPATH}/gen -I${GENKITPATH}/Toolbox -I${GENKITPATH}/UKernel

FStructLexer.hpp: fstruct-cpp.g
	java antlr.Tool fstruct-cpp.g

FStructLexer.cpp: fstruct-cpp.g
	java antlr.Tool fstruct-cpp.g

FStructParser.hpp: fstruct-cpp.g
	java antlr.Tool fstruct-cpp.g

FStructParser.cpp: fstruct-cpp.g
	java antlr.Tool fstruct-cpp.g



# lex: genkitparse.exe

# genkitparse.exe: genkit.tab.c lex.yy.o genkit.tab.o
# 	g++3 -o genkitparse genkit.tab.o lex.yy.o

# genkit.tab.o: genkit.tab.c
# 	g++3 -c genkit.tab.c -o genkit.tab.o

# genkit.tab.c: genkit.y
# 	bison -v -d genkit.y

# lex.yy.o: lex.yy.c
# 	g++3 -c lex.yy.c -o lex.yy.o

# lex.yy.c: genkit.l
# 	flex -i genkit.l


cpart: GenKitTest

LexiconLexer.o: ${GENKITPATH}/UKernel/lexicon.hpp LexiconLexer.cpp LexiconLexer.hpp
	g++3 -O2 -ftemplate-depth-25 -o LexiconLexer.o -c LexiconLexer.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/gen -I${GENKITPATH}/UKernel

LexiconParser.o: ${GENKITPATH}/UKernel/lexicon.hpp LexiconParser.cpp LexiconParser.hpp
	g++3 -O2 -ftemplate-depth-25 -o LexiconParser.o -c LexiconParser.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/gen -I${GENKITPATH}/UKernel

LexiconLexer.hpp: lexicon-cpp.g
	java antlr.Tool lexicon-cpp.g

LexiconLexer.cpp: lexicon-cpp.g
	java antlr.Tool lexicon-cpp.g

LexiconParser.hpp: lexicon-cpp.g
	java antlr.Tool lexicon-cpp.g

LexiconParser.cpp: lexicon-cpp.g
	java antlr.Tool lexicon-cpp.g

temuco: genkit.hpp genkit.cpp GenKitTest.cpp
	cp *-cpp.g *TokenTypes.hpp GenKitLexer.hpp GenKitLexer.cpp GenKitParser.hpp GenKitParser.cpp FStructLexer.hpp FStructLexer.cpp FStructParser.hpp FStructParser.cpp LexiconLexer.hpp LexiconLexer.cpp LexiconParser.hpp LexiconParser.cpp genkit.hpp genkit.cpp GenKitTest.cpp --target-directory=/shared/code/genkit

GenKitTest: GenKitLexer.o GenKitParser.o FStructLexer.o FStructParser.o LexiconLexer.o LexiconParser.o genkit.o GenKitTest.o genkit.hpp
	g++3 -O2 -ftemplate-depth-25 -o GenKitTest GenKitTest.o GenKitLexer.o GenKitParser.o FStructLexer.o FStructParser.o LexiconLexer.o LexiconParser.o genkit.o ${GENKITPATH}/gen/*.o ${GENKITPATH}/UKernel/*.o ${GENKITPATH}/Toolbox/*.o -L${LIB} -lantlr

GenKitTest.o: GenKitParser.hpp GenKitLexer.hpp FStructLexer.hpp FStructParser.hpp GenKitTest.cpp
	g++3 -O2 -ftemplate-depth-25 -c GenKitTest.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/gen -I${GENKITPATH}/UKernel

GenKitLexer.o: GenKitLexer.cpp GenKitLexer.hpp genkit-cpp.g
	g++3 -O2 -ftemplate-depth-25 -c GenKitLexer.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/gen -I${GENKITPATH}/UKernel

GenKitParser.o: GenKitParser.cpp GenKitParser.hpp genkit-cpp.g
	g++3 -O2 -ftemplate-depth-25 -c GenKitParser.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/gen -I${GENKITPATH}/UKernel

genkit.o: genkit.cpp genkit.hpp ${GENKITPATH}/UKernel/grammar.hpp ${GENKITPATH}/gen/gen.hpp
	g++3 -O2 -ftemplate-depth-25 -c genkit.cpp -o genkit.o -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/gen -I${GENKITPATH}/UKernel

GenKitLexer.hpp: genkit-cpp.g
	java antlr.Tool genkit-cpp.g

GenKitLexer.cpp: genkit-cpp.g
	java antlr.Tool genkit-cpp.g

GenKitParser.hpp: genkit-cpp.g
	java antlr.Tool genkit-cpp.g

GenKitParser.cpp: genkit-cpp.g
	java antlr.Tool genkit-cpp.g


ParseKitTest: ParseKitLexer.o ParseKitParser.o parsekit.o ParseKitTest.o parsekit.hpp parse/parse.hpp parse/parse.o
	g++3 -O2 -ftemplate-depth-25 -o ParseKitTest ParseKitTest.o ParseKitLexer.o ParseKitParser.o parsekit.o parse/*.o ${GENKITPATH}/UKernel/*.o ${GENKITPATH}/Toolbox/*.o -L${LIB} -lantlr

parse/parse.o: parse/parse.hpp parse/parse.cpp
	cd parse; make;	cd ..

ParseKitTest.o: ParseKitParser.hpp ParseKitLexer.hpp ParseKitTest.cpp
	g++3 -O2 -ftemplate-depth-25 -c ParseKitTest.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/UKernel -Iparse

ParseKitLexer.o: ParseKitLexer.cpp ParseKitLexer.hpp parsekit-cpp.g
	g++3 -O2 -ftemplate-depth-25 -c ParseKitLexer.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/UKernel -Iparse

ParseKitParser.o: ParseKitParser.cpp ParseKitParser.hpp parsekit-cpp.g
	g++3 -O2 -ftemplate-depth-25 -c ParseKitParser.cpp -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/UKernel -Iparse

parsekit.o: parsekit.cpp parsekit.hpp UKernel/grammar.hpp parse/parse.hpp
	g++3 -O2 -ftemplate-depth-25 -c parsekit.cpp -o parsekit.o -I${INCLUDE} -I${GENKITPATH}/Toolbox -I${GENKITPATH}/UKernel -Iparse

ParseKitLexer.hpp: parsekit-cpp.g
	java antlr.Tool parsekit-cpp.g

ParseKitLexer.cpp: parsekit-cpp.g
	java antlr.Tool parsekit-cpp.g

ParseKitParser.hpp: parsekit-cpp.g
	java antlr.Tool parsekit-cpp.g

ParseKitParser.cpp: parsekit-cpp.g
	java antlr.Tool parsekit-cpp.g

clean:
	rm -f *.o *Lexer.cpp *Lexer.hpp *Parser.cpp *Parser.hpp core
