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