JC = javac
JFLAGS = -g -classpath ".:main.jar"
JAVA = java
JAVAFLAGS = -cp ".:main.jar"
JAR = jar
JARFLAGS = -cvfe

.SUFFIXES: .java .class

.java.class:
	$(JC) $(JFLAGS) $*.java

MAIN = Main

CLASSES = \
	AddOperation.java \
  SubOperation.java \
	MulOperation.java \
	DivOperation.java \
	PowOperation.java \
	InvOperation.java \
	SinOperation.java \
	CosOperation.java \
  FacOperation.java

default: classes

classes: $(CLASSES:.java=.class)

run: default
	@$(JAVA) $(JAVAFLAGS) $(MAIN)

jar: default
	$(JAR) $(JARFLAGS) $(MAIN).jar $(MAIN) $(CLASSES:.java=.class)

jar-run: jar
	@$(JAVA) $(JAVAFLAGS) -jar $(MAIN).jar

archive: default
	$(JAR) -Mcvf archive_$(MAIN).jar $(CLASSES)

test: default
	@bash -c ' \
		for file in `ls tests/*.i*`; \
			do \
				echo -ne "cmd: "; \
				cat $$file; \
				echo -ne "ref: "; \
				cat $${file/.i/.o}; \
				echo -ne "out: "; \
				$(JAVA) $(JAVAFLAGS) $(MAIN) < $$file; \
				echo "--------------"; \
		done \
	'

clean:
	$(RM) $(CLASSES:.java=.class) archive_$(MAIN).jar
