progs = 1 2
input = input.txt

SHELL = bash
.PHONY: all asm test run time clean

all: $(progs)

asm: $(addsuffix .s,$(progs))

test: $(progs)
	while read prog arg expected; \
	do	test="./$$prog $$arg"; \
		result="$$($$test)"; \
		if [ "$$result" != "$$expected" ]; \
		then	echo "$$test: wrote $$result, expected $$expected"; \
			break; \
		fi; \
	done <tests.txt


run: $(progs)
	for p in $(progs); do ./$$p $(input); done

time: $(progs)
	for p in $(progs); do time ./$$p $(input); done

clean:
	rm -f $(progs) *.s

$(progs): % : %.c
	gcc -O3 -o $@ $^

%.s : %.c
	gcc -O3 -S -fverbose-asm $^
