CLASSPREFIX=classes/
JAVAPREFIX=java/
JARPREFIX=jar/
TARPREFIX=tar/
DOCPREFIX=doc/

JAVAC=javac -O -classpath ${CLASSPREFIX} -d ${CLASSPREFIX}
JAVA=java -classpath ${CLASSPREFIX}
JPP=cpp -P -C
JAR=jar -cf 
JAVADOC=javadoc -d ${DOCPREFIX} -package -use -version -author -windowtitle "Matthew Johnson's Java Documentation" -classpath ${CLASSPREFIX} -sourcepath ${JAVAPREFIX}

GPGUSER=mjj29@cam.ac.uk

NETLINKJARFILES=${CLASSPREFIX}Host.class ${CLASSPREFIX}HostTimeoutWrapper.class ${CLASSPREFIX}IP.class ${CLASSPREFIX}Monitor*.class ${CLASSPREFIX}NetlinkMon*.class ${CLASSPREFIX}Packet*.class ${CLASSPREFIX}Standard.class 
NETLINKTARFILES=IP.jpp Monitor.jpp NetlinkMon.jpp Packet*.jpp Standard.jpp README.NetlinkMon ${JARPREFIX}NetlinkMon.jar Makefile

IRCCARDJARFILES=${CLASSPREFIX}Card.class ${CLASSPREFIX}Deck.class ${CLASSPREFIX}IRCCards.class ${CLASSPREFIX}*Game.class ${CLASSPREFIX}Standard.class ${CLASSPREFIX}DefaultGame.class ${CLASSPREFIX}IRCEventHandler.class
IRCCARDTARFILES=Card.jpp Deck.jpp IRCCards.jpp blackjackGame.java *Game.jpp README.IRCCards Standard.jpp ${JAVAPREFIX}IRCConnection*.java ${JAVAPREFIX}IComparable.java ${JAVAPREFIX}IRCConstants.java ${JAVAPREFIX}RCTest.java ${JAVAPREFIX}ComparableString.java ${JARPREFIX}IRCCard.jar Makefile

MANDELBROTJARFILES=${CLASSPREFIX}Mandelbrot*.class ${CLASSPREFIX}Fractal*.class ${CLASSPREFIX}imageObserver.class ${CLASSPREFIX}Julia*.class ${CLASSPREFIX}Newton*.class ${CLASSPREFIX}OnFinish.class ${CLASSPREFIX}Standard.class ${CLASSPREFIX}ExampleFileFilter.class ${CLASSPREFIX}General*.jpp ${CLASSPREFIX}com/sun/image/codec/jpeg/JPEGImageEncoder.class
MANDELBROTTARFILES=General*.jpp Newton*.jpp Fractal*.jpp Mandelbrot*.jpp Julia*.jpp Standard.jpp ExampleFileFilter.jpp README.Mandelbrot ${JARPREFIX}Mandelbrot.jar Makefile

JAVADOCFILES=${JAVAPREFIX}Mandelbrot.java ${JAVAPREFIX}NetlinkMon.java ${JAVAPREFIX}wbrowse.java ${JAVAPREFIX}IRCCards.java

NetlinkMon:
	${JPP} < $@.jpp > ${JAVAPREFIX}$@.java
	${JAVAC} ${JAVAPREFIX}$@.java
	sudo fwmon -m | ${JAVA} $@
nlmjar:
	rm -rf /tmp/jar
	mkdir /tmp/jar/
	cp ${NETLINKJARFILES} /tmp/jar/
	${JAR} ${JARPREFIX}NetlinkMon.jar -C /tmp/jar/ .
	rm -rf /tmp/jar
nlmdist:
	make nlmjar
	tar -zcf ${TARPREFIX}NetlinkMon.tar.gz ${NETLINKTARFILES}
	gpg -u ${GPGUSER} --clearsign ${TARPREFIX}NetlinkMon.tar.gz
	scp ${TARPREFIX}NetlinkMon.tar.gz* kern:~/public_html/dist/
	cp ${TARPREFIX}NetlinkMon.tar.gz* /var/www/dist/

IRCCards:
	${JPP} < $@.jpp > ${JAVAPREFIX}$@.java
	${JAVAC} ${JAVAPREFIX}$@.java
ircrun:
	${JAVA} IRCCards
ircjar:
	rm -rf /tmp/jar
	mkdir /tmp/jar/
	cp ${IRCCARDJARFILES} /tmp/jar/
	${JAR} ${JARPREFIX}IRCCard.jar -C /tmp/jar/ .
	rm -rf /tmp/jar
ircdist:
	make ircjar
	tar -zcf ${TARPREFIX}IRCCard.tar.gz ${IRCCARDTARFILES}
	gpg -u ${GPGUSER} --clearsign ${TARPREFIX}IRCCard.tar.gz
	scp ${TARPREFIX}IRCCard.tar.gz* kern:~/public_html/dist/
	cp ${TARPREFIX}IRCCard.tar.gz* /var/www/dist/

mbjar:
	rm -rf /tmp/jar
	mkdir /tmp/jar/
	cp ${MANDELBROTJARFILES} /tmp/jar/
	${JAR} ${JARPREFIX}Mandelbrot.jar -C /tmp/jar/ .
	rm -rf /tmp/jar
mbdist:
	make mbjar
	tar -zcf ${TARPREFIX}Mandelbrot.tar.gz ${MANDELBROTTARFILES}
	gpg -u ${GPGUSER} --clearsign ${TARPREFIX}Mandelbrot.tar.gz
	scp ${TARPREFIX}Mandelbrot.tar.gz* kern:~/public_html/dist/
	cp ${TARPREFIX}Mandelbrot.tar.gz* /var/www/dist/

backup:
	tar -zcf ${TARPREFIX}jbackup.tar.gz *.jpp ${JAVAPREFIX}*.java
	scp ${TARPREFIX}jbackup.tar.gz kern:~/

javadoc:
	${JAVADOC} ${JAVADOCFILES}
	
.DEFAULT:
	${JPP} < $@.jpp > ${JAVAPREFIX}$@.java
	${JAVAC} ${JAVAPREFIX}$@.java
	${JAVA} $@
