summaryrefslogtreecommitdiff
path: root/tests/Makefile
blob: 4cae5884f82ac2b0c1f921e523d977a53ccddc15 (plain)
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
CFLAGS=-I../include/ -D_FORTIFY_SOURCE=3 -static -O2

TARGETS= \
	test_fgets                   \
	test_memcpy_static_write     \
	test_memcpy_dynamic_write    \
	test_memcpy_static_read      \
	test_memcpy_dynamic_read     \
        test_mempcpy_static_write    \
	test_mempcpy_dynamic_write   \
	test_mempcpy_static_read     \
	test_mempcpy_dynamic_read    \
	test_memmove_static_write    \
	test_memmove_dynamic_write   \
	test_memmove_static_read     \
	test_memmove_dynamic_read    \
	test_memset_static_write     \
	test_memset_dynamic_write    \
	test_stpcpy_overwrite_over   \
	test_stpcpy_overwrite_under  \
	test_stpcpy_static_write     \
	test_strcat_static_write     \
	test_strcpy_overwrite_over   \
	test_strcpy_overwrite_under  \
	test_strcpy_static_write     \
	test_strncat_static_write    \
	test_strncpy_overwrite_over  \
	test_strncpy_overwrite_under \
	test_strncpy_static_write    \
	test_stpncpy_overwrite_over  \
	test_stpncpy_overwrite_under \
	test_stpncpy_static_write    \
	test_getcwd                  \
	test_poll                    \
	test_ppoll                   \

.SILENT:

gcc: CC=../x86_64-linux-musl-native/bin/gcc
gcc: GCOV=../x86_64-linux-musl-native/bin/gcov
gcc: clean all

clang: CC=clang
clang: GCOV=gcov
clang: CFLAGS+=-I/usr/include/x86_64-linux-musl
clang: CLFAGS+=-nostdlib
clang: clean all


all: $(TARGETS) run

coverage: CFLAGS += -fprofile-arcs -ftest-coverage
coverage: CC=../x86_64-linux-musl-native/bin/gcc
coverage: GCOV=../x86_64-linux-musl-native/bin/gcov
coverage: all
	$(GCOV) *.c
	lcov --capture --directory . --output-file coverage.info
	genhtml coverage.info --output-directory coverage

$(TARGETS): %: %.c
	$(CC) $(CFLAGS) -o $@ $<

run: $(TARGETS)
	$(foreach EXE, $(TARGETS), \
		timeout 1s ./$(EXE) 1 2 3 4 5 6 7 8 9 0 >/dev/null && echo "$(EXE) OK" || echo "$(EXE) FAIL" ; \
	)

clean:
	$(foreach EXE, $(TARGETS), \
		rm -f ./$(EXE) \
	)
	rm -rf ./*.gcno ./*.gcda ./*.gcov ./coverage.info ./coverage