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