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