007dbb22205de9e24d1e11473e852f1aac8fb3da
[simavr] / tests / Makefile
1 #
2 # This makefile takes each "at*" file, extracts it's part name
3 # And compiles it into an ELF binary.
4 # It also disassembles it for debugging purposes.
5
6 #       Copyright 2008-2012 Michel Pollet <buserror@gmail.com>
7 #
8 #       This file is part of simavr.
9 #
10 #       simavr is free software: you can redistribute it and/or modify
11 #       it under the terms of the GNU General Public License as published by
12 #       the Free Software Foundation, either version 3 of the License, or
13 #       (at your option) any later version.
14 #
15 #       simavr is distributed in the hope that it will be useful,
16 #       but WITHOUT ANY WARRANTY; without even the implied warranty of
17 #       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 #       GNU General Public License for more details.
19 #
20 #       You should have received a copy of the GNU General Public License
21 #       along with simavr.  If not, see <http://www.gnu.org/licenses/>.
22
23
24 SHELL           = /bin/bash
25
26 sources         := $(wildcard at*.c)
27 simavr          = ..
28
29 IPATH           += ${simavr}/include
30 IPATH           += ${simavr}/simavr/sim
31
32 tests_src       = ${wildcard test_*.c}
33 tests           = ${patsubst %.c, ${OBJ}/%.tst, ${tests_src}}
34
35 all: obj axf tests
36
37 include ../Makefile.common
38
39 tests:  ${tests}
40         
41 axf: ${sources:.c=.axf}
42         
43
44 ${OBJ}/%.tst: tests.c %.c
45 ifeq ($(V),1)
46         $(CC) -MMD ${CFLAGS}  ${LFLAGS} -o $@ $^ $(LDFLAGS)
47 else
48         @echo TST $@
49         @$(CC) -MMD ${CFLAGS}  ${LFLAGS} -o $@ $^ $(LDFLAGS)
50 endif
51
52 run_tests: all
53         @export LD_LIBRARY_PATH=${simavr}/simavr/${OBJ} ;\
54         num_failed=0 ;\
55         num_run=0 ;\
56         for test in ${OBJ}/test_*.tst; do \
57             num_run=$$(($$num_run+1)) ;\
58             if ! $$test; then \
59                         echo "$$test returned with exit value $$?." ;\
60                         num_failed=$$(($$num_failed+1)) ;\
61             fi ;\
62         done ;\
63         echo "Tests run: $$num_run  Successes: $$(($$num_run-$num_failed)) Failures: $$num_failed"
64
65 clean: clean-${OBJ}
66         rm -f *.axf