xref: /btstack/test/Makefile (revision af7c3ae6cd1e2bcfd24e6d0654508ecf775c9e5d)
157fe2af8SMatthias Ringwald
257fe2af8SMatthias Ringwald# Makefile to build and run all tests
357fe2af8SMatthias Ringwald
457fe2af8SMatthias RingwaldSUBDIRS =  \
5d2011e9eSMilanka Ringwald	ad_parser \
641362367SMilanka Ringwald	att_db \
7f7cf8388SMatthias Ringwald	avdtp \
819650ae8SMilanka Ringwald	avdtp_util \
91c22f3beSMatthias Ringwald	base64 \
1057fe2af8SMatthias Ringwald	ble_client \
11f7cf8388SMatthias Ringwald	btstack_link_key_db \
129b8d06a5SMilanka Ringwald	btstack_memory \
13415a769fSMatthias Ringwald	classic-oob-pairing \
141c22f3beSMatthias Ringwald	crypto \
1557fe2af8SMatthias Ringwald	des_iterator \
160f7fd6c1SMilanka Ringwald	embedded \
17dd2dbe6aSMatthias Ringwald	flash_tlv \
181470db0cSMatthias Ringwald	gap \
190f7fd6c1SMilanka Ringwald	gatt-service-client \
20ae970bb9SMilanka Ringwald	gatt_client \
21ae970bb9SMilanka Ringwald	gatt_server \
22ab14852dSMilanka Ringwald	gatt_service \
2394818a3bSMatthias Ringwald	hfp \
241c22f3beSMatthias Ringwald	hid_parser \
25*af7c3ae6SMatthias Ringwald	l2cap-cbm \
26*af7c3ae6SMatthias Ringwald	l2cap-ecbm \
2721c2455cSMilanka Ringwald	le_device_db_tlv \
28ae970bb9SMilanka Ringwald	linked_list \
2932ee5dd7SMatthias Ringwald	map_test \
30d491c1eaSMatthias Ringwald	mesh \
311c22f3beSMatthias Ringwald	obex \
32434cfc47SMatthias Ringwald	pts \
331c22f3beSMatthias Ringwald	ring_buffer \
349ccd94f8SMatthias Ringwald	sdp \
3557fe2af8SMatthias Ringwald	sdp_client \
36fe03d808SMatthias Ringwald	security_manager \
371c22f3beSMatthias Ringwald	tlv_posix \
382ce916b3SMatthias Ringwald
39464d3e43SMatthias Ringwald# not testing anything in source tree
40464d3e43SMatthias Ringwald#	maths \
4173e5d7d0SMatthias Ringwald# no unit tests
4273e5d7d0SMatthias Ringwald#	embedded \
4373e5d7d0SMatthias Ringwald#	gatt_server \
44b17ed348SMatthias Ringwald# mixes classic with ble
45b17ed348SMatthias Ringwald#    flash_tlv - contains btstack_linked_key_db tests
46b17ed348SMatthias Ringwald# hangs on buildbot (no output for 20 minutes -> abort)
47b17ed348SMatthias Ringwald#	security_manager_sc
48f400efd4SMatthias Ringwald
49f400efd4SMatthias RingwaldSUBDIRS_BLE = \
50d2011e9eSMilanka Ringwald	ad_parser \
51f400efd4SMatthias Ringwald	att_db \
52f400efd4SMatthias Ringwald	ble_client \
539b8d06a5SMilanka Ringwald	btstack_memory \
54f400efd4SMatthias Ringwald	crypto \
551ebfed24SMatthias Ringwald	embedded \
56f400efd4SMatthias Ringwald	gap \
570f7fd6c1SMilanka Ringwald	gatt-service-client \
58ae970bb9SMilanka Ringwald	gatt_client \
590ce29069SMatthias Ringwald	gatt_server \
600f7fd6c1SMilanka Ringwald	gatt_server \
61ab14852dSMilanka Ringwald	gatt_service \
62f400efd4SMatthias Ringwald	hid_parser \
63*af7c3ae6SMatthias Ringwald	l2cap-cbm \
6421c2455cSMilanka Ringwald	le_device_db_tlv \
65f400efd4SMatthias Ringwald	linked_list \
66f400efd4SMatthias Ringwald	ring_buffer \
67f400efd4SMatthias Ringwald	security_manager \
681f56122cSMatthias Ringwald
691c22f3beSMatthias Ringwald# test fails
701c22f3beSMatthias Ringwald
711c22f3beSMatthias Ringwald# not unit-tests
72464d3e43SMatthias Ringwald# avrcp \
731c22f3beSMatthias Ringwald# map_client \
741c22f3beSMatthias Ringwald# sbc \
75c757f61eSMatthias Ringwald#	gatt_server \
76c757f61eSMatthias Ringwald
77ea6d7f25SMatthias Ringwald.PHONY: coverage coverage-sm-sc.info coverage-pts.info
78deb45786SMatthias Ringwald
7957fe2af8SMatthias Ringwaldsubdirs:
8057fe2af8SMatthias Ringwald	echo Building all tests
81bbf26c65SMatthias Ringwald	@set -e; \
8257fe2af8SMatthias Ringwald	for dir in $(SUBDIRS); do \
8357fe2af8SMatthias Ringwald	  $(MAKE) -C $$dir; \
8457fe2af8SMatthias Ringwald	done
8557fe2af8SMatthias Ringwald
8657fe2af8SMatthias Ringwaldclean:
8757fe2af8SMatthias Ringwald	echo Clean all test
88bbf26c65SMatthias Ringwald	@set -e; \
8957fe2af8SMatthias Ringwald	for dir in $(SUBDIRS); do \
9057fe2af8SMatthias Ringwald	  $(MAKE) -C $$dir clean; \
9157fe2af8SMatthias Ringwald	done
9257fe2af8SMatthias Ringwald
939dbbd7d0SMatthias Ringwaldsubdirs-coverage:
949dbbd7d0SMatthias Ringwald	echo Run all tests for coverage
959dbbd7d0SMatthias Ringwald	@set -e; \
969dbbd7d0SMatthias Ringwald	for dir in $(SUBDIRS); do \
979dbbd7d0SMatthias Ringwald	  $(MAKE) -C $$dir coverage; \
989dbbd7d0SMatthias Ringwald	done
999dbbd7d0SMatthias Ringwald
1009dbbd7d0SMatthias Ringwaldsubdirs-coverage-ble:
1019dbbd7d0SMatthias Ringwald	echo Run all BLE tests for coverage
1029dbbd7d0SMatthias Ringwald	@set -e; \
1039dbbd7d0SMatthias Ringwald	for dir in $(SUBDIRS_BLE); do \
1049dbbd7d0SMatthias Ringwald	  $(MAKE) -C $$dir coverage; \
1059dbbd7d0SMatthias Ringwald	done
1069dbbd7d0SMatthias Ringwald
107f400efd4SMatthias Ringwald
108f8e02f4bSMatthias Ringwaldcoverage-pts.info:
109f8e02f4bSMatthias Ringwald	# download pts coverage and fix paths
1102245c6f6SMatthias Ringwald	curl https://bluekitchen-gmbh.com/btstack/develop/coverage-pts.info | sed "s|/Users/mringwal/buildbot-worker/auto-pts/btstack|`realpath ..`|" > coverage-pts.info
111f8e02f4bSMatthias Ringwald
112772d5e9eSMatthias Ringwaldcoverage-sm-sc.info:
113772d5e9eSMatthias Ringwald	# download pts coverage and fix paths
1140f304144SMatthias Ringwald	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
115772d5e9eSMatthias Ringwald
116f8e02f4bSMatthias Ringwald
117f4e14552SMatthias Ringwaldcoverage-unit.info: subdirs-coverage
118f400efd4SMatthias Ringwald	# delete trace data
119f400efd4SMatthias Ringwald	find . -name "*.gcda" -type f -delete
120f400efd4SMatthias Ringwald	# run tests
1219dbbd7d0SMatthias Ringwald	$(MAKE) subdirs-coverage
122464d3e43SMatthias Ringwald	# collect traces
123ee858f05SMatthias Ringwald	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info
124cf7023dfSMatthias Ringwald	# demangle
125cf7023dfSMatthias Ringwald	python3 coverage_demangle.py coverage-unit.info
126ee858f05SMatthias Ringwald
127f4e14552SMatthias Ringwaldcoverage-unit-ble.info: subdirs-coverage-ble
128f8e02f4bSMatthias Ringwald	# delete trace data
129f8e02f4bSMatthias Ringwald	find . -name "*.gcda" -type f -delete
130f8e02f4bSMatthias Ringwald	# run tests
1319dbbd7d0SMatthias Ringwald	$(MAKE) subdirs-coverage-ble
132f8e02f4bSMatthias Ringwald	# collect traces
133f8e02f4bSMatthias Ringwald	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info
134f8e02f4bSMatthias Ringwald	# demangle
135f8e02f4bSMatthias Ringwald	python3 coverage_demangle.py coverage-unit-ble.info
136ee858f05SMatthias Ringwald
137f8e02f4bSMatthias Ringwald
138772d5e9eSMatthias Ringwaldcoverage-ble.info: coverage-pts.info coverage-sm-sc.info coverage-unit-ble.info
139f8e02f4bSMatthias Ringwald	# combine unit-ble and pts
140772d5e9eSMatthias Ringwald	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
141ee858f05SMatthias Ringwald
142f8e02f4bSMatthias Ringwald
143f8e02f4bSMatthias Ringwaldcoverage-bat.info: coverage-ble.info
144f400efd4SMatthias Ringwald	# create bat subset from ble subset
145f400efd4SMatthias Ringwald	./coverage_subset_bat.py coverage-ble.info coverage-bat.info
146ee858f05SMatthias Ringwald
147cf7023dfSMatthias Ringwald
148772d5e9eSMatthias Ringwaldcoverage.info: coverage-pts.info coverage-sm-sc.info coverage-unit.info
149f8e02f4bSMatthias Ringwald	# combine unit-ble and pts
150772d5e9eSMatthias Ringwald	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-sm-sc.info -a coverage-unit.info --output-file coverage.info
151f8e02f4bSMatthias Ringwald
152f8e02f4bSMatthias Ringwald
153f8e02f4bSMatthias Ringwaldcoverage-all: coverage.info
154464d3e43SMatthias Ringwald	# generate html output
155d6f5473fSMatthias Ringwald	genhtml coverage.info     --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage
156f8e02f4bSMatthias Ringwald
157f8e02f4bSMatthias Ringwaldcoverage-bat: coverage-bat.info
158f8e02f4bSMatthias Ringwald	# generate html output
159f8e02f4bSMatthias Ringwald	genhtml coverage-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-bat
160f8e02f4bSMatthias Ringwald
161f8e02f4bSMatthias Ringwaldcoverage-ble: coverage-ble.info
162f8e02f4bSMatthias Ringwald	# generate html output
163f8e02f4bSMatthias Ringwald	genhtml coverage-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-ble
164f8e02f4bSMatthias Ringwald
16580dcb211SMatthias Ringwaldcoverage-unit-ble: coverage-unit-ble.info
16680dcb211SMatthias Ringwald	# generate html output
16780dcb211SMatthias Ringwald	genhtml coverage-unit-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit-ble
168f8e02f4bSMatthias Ringwald
169b7eced11SMatthias Ringwaldcoverage-sm-sc: coverage-sm-sc.info
170b7eced11SMatthias Ringwald	# generate html output
171b7eced11SMatthias Ringwald	genhtml coverage-sm-sc.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-sm-sc
172b7eced11SMatthias Ringwald
173f4e14552SMatthias Ringwaldcoverage-pts: coverage-pts.info
174f4e14552SMatthias Ringwald	# generate html output
175f4e14552SMatthias Ringwald	genhtml coverage-pts.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-pts
176f4e14552SMatthias Ringwald
177f8e02f4bSMatthias Ringwaldcoverage: coverage-all coverage-ble coverage-bat
178642d8b89SMatthias Ringwald
179642d8b89SMatthias Ringwaldtest:
180642d8b89SMatthias Ringwald	echo Run all tests with ASAN
181642d8b89SMatthias Ringwald	@set -e; \
182642d8b89SMatthias Ringwald	for dir in $(SUBDIRS); do \
183642d8b89SMatthias Ringwald	  $(MAKE) -C $$dir test; \
184642d8b89SMatthias Ringwald	done
185642d8b89SMatthias Ringwald
186642d8b89SMatthias Ringwaldtest-ble:
187642d8b89SMatthias Ringwald	echo Run all BLE tests with ASAN
188642d8b89SMatthias Ringwald	@set -e; \
189642d8b89SMatthias Ringwald	for dir in $(SUBDIRS_BLE); do \
190642d8b89SMatthias Ringwald	  $(MAKE) -C $$dir test; \
191642d8b89SMatthias Ringwald	done
192