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