CALC_CLASSES=CRCalc.class calc_msg.class command_queue.class \
command_queue_entry.class from_degrees_class.class time_slicer.class \
to_degrees_class.class
SOME_LIB_CLASSES=com/hp/creals/AbortedError.class com/hp/creals/CR.class \
com/hp/creals/PrecisionOverflowError.class com/hp/creals/TestCR.class \
com/hp/creals/UnaryCRFunction.class
LIB_SOURCES=UnaryCRFunction.java CR.java PrecisionOverflowError.java AbortedError.java StringFloatRep.java
SOURCES=CRCalc.java TestCR.java rpn_calc.java $(LIB_SOURCES) \
CRCalc.html instrs.html Makefile COPYRIGHT.txt impl.html \
RunCRCalc-algebraic-safe.html RunCRCalc-algebraic.html RunCRCalc-safe.html \
RunCRCalc.html
DOCFILES=com/hp/creals/UnaryCRFunction.html com/hp/creals/CR.html

JAVA_PREFIX=/usr/java/bin
# JAVAC=$(JAVA_PREFIX)/javac
JAVAC=gcj -C
#JAVAC_FLAGS=-target1.1
JAVAC_FLAGS=
JAVADOC=$(JAVA_PREFIX)/javadoc
#JAR=$(JAVA_PREFIX)/jar
JAR=jar

all: classes.jar download/CRCalc.tar.gz $(DOCFILES)

classes.jar: $(CALC_CLASSES) $(SOME_LIB_CLASSES)
	$(JAR) cvf classes.jar $(CALC_CLASSES) com/hp/creals/*.class

$(CALC_CLASSES): CRCalc.java $(SOME_LIB_CLASSES)
	$(JAVAC) $(JAVAC_FLAGS) CRCalc.java

$(SOME_LIB_CLASSES): $(LIB_SOURCES) TestCR.java
	$(JAVAC) $(JAVAC_FLAGS) -d . $(LIB_SOURCES) TestCR.java

download/CRCalc.tar.gz: $(SOURCES) download
	rm -f download/CRCalc.tar.gz
	tar cvf download/CRCalc.tar $(SOURCES)
	gzip download/CRCalc.tar

download:
	mkdir download

# gcj native compiled version of the command line calculator.
# Requires installation of a recent gcj version.
# Should build with or without threads.
rpn_calc: rpn_calc.java $(LIB_SOURCES)
	gcj -O -o rpn_calc --main=rpn_calc rpn_calc.java $(LIB_SOURCES)

TestCR: TestCR.java $(LIB_SOURCES)
	gcj -O -o TestCR --main=com.hp.creals.TestCR TestCR.java $(LIB_SOURCES)

$(DOCFILES): CR.java UnaryCRFunction.java
	$(JAVADOC) -d . CR.java UnaryCRFunction.java
	rm -f tree.html
	rm -f packages.html
	rm -f AllNames.html

clean:
	rm -f com/hp/creals/*.class
	rm -f classes.jar $(DOCFILES)
	rm -f *.class
	rm -f rpn_calc
