|  | # Usage: make test.N.report | 
|  | # | 
|  | # COUNT can be over-ridden to change the number of tests generated per | 
|  | # file, and TESTARGS is used to change the type generation. Make sure | 
|  | # to 'make clean' after changing either of these parameters. | 
|  |  | 
|  | ABITESTGEN := ../ABITestGen.py | 
|  | TESTARGS := --max-args 0 --test-layout | 
|  | COUNT := 1000 | 
|  | TIMEOUT := 5 | 
|  |  | 
|  | CFLAGS := -std=gnu99 | 
|  |  | 
|  | X_COMPILER := llvm-gcc | 
|  | Y_COMPILER := clang | 
|  | CC := gcc | 
|  |  | 
|  | ifeq (0, 0) | 
|  | X_CFLAGS := -m32 | 
|  | Y_CFLAGS := -m32 | 
|  | CC_CFLAGS := -m32 | 
|  | else | 
|  | X_CFLAGS := -m64 | 
|  | Y_CFLAGS := -m64 | 
|  | CC_CFLAGS := -m64 | 
|  | endif | 
|  |  | 
|  | .PHONY: test.%.report | 
|  | test.%.report: test.%.x.diff test.%.y.diff | 
|  | @for t in $^; do \ | 
|  | if [ -s $$t ]; then \ | 
|  | echo "TEST $*: $$t failed"; \ | 
|  | fi; \ | 
|  | done | 
|  |  | 
|  | .PHONY: test.%.build | 
|  | test.%.build: test.%.ref test.%.x test.%.y | 
|  | @true | 
|  |  | 
|  | ### | 
|  |  | 
|  | .PRECIOUS: test.%.x.diff | 
|  | test.%.x.diff: test.%.ref.out test.%.x.out | 
|  | -diff $^ > $@ | 
|  | .PRECIOUS: test.%.y.diff | 
|  | test.%.y.diff: test.%.ref.out test.%.y.out | 
|  | -diff $^ > $@ | 
|  |  | 
|  | .PRECIOUS: test.%.out | 
|  | test.%.out: test.% | 
|  | -./$< > $@ | 
|  |  | 
|  | .PRECIOUS: test.%.ref | 
|  | test.%.ref: test.%.c | 
|  | $(CC) $(CFLAGS) $(CC_CFLAGS) -o $@ $^ | 
|  | .PRECIOUS: test.%.x | 
|  | test.%.x: test.%.c | 
|  | $(X_COMPILER) $(CFLAGS) $(X_CFLAGS) -o $@ $^ | 
|  | .PRECIOUS: test.%.y | 
|  | test.%.y: test.%.c | 
|  | $(Y_COMPILER) $(CFLAGS) $(Y_CFLAGS) -o $@ $^ | 
|  |  | 
|  | .PRECIOUS: test.%.c | 
|  | test.%.c: $(ABITESTGEN) | 
|  | $(ABITESTGEN) $(TESTARGS) -o $@ --min=$(shell expr $* '*' $(COUNT))  --count=$(COUNT) | 
|  |  | 
|  | clean: | 
|  | rm -f test.* *~ |