1# Requirements: cpputest.github.io 2 3BTSTACK_ROOT = ../.. 4 5# CppuTest from pkg-config 6CFLAGS += ${shell pkg-config --cflags CppuTest} 7LDFLAGS += ${shell pkg-config --libs CppuTest} 8 9CFLAGS += -DUNIT_TEST -x c++ -g -Wall -Wnarrowing -Wconversion-null 10CFLAGS += -I../ 11 12CFLAGS += -I${BTSTACK_ROOT}/src 13CFLAGS += -I${BTSTACK_ROOT}/test/mock 14CFLAGS += -I${BTSTACK_ROOT}/3rd-party/rijndael 15 16VPATH += ${BTSTACK_ROOT}/src 17VPATH += ${BTSTACK_ROOT}/src/ble 18VPATH += ${BTSTACK_ROOT}/src/ble/gatt-service 19VPATH += ${BTSTACK_ROOT}/src/le-audio/gatt-service 20VPATH += ${BTSTACK_ROOT}/platform/posix 21VPATH += ${BTSTACK_ROOT}/3rd-party/rijndael 22VPATH += ${BTSTACK_ROOT}/test/mock 23 24COMMON = \ 25 ad_parser.c \ 26 att_db.c \ 27 btstack_hid_parser.c \ 28 battery_service_server.c \ 29 btstack_linked_list.c \ 30 btstack_memory.c \ 31 btstack_memory_pool.c \ 32 btstack_util.c \ 33 cycling_power_service_server.c \ 34 cycling_speed_and_cadence_service_server.c \ 35 device_information_service_server.c \ 36 hci_dump.c \ 37 heart_rate_service_server.c \ 38 hids_device.c \ 39 mock_att_server.c \ 40 nordic_spp_service_server.c \ 41 tx_power_service_server.c \ 42 ublox_spp_service_server.c \ 43 44 45CFLAGS_COVERAGE = ${CFLAGS} -Ibuild-coverage -fprofile-arcs -ftest-coverage 46CFLAGS_ASAN = ${CFLAGS} -Ibuild-asan -fsanitize=address -DHAVE_ASSERT 47 48LDFLAGS += -lCppUTest -lCppUTestExt 49LDFLAGS_COVERAGE = ${LDFLAGS} -fprofile-arcs -ftest-coverage 50LDFLAGS_ASAN = ${LDFLAGS} -fsanitize=address 51 52COMMON_OBJ_COVERAGE = $(addprefix build-coverage/,$(COMMON:.c=.o)) 53COMMON_OBJ_ASAN = $(addprefix build-asan/, $(COMMON:.c=.o)) 54 55 56all: build-coverage/battery_service_server_test build-asan/battery_service_server_test \ 57 build-coverage/device_information_service_server_test build-asan/device_information_service_server_test \ 58 build-coverage/tx_power_service_server_test build-asan/tx_power_service_server_test \ 59 build-coverage/bond_management_service_server_test build-asan/bond_management_service_server_test \ 60 build-coverage/heart_rate_service_server_test build-asan/heart_rate_service_server_test \ 61 62build-%: 63 mkdir -p $@ 64 65build-%/battery_service_server_test.h: battery_service_server_test.gatt | build-% 66 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 67 68build-%/device_information_service_server_test.h: device_information_service_server_test.gatt| build-% 69 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 70 71build-%/tx_power_service_server_test.h: tx_power_service_server_test.gatt| build-% 72 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 73 74build-%/bond_management_service_server_test.h: bond_management_service_server_test.gatt| build-% 75 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 76 77build-%/heart_rate_service_server_test.h: heart_rate_service_server_test.gatt| build-% 78 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 79 80build-coverage/%.o: %.c | build-coverage 81 ${CC} -c $(CFLAGS_COVERAGE) $< -o $@ 82 83build-coverage/%.o: %.cpp | build-coverage 84 ${CXX} -c $(CFLAGS_COVERAGE) $< -o $@ 85 86build-asan/%.o: %.c | build-asan 87 ${CC} -c $(CFLAGS_ASAN) $< -o $@ 88 89build-asan/%.o: %.cpp | build-asan 90 ${CXX} -c $(CFLAGS_ASAN) $< -o $@ 91 92build-coverage/battery_service_server_test: build-coverage/battery_service_server_test.h ${COMMON_OBJ_COVERAGE} build-coverage/battery_service_server_test.o | build-coverage 93 ${CXX} $(filter-out build-coverage/battery_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 94 95build-asan/battery_service_server_test: build-asan/battery_service_server_test.h ${COMMON_OBJ_ASAN} build-asan/battery_service_server_test.o | build-asan 96 ${CXX} $(filter-out build-asan/battery_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 97 98build-coverage/device_information_service_server_test: build-coverage/device_information_service_server_test.h ${COMMON_OBJ_COVERAGE} build-coverage/device_information_service_server_test.o | build-coverage 99 ${CXX} $(filter-out build-coverage/device_information_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 100 101build-asan/device_information_service_server_test: build-asan/device_information_service_server_test.h ${COMMON_OBJ_ASAN} build-asan/device_information_service_server_test.o | build-asan 102 ${CXX} $(filter-out build-asan/device_information_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 103 104build-coverage/tx_power_service_server_test: build-coverage/tx_power_service_server_test.h ${COMMON_OBJ_COVERAGE} build-coverage/tx_power_service_server_test.o | build-coverage 105 ${CXX} $(filter-out build-coverage/tx_power_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 106 107build-asan/tx_power_service_server_test: build-asan/tx_power_service_server_test.h ${COMMON_OBJ_ASAN} build-asan/tx_power_service_server_test.o | build-asan 108 ${CXX} $(filter-out build-asan/tx_power_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 109 110build-coverage/bond_management_service_server_test: build-coverage/bond_management_service_server_test.h ${COMMON_OBJ_COVERAGE} build-coverage/bond_management_service_server.o build-coverage/bond_management_service_server_test.o | build-coverage 111 ${CXX} $(filter-out build-coverage/bond_management_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 112 113build-asan/bond_management_service_server_test: build-asan/bond_management_service_server_test.h ${COMMON_OBJ_ASAN} build-asan/bond_management_service_server.o build-asan/bond_management_service_server_test.o | build-asan 114 ${CXX} $(filter-out build-asan/bond_management_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 115 116build-coverage/heart_rate_service_server_test: build-coverage/heart_rate_service_server_test.h ${COMMON_OBJ_COVERAGE} build-coverage/heart_rate_service_server.o build-coverage/heart_rate_service_server_test.o | build-coverage 117 ${CXX} $(filter-out build-coverage/heart_rate_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 118 119build-asan/heart_rate_service_server_test: build-asan/heart_rate_service_server_test.h ${COMMON_OBJ_ASAN} build-asan/heart_rate_service_server.o build-asan/heart_rate_service_server_test.o | build-asan 120 ${CXX} $(filter-out build-asan/heart_rate_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 121 122test: all 123 build-asan/battery_service_server_test 124 build-asan/device_information_service_server_test 125 build-asan/tx_power_service_server_test 126 build-asan/bond_management_service_server_test 127 build-asan/heart_rate_service_server_test 128 129coverage: all 130 rm -f build-coverage/*.gcda 131 build-coverage/battery_service_server_test 132 build-coverage/device_information_service_server_test 133 build-coverage/tx_power_service_server_test 134 build-coverage/bond_management_service_server_test 135 build-coverage/heart_rate_service_server_test 136 137clean: 138 rm -rf build-coverage build-asan 139 140