 # Written by: Bryan Horling and Regis Vincent
 #             Department of Computer and Information Science
 #             University of Massachusetts
 #             Amherst, Massachusetts 01003.
 #
 # This code was written at the Multi-Agent Systems Lab.
 # Department of Computer Science, University of Massachusetts,
 # Amherst, MA 01003.
 #
 # See LICENCE file for licence details.

MODULE	= taems

include Makefile.tmpl

# Other variables
TAEMSJAVA	= $(shell find taems -name "*.java" -print)
TAEMSJDEPS	= $(patsubst %.java, $(CLASSD)/%.class, $(TAEMSJAVA))
CLASSES	= cd $(CLASSD); find $(MODULE) -name "*.class" -print | sed -e's/\$$/\\$$/g'
JAR	= taems.jar
ZIP	= $(LIBS)/taems.zip
JAVA		= $(TAEMSJAVA) $(PARSERJAVA) $(PREPROCESSJAVA)
JAVAC	= $(JAVART)javac -J-mx30m -g -d $(CLASSD) -deprecation -classpath $(CLASSPTH)
JAVADOC	= $(JAVART)javadoc -classpath $(CLASSPTH) -sourcepath .:.. \
   -public -d $(DOCD) -version -author \
   -link http://mas.cs.umass.edu/research/mass/api/agent/ \
   -link http://mas.cs.umass.edu/research/mass/api/ihome/ \
   -link http://mas.cs.umass.edu/research/mass/api/utilities/ \
   -link http://mas.cs.umass.edu/research/mass/api/taems/

# The rules
all:  parser preprocessor taems

test: zip FORCE
	@echo Making test
	@cd test; make test

updatetest: zip
	@echo Updating test
	@cd test; make updatetest

%.ptaems: all FORCE
	@$(JAVART)java -classpath $(CLASSPTH) taems.preprocessor.PreProcessorParser $$OPTION < $@ 

%.ttaems: all FORCE
	@$(JAVART)java -classpath $(CLASSPTH) taems.parser.ParserTest -display -if $@ -of $@

edit: all FORCE
	@$(JAVART)java -classpath $(CLASSPTH) taems.parser.ParserTest -display

taems: $(TAEMSJDEPS)

parser: taems/parser/TTaemsGrammar.java

taems/parser/TTaemsGrammar.java: taems/parser/ttaems.jj
	$(JAVACC) -OUTPUT_DIRECTORY=taems/parser taems/parser/ttaems.jj
	$(JAVAC) taems/parser/*.java

preprocessor: taems/preprocessor/PreProcessorParser.java 

taems/preprocessor/PreProcessorParser.java: taems/preprocessor/preprocessor.jj
	$(JAVACC) -NOSTATIC -OUTPUT_DIRECTORY=taems/preprocessor taems/preprocessor/preprocessor.jj
	$(JAVAC) taems/preprocessor/*.java

zip: all $(LIBS)/$(MODULE).zip

taemsview: all FORCE
	@echo Making taemsview.jar file
	echo "Main-Class: taems.parser.ParserTest" > $(CLASSD)/temp
	cd $(CLASSD); $(JAVART)jar cmvf temp ../taemsview.jar $(MODULE)
	cd ../utilities/classes; $(JAVART)jar uvf ../../$(MODULE)/taemsview.jar utilities
	rm $(CLASSD)/temp

$(LIBS)/$(MODULE).zip: FORCE
	@echo Making taems.zip file
	cd $(CLASSD); zip -r ../$(LIBS)/$(MODULE) $(MODULE)

clean:
	rm -rf $(CLASSD)/$(MODULE)
	rm -f $(LIBS)/$(MODULE).zip

reallyclean: clean
	grep -l "Generated By:JavaCC" taems/parser/*.java taems/preprocessor/*.java | xargs rm -f

help:
	@echo "Try: "
	@echo "     make <file>.ttaems -> to have a visualization of a TTAEMS file"
	@echo "     make <file>.ptaems -> to generate a TTAEMS file from the preprocessor"
	@echo "     make zip -> generate the taems.zip archive"
	@echo "     make test -> run all the tests"
	@echo "     make OPTION="-tmpttaems" <file>.ptaems  -> debug options for the preprocessor"
