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_server \ 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_service_server \ 61 hid_parser \ 62 l2cap-cbm \ 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 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-sm-sc.info: 108 # download sm_sc_replay coverage and fix paths 109 curl https://bluekitchen-gmbh.com/btstack/develop/coverage-sm-sc.info | sed "s|/Users/mringwal/buildbot-worker/test-develop-sm-sc-replay/btstack|`realpath ..`|" > coverage-sm-sc.info 110 111 112coverage-unit.info: subdirs-coverage 113 # delete trace data 114 find . -name "*.gcda" -type f -delete 115 # run tests 116 $(MAKE) subdirs-coverage 117 # collect traces 118 lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info 119 120coverage-unit-ble.info: subdirs-coverage-ble 121 # delete trace data 122 find . -name "*.gcda" -type f -delete 123 # run tests 124 $(MAKE) subdirs-coverage-ble 125 # collect traces 126 lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info 127 128 129coverage-ble.info: coverage-sm-sc.info coverage-unit-ble.info 130 # combine unit-ble and sm-sc-replay 131 lcov --rc lcov_branch_coverage=1 -a coverage-sm-sc.info -a coverage-unit-ble.info --output-file coverage-ble.info 132 133 134coverage-bat.info: coverage-ble.info 135 # create bat subset from ble subset 136 ./coverage_subset_bat.py coverage-ble.info coverage-bat.info 137 138 139coverage.info: coverage-sm-sc.info coverage-unit.info 140 # combine unit-ble and sm-sc-replay 141 lcov --rc lcov_branch_coverage=1 -a coverage-sm-sc.info -a coverage-unit.info --output-file coverage.info 142 143 144coverage-all: coverage.info 145 # generate html output 146 genhtml coverage.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage 147 148coverage-bat: coverage-bat.info 149 # generate html output 150 genhtml coverage-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-bat 151 152coverage-ble: coverage-ble.info 153 # generate html output 154 genhtml coverage-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-ble 155 156coverage-unit-ble: coverage-unit-ble.info 157 # generate html output 158 genhtml coverage-unit-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit-ble 159 160coverage-sm-sc: coverage-sm-sc.info 161 # generate html output 162 genhtml coverage-sm-sc.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-sm-sc 163 164coverage: coverage-all coverage-ble coverage-bat 165 166test: 167 echo Run all tests with ASAN 168 @set -e; \ 169 for dir in $(SUBDIRS); do \ 170 $(MAKE) -C $$dir test; \ 171 done 172 173test-ble: 174 echo Run all BLE tests with ASAN 175 @set -e; \ 176 for dir in $(SUBDIRS_BLE); do \ 177 $(MAKE) -C $$dir test; \ 178 done 179