1 2# Makefile to build and run all tests 3 4SUBDIRS = \ 5 att_db \ 6 avdtp \ 7 avdtp_util \ 8 base64 \ 9 ble_client \ 10 btstack_link_key_db \ 11 crypto \ 12 des_iterator \ 13 flash_tlv \ 14 gatt_client \ 15 gap \ 16 hfp \ 17 hid_parser \ 18 linked_list \ 19 map_test \ 20 mesh \ 21 obex \ 22 ring_buffer \ 23 sdp \ 24 sdp_client \ 25 security_manager \ 26 tlv_posix \ 27 security_manager_sc \ 28 29# not testing anything in source tree 30# maths \ 31# no unit tests 32# embedded \ 33# gatt_server \ 34 35# flash_tlv also contains btstack_linked_key_db tests 36 37SUBDIRS_BLE = \ 38 att_db \ 39 ble_client \ 40 crypto \ 41 gatt_client \ 42 gap \ 43 hid_parser \ 44 linked_list \ 45 ring_buffer \ 46 security_manager \ 47 security_manager_sc \ 48# tlv_posix \ 49 50# test fails 51 52# not unit-tests 53# avrcp \ 54# map_client \ 55# sbc \ 56# gatt_server \ 57 58.PHONY: coverage 59 60subdirs: 61 echo Building all tests 62 @set -e; \ 63 for dir in $(SUBDIRS); do \ 64 $(MAKE) -C $$dir; \ 65 done 66 67clean: 68 echo Clean all test 69 @set -e; \ 70 for dir in $(SUBDIRS); do \ 71 $(MAKE) -C $$dir clean; \ 72 done 73 74test: 75 echo Run all test 76 @set -e; \ 77 for dir in $(SUBDIRS); do \ 78 $(MAKE) -C $$dir test; \ 79 done 80 81test-ble: 82 echo Run all BLE tests 83 @set -e; \ 84 for dir in $(SUBDIRS_BLE); do \ 85 $(MAKE) -C $$dir test; \ 86 done 87 88test-coverage-ble: subdirs 89 # delete trace data 90 find . -name "*.gcda" -type f -delete 91 # run tests 92 $(MAKE) test-ble 93 # collect traces 94 lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info 95 # demangle 96 python3 coverage_demangle.py coverage-unit-ble.info 97 98test-coverage: subdirs 99 # delete trace data 100 find . -name "*.gcda" -type f -delete 101 # run tests 102 $(MAKE) test 103 # collect traces 104 lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info 105 # demangle 106 python3 coverage_demangle.py coverage-unit.info 107 108coverage: test-coverage test-coverage-ble 109 # download pts coverage and fix paths 110 curl https://bluekitchen-gmbh.com/btstack/develop/coverage-pts.info | sed 's|buildbot-worker/auto-pts/btstack|buildbot-worker/test-develop/build|' > coverage-pts.info 111 112 # combine unit[-ble] and pts 113 lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-unit.info --output-file coverage.info 114 lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-unit-ble.info --output-file coverage-ble.info 115 116 # create bat subset from ble subset 117 ./coverage_subset_bat.py coverage-ble.info coverage-bat.info 118 ./coverage_subset_bat.py coverage-unit-ble.info coverage-unit-bat.info 119 120 ./coverage_subset_bat.py coverage-pts.info coverage-pts-bat.info 121 122 # generate html output 123 genhtml coverage-unit.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit 124 genhtml coverage-unit-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit-bat 125 genhtml coverage-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-bat 126 genhtml coverage.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage 127 genhtml coverage-pts-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-pts-bat 128