xref: /btstack/test/Makefile (revision f0e9886bf1825249aaea7e15f4fe6fb8d065bffb)
1
2# Makefile to build and run all tests
3
4SUBDIRS =  \
5	ad_parser \
6	att_db \
7	avdtp \
8	avdtp_util \
9	base64 \
10	ble_client \
11	btstack_link_key_db \
12	btstack_memory \
13	classic-oob-pairing \
14	crypto \
15	des_iterator \
16	embedded \
17	flash_tlv \
18	gap \
19	gatt-service-client \
20	gatt_client \
21	gatt_server \
22	gatt_service \
23	hfp \
24	hid_parser \
25	le_device_db_tlv \
26	linked_list \
27	map_test \
28	mesh \
29	obex \
30	pts \
31	ring_buffer \
32	sdp \
33	sdp_client \
34	security_manager \
35	tlv_posix \
36
37# not testing anything in source tree
38#	maths \
39# no unit tests
40#	embedded \
41#	gatt_server \
42# mixes classic with ble
43#    flash_tlv - contains btstack_linked_key_db tests
44# hangs on buildbot (no output for 20 minutes -> abort)
45#	security_manager_sc
46
47SUBDIRS_BLE = \
48	ad_parser \
49	att_db \
50	ble_client \
51	btstack_memory \
52	crypto \
53	embedded \
54	gap \
55	gatt-service-client \
56	gatt_client \
57	gatt_server \
58	gatt_server \
59	gatt_service \
60	hid_parser \
61	le_device_db_tlv \
62	linked_list \
63	ring_buffer \
64	security_manager \
65
66# test fails
67
68# not unit-tests
69# avrcp \
70# map_client \
71# sbc \
72#	gatt_server \
73
74.PHONY: coverage coverage-sm-sc.info coverage-pts.info
75
76subdirs:
77	echo Building all tests
78	@set -e; \
79	for dir in $(SUBDIRS); do \
80	  $(MAKE) -C $$dir; \
81	done
82
83clean:
84	echo Clean all test
85	@set -e; \
86	for dir in $(SUBDIRS); do \
87	  $(MAKE) -C $$dir clean; \
88	done
89
90subdirs-coverage:
91	echo Run all tests for coverage
92	@set -e; \
93	for dir in $(SUBDIRS); do \
94	  $(MAKE) -C $$dir coverage; \
95	done
96
97subdirs-coverage-ble:
98	echo Run all BLE tests for coverage
99	@set -e; \
100	for dir in $(SUBDIRS_BLE); do \
101	  $(MAKE) -C $$dir coverage; \
102	done
103
104
105coverage-pts.info:
106	# download pts coverage and fix paths
107	curl https://bluekitchen-gmbh.com/btstack/develop/coverage-pts.info | sed "s|/Users/mringwal/buildbot-worker/auto-pts/btstack|`realpath ..`|" > coverage-pts.info
108
109coverage-sm-sc.info:
110	# download pts coverage and fix paths
111	curl https://bluekitchen-gmbh.com/btstack/develop/coverage-sm-sc.info | sed "s|/Users/mringwal/buildbot-worker/test-develop-sm-sc/build|`realpath ..`|" > coverage-sm-sc.info
112
113
114coverage-unit.info: subdirs-coverage
115	# delete trace data
116	find . -name "*.gcda" -type f -delete
117	# run tests
118	$(MAKE) subdirs-coverage
119	# collect traces
120	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info
121	# demangle
122	python3 coverage_demangle.py coverage-unit.info
123
124coverage-unit-ble.info: subdirs-coverage-ble
125	# delete trace data
126	find . -name "*.gcda" -type f -delete
127	# run tests
128	$(MAKE) subdirs-coverage-ble
129	# collect traces
130	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info
131	# demangle
132	python3 coverage_demangle.py coverage-unit-ble.info
133
134
135coverage-ble.info: coverage-pts.info coverage-sm-sc.info coverage-unit-ble.info
136	# combine unit-ble and pts
137	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-sm-sc.info -a coverage-unit-ble.info --output-file coverage-ble.info
138
139
140coverage-bat.info: coverage-ble.info
141	# create bat subset from ble subset
142	./coverage_subset_bat.py coverage-ble.info coverage-bat.info
143
144
145coverage.info: coverage-pts.info coverage-sm-sc.info coverage-unit.info
146	# combine unit-ble and pts
147	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-sm-sc.info -a coverage-unit.info --output-file coverage.info
148
149
150coverage-all: coverage.info
151	# generate html output
152	genhtml coverage.info     --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage
153
154coverage-bat: coverage-bat.info
155	# generate html output
156	genhtml coverage-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-bat
157
158coverage-ble: coverage-ble.info
159	# generate html output
160	genhtml coverage-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-ble
161
162coverage-unit-ble: coverage-unit-ble.info
163	# generate html output
164	genhtml coverage-unit-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit-ble
165
166coverage-sm-sc: coverage-sm-sc.info
167	# generate html output
168	genhtml coverage-sm-sc.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-sm-sc
169
170coverage-pts: coverage-pts.info
171	# generate html output
172	genhtml coverage-pts.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-pts
173
174coverage: coverage-all coverage-ble coverage-bat
175
176test:
177	echo Run all tests with ASAN
178	@set -e; \
179	for dir in $(SUBDIRS); do \
180	  $(MAKE) -C $$dir test; \
181	done
182
183test-ble:
184	echo Run all BLE tests with ASAN
185	@set -e; \
186	for dir in $(SUBDIRS_BLE); do \
187	  $(MAKE) -C $$dir test; \
188	done
189