###################################################
###################################################
# You may need to change some of these variables

# path to the gf executable
GF    = gf

# path to the Java compiler
JAVAC = javac

# path to the Java VM
JAVA  = java

# path to the Java archive tool
JAR   = jar

# path to the gfc2java JAR
GFC2JAVA = ../gfc2java/gfc2java.jar

# path to the dialogutil directory
DIALOGUTIL = ../dialogutil/dialogutil.jar

# the host where the OAA facilitator is running
FAC_HOST = $(HOSTNAME)

###################################################
###################################################

JAVACFLAGS=-Xlint:deprecation -Xlint:unchecked 

OAA_JARS = $(OAA_HOME)/lib/jar
OAA_CP = $(OAA_JARS)/oaa2.jar:$(OAA_JARS)/antlr-oaa.jar:$(OAA_JARS)/concurrent-1.3.1.jar:$(OAA_JARS)/log4j-1.2.7.jar

CLASSPATH=.:build:$(GFC2JAVA):$(DIALOGUTIL):$(OAA_CP)

OAA_CONNECT=-oaa_connect "tcp('$(FAC_HOST)',3378)"

SRC=se/chalmers/cs/gf/tramdemo/*.java \
    se/chalmers/cs/gf/graph/*.java \
    se/chalmers/cs/gf/dot/*.java \
    se/chalmers/cs/gf/tramdemo/busline/*.java

TODAY=$(shell date '+%Y%m%d')
DISTNAME=tramdemo-$(TODAY)

.PHONY: clean query query-gfcm answer answer-gfcm jar dist

default all: jar

classes: $(SRC)
	mkdir -p build
	$(JAVAC) $(JAVACFLAGS) -cp $(CLASSPATH) -d build $(SRC)

citygrammar:
	$(JAVAC) $(JAVACFLAGS) -cp $(CLASSPATH) -d build MakeCityGrammar.java
	cd grammars/gbg && $(JAVA) -cp ../../build MakeCityGrammar Gbg ../../stops-gbg-sv.txt

gslgrammars:
	echo 'pg -printer=gsl | wf queryeng.grammar' | $(GF) grammars/query/gbg/eng/SpeechGbgQueryEng.gf
	echo 'pg -printer=gsl | wf queryswe.grammar' | $(GF) grammars/query/gbg/swe/SpeechGbgQuerySwe.gf

query-gfcm:
	cat grammars/query/mkQuery.gfs | $(GF) -s

answer-gfcm:
	cat grammars/answer/mkAnswer.gfs | $(GF) -s

query: query-gfcm
	$(JAVA) -cp $(CLASSPATH) Grammar2API query-utf8.gfcm se.chalmers.cs.gf.tramdemo.query

answer: answer-gfcm
	$(JAVA) -cp $(CLASSPATH) Grammar2API answer-utf8.gfcm se.chalmers.cs.gf.tramdemo.answer

jar: query answer classes
	rm -rf jarcontents
	mkdir jarcontents
	cp -r build/* jarcontents
	cp *.properties jarcontents
	cat $(DIALOGUTIL) | (cd jarcontents; jar -x se)
	cat $(GFC2JAVA) | (cd jarcontents; jar -x se java_cup SyntaxTree CFG GFC)
	cp query-utf8.gfcm query-utf8.cfgm jarcontents
	cp answer-utf8.gfcm answer-utf8.cfgm jarcontents
	cp gbg.dot jarcontents
	cp mapbg.png jarcontents
	cd jarcontents; $(JAR) -cmf ../manifest.txt ../tramdemo.jar *
	rm -rf jarcontents

clean:
	-rm -rf build jarcontents *.jar

gfclean:
	find . '(' -name '*.gfc' -o -name '*.gfcm' \
                    -o -name '*.cfgm' -o -name '*.gfr' ')' \
                   -exec rm -f '{}' ';'

distclean: clean gfclean
	-rm -rf se/chalmers/cs/gf/tramdemo/query
	-rm -rf se/chalmers/cs/gf/tramdemo/answer
	-rm -f *.grammar

dist:
	darcs dist --dist-name=tramdemo-src-$(TODAY)

binary-dist: jar gslgrammars
	mkdir $(DISTNAME)
	cp tramdemo.jar $(DISTNAME)
	cp tramdemo_speech.sh tramdemo_speech.bat $(DISTNAME)
	cp tramdemo_unix.props tramdemo_win.props $(DISTNAME)
	cp tramdemo.config $(DISTNAME)
	cp queryeng.grammar queryswe.grammar $(DISTNAME)
	zip -r $(DISTNAME) $(DISTNAME)
	rm -rf $(DISTNAME)

upload-dist: dist binary-dist
	scp tramdemo-$(TODAY).zip cs:.public_html/gf/downloads/tramdemo/binary
	scp tramdemo-src-$(TODAY).tar.gz cs:.public_html/gf/downloads/tramdemo

upload-doc: 
	scp doc/tramdemo.html cs:.public_html/gf/
	scp doc/map-agent.html cs:.public_html/gf/