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