# Makefile for the MX programming language
# $Id: Makefile,v 1.16 2003/05/11 16:14:50 hanhua Exp $

GRAMMAR = MxAntlrTokenTypes.java MxAntlrTokenTypes.txt \
          MxAntlrLexer.java MxAntlrParser.java

WALKER = MxAntlrWalker.java \
         MxAntlrWalkerTokenTypes.java MxAntlrWalkerTokenTypes.txt

M4JAVA = MxInternalFunction.java

GENJAVA = $(GRAMMAR) $(WALKER) $(M4JAVA)

CLASSES = MxInternalFunction.class \
          MxAntlrTokenTypes.class MxAntlrLexer.class MxAntlrParser.class \
          MxAntlrWalkerTokenTypes.class MxAntlrWalker.class \
          MxDataType.class MxBool.class MxInt.class MxDouble.class \
          MxMatrix.class MxRange.class MxBitArray.class MxFunction.class\
          MxException.class MxSymbolTable.class MxInterpreter.class \
          MxVariable.class MxString.class MxMain.class

all : $(CLASSES)

$(CLASSES): %.class : %.java $(GENJAVA) jamaica.jar
	javac -source 1.4 -g $<

MxInternalFunction.java: MxInternalFunction.m4 Makefile
	m4 $< > $@

$(GRAMMAR): grammar.g Makefile
	rm -f $(GRAMMAR)
	java antlr.Tool $<

$(WALKER): walker.g MxAntlrTokenTypes.txt Makefile
	rm -f $(WALKER)
	java antlr.Tool $<

jamaica.jar: jamaica/*.java
	( cd jamaica ; javac -g *.java )
	jar cvf jamaica.jar jamaica/*.class

zip: all
	zip -r mxsrc`date +%y%m%d`.zip *.java *.class *.g *.m4 Makefile *.jar jamaica/*.java

clean:
	rm -f *.class *~

dist-clean: clean
	rm -f MxAntlr* MxInternalFunction.java

