1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
KVXC ?= kvx-elf-gcc
CC ?= gcc
CCOMP ?= ccomp
CFLAGS ?= -O2
SIMU ?= kvx-mppa
TIMEOUT ?= 10s
KVXCPATH=$(shell which $(KVXC))
CCPATH=$(shell which $(CC))
CCOMPPATH=$(shell which $(CCOMP))
SIMUPATH=$(shell which $(SIMU))
PRNG=../prng/prng.c
CFILES=insertion.c merge.c selection.c main.c
ALL= insertion-gcc-x86 insertion-gcc-kvx insertion-ccomp-kvx\
selection-gcc-x86 selection-gcc-kvx selection-ccomp-kvx\
merge-gcc-x86 merge-gcc-kvx merge-ccomp-kvx\
main-gcc-x86 main-gcc-kvx main-ccomp-kvx
CCOMP_OUT= insertion-ccomp-kvx.out selection-ccomp-kvx.out merge-ccomp-kvx.out\
main-ccomp-kvx.out
GCC_OUT= insertion-gcc-kvx.out selection-gcc-kvx.out merge-gcc-kvx.out\
main-gcc-kvx.out
X86_GCC_OUT= insertion-gcc-x86.out selection-gcc-x86.out merge-gcc-x86.out\
main-gcc-x86.out
STUB_OUT= .zero
all: $(ALL)
main-gcc-x86: $(CFILES) $(PRNG) $(CCPATH)
$(CC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@
%-gcc-x86: %.c $(PRNG) $(CCPATH)
$(CC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@
main-gcc-kvx: $(CFILES) $(PRNG) $(CCPATH)
$(KVXC) $(CFLAGS) $(filter-out $(CCPATH),$^) -o $@
%-gcc-kvx: %.c $(PRNG) $(KVXCPATH)
$(KVXC) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $(filter-out $(KVXCPATH),$^) -o $@
main-ccomp-kvx: $(CFILES) $(PRNG) $(CCOMPPATH)
$(CCOMP) $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@
%-ccomp-kvx: %.c $(PRNG) $(CCOMPPATH)
$(CCOMP) -D__UNIT_TEST_$$(echo $(basename $<) | tr a-z A-Z)__ $(CFLAGS) $(filter-out $(CCOMPPATH),$^) -o $@
.SECONDARY:
%x86.out: %x86
ret=0; timeout $(TIMEOUT) ./$< > $@ || { ret=$$?; }; echo $$ret >> $@
%kvx.out: %kvx $(SIMUPATH)
ret=0; timeout $(TIMEOUT) $(SIMU) -- $< > $@ || { ret=$$?; }; echo $$ret >> $@
.zero:
@echo "0" > $@
.PHONY:
test-x86: $(STUB_OUT) $(X86_GCC_OUT)
@for test in $(wordlist 2,100,$^); do\
if ! diff $$test $(STUB_OUT); then\
>&2 echo "ERROR x86: $$test failed";\
else\
echo "GOOD x86: $$test succeeded";\
fi;\
done
.PHONY:
test-kvx: $(STUB_OUT) $(GCC_OUT)
@for test in $(wordlist 2,100,$^); do\
if ! diff $$test $(STUB_OUT); then\
>&2 echo "ERROR kvx: $$test failed";\
else\
echo "GOOD kvx: $$test succeeded";\
fi;\
done
.PHONY:
test: test-x86 test-kvx
.PHONY:
check: $(STUB_OUT) $(CCOMP_OUT)
@for test in $(wordlist 2,100,$^); do\
if ! diff $$test $(STUB_OUT); then\
>&2 echo "ERROR kvx: $$test failed";\
else\
echo "GOOD kvx: $$test succeeded";\
fi;\
done
.PHONY:
clean:
for test in insertion main merge selection; do\
rm -f $$test-ccomp-kvx $$test-gcc-kvx $$test-gcc-x86;\
done
rm -f *.out
|