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