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 gap \ 52 gatt_client \ 53 gatt_service \ 54 hid_parser \ 55 le_device_db_tlv \ 56 linked_list \ 57 ring_buffer \ 58 gatt_server \ 59 security_manager \ 60 embedded \ 61# test fails 62 63# not unit-tests 64# avrcp \ 65# map_client \ 66# sbc \ 67# gatt_server \ 68 69.PHONY: coverage coverage-sm-sc.info coverage-pts.info 70 71subdirs: 72 echo Building all tests 73 @set -e; \ 74 for dir in $(SUBDIRS); do \ 75 $(MAKE) -C $$dir; \ 76 done 77 78clean: 79 echo Clean all test 80 @set -e; \ 81 for dir in $(SUBDIRS); do \ 82 $(MAKE) -C $$dir clean; \ 83 done 84 85test: 86 echo Run all test 87 @set -e; \ 88 for dir in $(SUBDIRS); do \ 89 $(MAKE) -C $$dir test; \ 90 done 91 92test-ble: 93 echo Run all BLE tests 94 @set -e; \ 95 for dir in $(SUBDIRS_BLE); do \ 96 $(MAKE) -C $$dir test; \ 97 done 98 99 100coverage-pts.info: 101 # download pts coverage and fix paths 102 curl https://bluekitchen-gmbh.com/btstack/develop/coverage-pts.info | sed "s|/Users/mringwal/buildbot-worker/auto-pts/btstack|`realpath ..`|" > coverage-pts.info 103 104coverage-sm-sc.info: 105 # download pts coverage and fix paths 106 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 107 108 109coverage-unit.info: subdirs 110 # delete trace data 111 find . -name "*.gcda" -type f -delete 112 # run tests 113 $(MAKE) test 114 # collect traces 115 lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info 116 # demangle 117 python3 coverage_demangle.py coverage-unit.info 118 119coverage-unit-ble.info: subdirs 120 # delete trace data 121 find . -name "*.gcda" -type f -delete 122 # run tests 123 $(MAKE) test-ble 124 # collect traces 125 lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info 126 # demangle 127 python3 coverage_demangle.py coverage-unit-ble.info 128 129 130coverage-ble.info: coverage-pts.info coverage-sm-sc.info coverage-unit-ble.info 131 # combine unit-ble and pts 132 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 133 134 135coverage-bat.info: coverage-ble.info 136 # create bat subset from ble subset 137 ./coverage_subset_bat.py coverage-ble.info coverage-bat.info 138 139 140coverage.info: coverage-pts.info coverage-sm-sc.info coverage-unit.info 141 # combine unit-ble and pts 142 lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-sm-sc.info -a coverage-unit.info --output-file coverage.info 143 144 145coverage-all: coverage.info 146 # generate html output 147 genhtml coverage.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage 148 149coverage-bat: coverage-bat.info 150 # generate html output 151 genhtml coverage-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-bat 152 153coverage-ble: coverage-ble.info 154 # generate html output 155 genhtml coverage-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-ble 156 157coverage-unit-ble: coverage-unit-ble.info 158 # generate html output 159 genhtml coverage-unit-ble.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit-ble 160 161coverage-sm-sc: coverage-sm-sc.info 162 # generate html output 163 genhtml coverage-sm-sc.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-sm-sc 164 165coverage: coverage-all coverage-ble coverage-bat 166