CM=../cmeta

METAII=$(error "Point this variable at a file containing the original META II")
METAIIC=$(error "Point this variable at a file containing the original META II assembly code")

all: prereq am1tests backtrack capture m2 m2asm strings

am1tests: am1tests.am1
	../am1 < $< | ../ama2 | cat ../bm2rt - | $(CM)/elfwrap > $@
	chmod +x $@

backtrack: backtrack.cm2
	../cm3 < $< | ../cma3 | cat ../cm3rt - | $(CM)/elfwrap > $@
	chmod +x $@

capture: capture.cm2
	../cm3 < $< | ../cma3 | cat ../cm3rt - | $(CM)/elfwrap > $@
	chmod +x $@

m2: m2.bm2
	../bm2 < $< | ../bma2 | cat ../bm2rt - | $(CM)/elfwrap > $@
	chmod +x $@

METAII: m2
	./m2 < $(METAII) | ../bma2 | cat ../bm2rt - | $(CM)/elfwrap > $@
	chmod +x $@

meta-ii-test: METAII
	./METAII < $(METAII) | cmp - $(METAIIC)

m2asm: m2asm.bm2
	../bm2 < $< | ../bma2 | cat ../bm2rt - | $(CM)/elfwrap > $@
	chmod +x $@

m2m2: m2asm
	./m2asm < $(METAIIC) | ../bma2 | cat ../bm2rt - | $(CM)/elfwrap > $@
	chmod +x $@

m2m2-test: m2m2
	./m2m2 < $(METAII) | cmp - $(METAIIC)

strings: strings.bm1
	../bm2 < $< | ../bma2 | cat ../bm2rt - | $(CM)/elfwrap > $@
	chmod +x $@

clean:
	$(RM) METAII am1tests backtrack capture m2 m2asm m2m2 strings

prereq:
	$(MAKE) -C $(CM) elfwrap
	$(MAKE) -C .. all

.PHONY: all clean m2m2-test meta-ii-test prereq
