# -*- makefile -*- mode for emacs

JML = jml
JMLFLAGS = --quiet
JAVAC = javac
JAVAFLAGS = -g

RM = rm -f

.SUFFIXES: .class \
	.java .java-ckd .java-refined .java-r-ckd .refines-java .r-java-ckd \
	.jml .jml-ckd .jml-refined .jml-r-ckd .refines-jml .r-jml-ckd \
	.spec .spec-ckd .spec-refined .spec-r-ckd .refines-spec .r-spec-ckd

.java.class:
	$(JAVAC) $(JAVAFLAGS) $<

.java.java-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.java-refined.java-r-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.refines-java.r-java-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.jml.jml-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.jml-refined.jml-r-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.refines-jml.r-jml-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.spec.spec-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.spec-refined.spec-r-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

.refines-spec.r-spec-ckd:
	$(JML) $(JMLFLAGS) $< 2>&1 | tee $@

all: compile

check: checkallspecs compile

# check all JML specs.
checkallspecs:
	$(JML) $(JMLFLAGS) .

compile :
	$(JAVAC) $(JAVAFLAGS) *.java

# Clean up stuff
#
clean	:
	$(RM) *.*-ckd *.class core

cleanall: clean
	$(RM) `cat .cvsignore`
