progs = 1 2
SHELL = bash

.PHONY: all check run time clean

all: $(progs)

check: $(progs)
	:(){ \
		local out=`./$$1 <<<"$$2"`; \
		if [ "$$out" != "$$3" ]; \
		then \
			echo >&2 "./$$1 <<<'$$2' output $$out, wanted $$3"; \
			exit 1; \
		fi; \
	}; \
	: 1 '(())'	 0; \
	: 1 '()()'	 0; \
	: 1 '((('	 3; \
	: 1 '(()(()('	 3; \
	: 1 '))((((('	 3; \
	: 1 '())'	-1; \
	: 1 '))('	-1; \
	: 1 ')))'	-3; \
	: 1 ')())())'	-3; \
	: 2 ')'		 1; \
	: 2 '()())'	 5; \
	echo passed

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

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

clean:
	rm -f $(progs)

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