# In order to use this makefile, make sure that
# java, javac, jtb, javacc and svn are in your $PATH!
# This should work for java 1.4 and java 5.0, 
# but make sure your JTB version matches your 
# Java version!
#
# Make targets:
# "all" (default): generates parser from grammar
#                  and compiles Java source code
# "clean"        : deletes all generated files
# "status"       : cleans and then gives subversion status
#
# Java package
PACKAGE = edu.du.cs.comp3351.p5

# Directory where we store sources
PDIR    = src/edu/du/cs/comp3351/p5

# Name of the input file (with extension .jj)
GRAMMAR = statements

# Files generated by JavaCC
PARSER  = JavaCharStream.java ParseException.java ParserConstants.java Parser.java Token.java TokenMgrError.java ParserTokenManager.java

all: clean $(GRAMMAR).oo
	mkdir -p $(PDIR)
	javacc -STATIC=false $(GRAMMAR).oo	
	mv visitors $(PDIR)
	mv nodes $(PDIR)
	echo "package $(PACKAGE);" > PACKAGE
	for n in $(PARSER) ; do cat PACKAGE $${n} > $(PDIR)/$$n; rm $${n}; done
	rm PACKAGE
	javac -classpath src `find src -name "*.java"`

$(GRAMMAR).oo:
	jtb -printer -jd -np $(PACKAGE).nodes -vp $(PACKAGE).visitors -o $(GRAMMAR).oo $(GRAMMAR).jj

clean:
	rm -f test/*.out
	rm -f $(GRAMMAR).oo
	rm -rf $(PDIR)/visitors
	rm -rf $(PDIR)/nodes
	for n in $(PARSER) ; do rm -f $(PDIR)/$${n}; done
	rm -f `find * -name "*.class"`

status: clean
	svn status

submit: clean
	svn add $(GRAMMAR).jj 
	svn add src/
	svn commit -m "submission via Makefile"
	svn status

