#
# makefile for dragon
# -------------------
# by Bjoern Lemke, (C)opyright 2002 by Bjoern Lemke
#

CC = g++
LIBS = 
DEFS = -DHAVE_CONFIG_H

INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644

# Common prefix for installation directories
PREFIX = /Users/lemke
BINPREFIX = $(PREFIX)/bin
MANPREFIX = $(PREFIX)/man
INCLUDEPREFIX = $(PREFIX)/include
LIBPREFIX = $(PREFIX)/lib

CFLAGS = -I$(INCLUDEPREFIX) -m64
LDFLAGS = -L$(LIBPREFIX) -m64 

.SUFFIXES: .cc .o

.cc.o:
	$(CC) ${CFLAGS} ${DEFS} -c $<


################
# Dragon Build #
################

all:	dragon

.PHONY:	install
install:
	$(INSTALL) dragon $(BINPREFIX)

dragon: Main.o Dragon.o Terminal.o Production.o LR0Element.o LR1Element.o Worm.o \
	FSM.o FSMState.o FSMTransition.o ParseTableEntry.o TransHash.o FirstHash.o LR0Hash.o \
	LR1Hash.o LALRHash.o ClosureCache.o LR1Trans.o LR1Analyser.o LALRAnalyser.o
	$(CC) $(LDFLAGS) -o dragon Main.o Dragon.o Terminal.o Production.o LR0Element.o LR1Element.o \
	Worm.o FSM.o FSMState.o FSMTransition.o ParseTableEntry.o TransHash.o FirstHash.o LR0Hash.o \
	LR1Hash.o LALRHash.o ClosureCache.o LR1Trans.o LR1Analyser.o LALRAnalyser.o -llfc

#######################
# Dragon Dependencies #
#######################

Dragon.o: Dragon.cc Dragon.h
Production.o: Production.cc Production.h
Terminal.o: Terminal.cc Terminal.h
LR0Element.o: LR0Element.cc LR0Element.h
LR1Element.o: LR1Element.cc LR1Element.h
Main.o: Main.cc
FSM.o: FSM.cc FSM.h
FSMState.o: FSMState.cc FSMState.h
FSMTransition.o: FSMTransition.cc FSMTransition.h
ParseTableEntry.o: ParseTableEntry.cc ParseTableEntry.h
TransHash.o: TransHash.cc TransHash.h
FirstHash.o: FirstHash.cc FirstHash.h
LR0Hash.o: LR0Hash.cc LR0Hash.h
LR1Hash.o: LR1Hash.cc LR1Hash.h
LALRHash.o: LALRHash.cc LALRHash.h
ClosureCache.o: ClosureCache.cc ClosureCache.h
LR1Trans.o: LR1Trans.cc LR1Trans.h
LR1Analyser.o: LR1Analyser.cc LR1Analyser.h
LALRAnalyser.o: LALRAnalyser.cc LALRAnalyser.h

############
# Clean up #
############

clean:
	rm -f *.o
	rm -f dragon 
	rm -f *~
