a/Makefile b/Makefile
1
C2IEC=c99
1
C2IEC=c99
2
TESTS=$(patsubst %.c, %.test, $(wildcard test/*.c))
2
TESTS=$(patsubst %.c, %.test, $(wildcard test/*.c))
3
TEST_LOGS=$(patsubst %.c, %.test.log, $(wildcard test/*.c))
3
TEST_LOGS=$(patsubst %.c, %.test.log, $(wildcard test/*.c))
4
4
5
check:
6
    echo ${TEST_LOGS}
7
8
all: c99
5
all: c99
9
6
10
c99: lex.yy.c y.tab.c
7
c99: lex.yy.c y.tab.c
11
    gcc -o $@ $^
8
    gcc -o $@ $^
12
9
...
...
20
    yacc -g $^
17
    yacc -g $^
21
18
22
commit: ${TEST_LOGS}
19
commit: ${TEST_LOGS}
23
    for i in ${TEST_LOGS}; do \
20
    for i in ${TEST_LOGS}; do \
24
        cp $$i $$(dirname $$i)/$$(basename $$i .log).expected; \
21
        cp $$i $$(dirname $$i)/$$(basename $$i .log).expected; \
25
    done
22
    done
23
clean:
24
    rm -f ${C2IEC}
25
    rm -f ${TEST_LOGS}
26
26
27
.PHONY: test
27
.PHONY: test
28
test: ${TESTS}
28
test: ${TESTS}
29
29
30
%.test: %.test.log
30
%.test: %.test.log
31
    diff $< $*.test.expected
31
    @echo "========================================"
32
32
    @echo "checking output of test $*"
33
%.test.log: %.test.txt
33
    @diff $< $*.test.expected
34
    cat $< | tee $@
34
35
%.test.log: %.test.txt
36
    @echo "========================================"
37
    @echo "output of test $*"
38
    @echo "========================================"
39
    @cat $< | tee $@
35
40
36
%.test.txt: %.c ${C2IEC}
41
%.test.txt: %.c ${C2IEC}
37
    ./${C2IEC} < $< > $@
42
    ./${C2IEC} < $< > $@
38
43
39
test2: c99
44
test2: c99
...
...
44
49