1# Requirements: cpputest.github.io 2 3BTSTACK_ROOT = ../.. 4 5CFLAGS = -DUNIT_TEST -x c++ -g -Wall -Wnarrowing -Wconversion-null 6CFLAGS += -I../ 7 8CFLAGS += -I${BTSTACK_ROOT}/src 9CFLAGS += -I${BTSTACK_ROOT}/test/mock 10CFLAGS += -I${BTSTACK_ROOT}/3rd-party/rijndael 11 12VPATH += ${BTSTACK_ROOT}/src 13VPATH += ${BTSTACK_ROOT}/src/ble 14VPATH += ${BTSTACK_ROOT}/src/ble/gatt-service 15VPATH += ${BTSTACK_ROOT}/platform/posix 16VPATH += ${BTSTACK_ROOT}/3rd-party/rijndael 17VPATH += ${BTSTACK_ROOT}/test/mock 18 19COMMON = \ 20 ad_parser.c \ 21 att_db.c \ 22 audio_input_control_service_server.c \ 23 battery_service_server.c \ 24 btstack_linked_list.c \ 25 btstack_memory.c \ 26 btstack_memory_pool.c \ 27 btstack_util.c \ 28 cycling_power_service_server.c \ 29 cycling_speed_and_cadence_service_server.c \ 30 device_information_service_server.c \ 31 hci_dump.c \ 32 heart_rate_service_server.c \ 33 hids_device.c \ 34 microphone_control_service_server.c \ 35 mock_att_server.c \ 36 nordic_spp_service_server.c \ 37 tx_power_service_server.c \ 38 ublox_spp_service_server.c \ 39 40 41CFLAGS_COVERAGE = ${CFLAGS} -Ibuild-coverage -fprofile-arcs -ftest-coverage 42CFLAGS_ASAN = ${CFLAGS} -Ibuild-asan -fsanitize=address -DHAVE_ASSERT 43 44LDFLAGS += -lCppUTest -lCppUTestExt 45LDFLAGS_COVERAGE = ${LDFLAGS} -fprofile-arcs -ftest-coverage 46LDFLAGS_ASAN = ${LDFLAGS} -fsanitize=address 47 48COMMON_OBJ_COVERAGE = $(addprefix build-coverage/,$(COMMON:.c=.o)) 49COMMON_OBJ_ASAN = $(addprefix build-asan/, $(COMMON:.c=.o)) 50 51 52all: build-coverage/battery_service_server_test build-asan/battery_service_server_test \ 53 build-coverage/device_information_service_server_test build-asan/device_information_service_server_test \ 54 build-coverage/tx_power_service_server_test build-asan/tx_power_service_server_test \ 55 build-coverage/bond_management_service_server_test build-asan/bond_management_service_server_test \ 56 build-coverage/microphone_control_service_server_test build-asan/microphone_control_service_server_test \ 57 build-coverage/heart_rate_service_server_test build-asan/heart_rate_service_server_test \ 58 59build-%: 60 mkdir -p $@ 61 62build-%/battery_service_server_test.h: battery_service_server_test.gatt | build-% 63 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 64 65build-%/device_information_service_server_test.h: device_information_service_server_test.gatt| build-% 66 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 67 68build-%/tx_power_service_server_test.h: tx_power_service_server_test.gatt| build-% 69 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 70 71build-%/bond_management_service_server_test.h: bond_management_service_server_test.gatt| build-% 72 python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ 73 74build-%/microphone_control_service_server_test.h: microphone_control_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/microphone_control_service_server_test: build-coverage/microphone_control_service_server_test.h ${COMMON_OBJ_COVERAGE} build-coverage/microphone_control_service_server.o build-coverage/microphone_control_service_server_test.o | build-coverage 117 ${CXX} $(filter-out build-coverage/microphone_control_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 118 119build-asan/microphone_control_service_server_test: build-asan/microphone_control_service_server_test.h ${COMMON_OBJ_ASAN} build-asan/microphone_control_service_server.o build-asan/microphone_control_service_server_test.o | build-asan 120 ${CXX} $(filter-out build-asan/microphone_control_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 121 122build-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 123 ${CXX} $(filter-out build-coverage/heart_rate_service_server_test.h,$^) ${LDFLAGS_COVERAGE} -o $@ 124 125build-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 126 ${CXX} $(filter-out build-asan/heart_rate_service_server_test.h,$^) ${LDFLAGS_ASAN} -o $@ 127 128test: all 129 build-asan/battery_service_server_test 130 build-asan/device_information_service_server_test 131 build-asan/tx_power_service_server_test 132 build-asan/bond_management_service_server_test 133 build-asan/microphone_control_service_server_test 134 build-asan/heart_rate_service_server_test 135 136coverage: all 137 rm -f build-coverage/*.gcda 138 build-coverage/battery_service_server_test 139 build-coverage/device_information_service_server_test 140 build-coverage/tx_power_service_server_test 141 build-coverage/bond_management_service_server_test 142 build-coverage/microphone_control_service_server_test 143 build-coverage/heart_rate_service_server_test 144 145clean: 146 rm -rf build-coverage build-asan 147 148