###################################################
###################################################
# 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 JAR
DIALOGUTIL = ../dialogutil/dialogutil.jar

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

# path to the base of a FreeTTS install 
# (only used to define JSAPI_CP and
# JSAPI_ENGINE_CP)
FREETTS=../freetts-1.2

# path to Java Speech API classes
JSAPI_CP=$(FREETTS)/lib/jsapi.jar

# path to Java Speech Engine classes
JSAPI_ENGINE_CP=$(FREETTS)/lib/freetts.jar

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

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

SIMPLE_CLASSPATH=.:build:$(GFC2JAVA)

CLASSPATH=$(SIMPLE_CLASSPATH):$(DIALOGUTIL):$(OAA_CP):$(JSAPI_CP):$(JSAPI_ENGINE_CP)

SRC=src/*.java user/*.java system/*.java

.PHONY: clean gfclean gslclean distclean gsl user-syntax system-syntax classes jar

default all: user-syntax system-syntax classes

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

user.gfcm user.cfgm: grammars/UserEng.gf grammars/UserSwe.gf 
	GF="$(GF)"; export GF; ./make-grammars user $^

system.gfcm system.cfgm: grammars/SystemEng.gf grammars/SystemSwe.gf 
	GF="$(GF)"; export GF; ./make-grammars system $^

gsl: UserEng.grammar UserSwe.grammar

UserEng.grammar UserSwe.grammar: grammars/UserEng.gf grammars/UserSwe.gf
	GF="$(GF)"; export GF; ./make-gsl $^

user-syntax: user.gfcm
	$(JAVA) -cp $(CLASSPATH) Grammar2API user.gfcm user

system-syntax: system.gfcm
	$(JAVA) -cp $(CLASSPATH) Grammar2API system.gfcm system

run:
	$(JAVA) -cp $(CLASSPATH) SimpleDemo -oaa_connect "tcp('$(FAC_HOST)',3378)"

runtext:
	$(JAVA) -cp $(SIMPLE_CLASSPATH) SimpleDemoText

jar: all
	rm -rf jarcontents
	mkdir jarcontents
	cp -r build/* jarcontents
	cp -r $(GFC2JAVA)/build/* jarcontents
	cp -r $(DIALOGUTIL)/build/* jarcontents
	cp user.gfcm user.cfgm system.gfcm system.cfgm jarcontents
	cd jarcontents; $(JAR) -cmf ../manifest.txt ../simpledemo.jar *
	rm -rf jarcontents

dist:
	darcs dist --dist-name=gf-simpledemo-`date '+%Y%m%d'`

clean:
	-rm -rf build jarcontents *.jar

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

distclean: clean gfclean
	-rm -f *.grammar
	-rm -rf user system