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