#
# Makefile for build IC Compiler.  
#
# Requires SCALA_HOME to be set correctly (via the setup434 script)
#
# To build the source files, simply type "make" on the command line.
#
# It supports the following modes, via commands like "make javadoc".
#
#   - source:    run JFlex on ic.flex and then build java files
#   - dump:    same as "source" but dump out JavaCup info
#   - javadoc:   build javadoc files in doc sub-directory 
#		 (not useful for Scala)
#   - clean:     removes all class files, javadoc files and ~ files
#   - all:       all of the above.
#

source:
	java -jar tools/java-cup-11a.jar -destdir ic/parser ic/parser/ic.cup
	java -jar tools/JFlex.jar ic/lex/ic.flex
	fsc -classpath .:tools/java-cup-11a.jar `find ic -name "*.java"` `find ic -name "*.scala"`
	javac -classpath .:tools/java-cup-11a.jar:${SCALA_HOME}/lib/scala-library.jar `find ic -name "*.java"` 

dump:
	java -jar tools/java-cup-11a.jar -dump -destdir ic/parser ic/parser/ic.cup
	java -jar tools/JFlex.jar ic/lex/ic.flex
	fsc -classpath .:tools/java-cup-11a.jar `find ic -name "*.java"` `find ic -name "*.scala"`
	javac -classpath .:tools/java-cup-11a.jar:${SCALA_HOME}/lib/scala-library.jar `find ic -name "*.java"` 

javadoc:
	javadoc -link  http://download.oracle.com/javase/6/docs/api/ \
	        -d doc  `find ic -name "*.java"` 

clean:
	rm -f ic/lex/Lexer.java
	rm -f ic/parser/parser.java
	rm -f ic/parser/sym.java
	find . -name "*.class" | xargs rm
	find . -name "*~" | xargs rm
	rm -rf doc/*

all:	clean source javadoc
