# Makefile for libusb based PTS tests BTSTACK_ROOT = ../.. # CppuTest from pkg-config CFLAGS += ${shell pkg-config --cflags CppuTest} LDFLAGS += ${shell pkg-config --libs CppuTest} CORE += \ btstack_memory.c \ btstack_linked_list.c \ btstack_memory_pool.c \ btstack_run_loop.c \ btstack_util.c \ main.c \ btstack_stdin_posix.c \ btstack_tlv.c \ btstack_tlv_posix.c \ rijndael.c \ COMMON += \ hci.c \ ad_parser.c \ hci_cmd.c \ hci_dump.c \ hci_dump_posix_fs.c \ l2cap.c \ l2cap_signaling.c \ hci_transport_h2_libusb.c \ btstack_crypto.c \ btstack_run_loop_posix.c \ le_device_db_tlv.c \ sm.c \ uECC.c \ btstack_chipset_zephyr.c \ ATT += \ att_dispatch.c \ GATT_SERVER += \ att_db.c \ att_server.c \ GATT_CLIENT += \ gatt_client.c \ SM += \ sm.c \ CFLAGS += -g -std=c99 -Wall -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wunused-parameter -Wredundant-decls -Wsign-compare CFLAGS += -D ENABLE_TESTING_SUPPORT CFLAGS += -DCOVERAGE CFLAGS += -I. CFLAGS += -Ibuild-coverage CFLAGS += -I${BTSTACK_ROOT}/src CFLAGS += -I${BTSTACK_ROOT}/3rd-party/micro-ecc CFLAGS += -I${BTSTACK_ROOT}/3rd-party/rijndael CFLAGS += -I${BTSTACK_ROOT}/3rd-party/tinydir CFLAGS += -I${BTSTACK_ROOT}/chipset/zephyr CFLAGS += -I${BTSTACK_ROOT}/platform/posix CFLAGS += -I${BTSTACK_ROOT}/platform/embedded VPATH += ${BTSTACK_ROOT}/src VPATH += ${BTSTACK_ROOT}/src/ble VPATH += ${BTSTACK_ROOT}/platform/posix VPATH += ${BTSTACK_ROOT}/platform/libusb VPATH += ${BTSTACK_ROOT}/3rd-party/micro-ecc VPATH += ${BTSTACK_ROOT}/3rd-party/rijndael VPATH += ${BTSTACK_ROOT}/chipset/zephyr # coverage CFLAGS += -fprofile-arcs -ftest-coverage LDFLAGS += -fprofile-arcs -ftest-coverage # use pkg-config for libusb CFLAGS += $(shell pkg-config libusb-1.0 --cflags) LDFLAGS += $(shell pkg-config libusb-1.0 --libs) CORE_OBJ = $(addprefix build-coverage/,$(CORE:.c=.o)) COMMON_OBJ = $(addprefix build-coverage/,$(COMMON:.c=.o)) ATT_OBJ = $(addprefix build-coverage/,$(ATT:.c=.o)) SM_OBJ = $(addprefix build-coverage/,$(SM:.c=.o)) GATT_CLIENT_OBJ = $(addprefix build-coverage/,$(GATT_CLIENT:.c=.o)) GATT_SERVER_OBJ = $(addprefix build-coverage/,$(GATT_SERVER:.c=.o)) # compile .gatt descriptions build-coverage/%.h: %.gatt python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ .PHONY: all coverage test all: build-coverage/sm_test build-%: mkdir -p $@ build-coverage/sm_test.h: sm_test.gatt | build-coverage python3 ${BTSTACK_ROOT}/tool/compile_gatt.py $< $@ build-coverage/%.o: %.c | build-coverage ${CC} -c $(CFLAGS) ${CPPFLAGS} $< -o $@ build-coverage/sm_test: build-coverage/sm_test.h ${CORE_OBJ} ${COMMON_OBJ} ${ATT_OBJ} ${GATT_SERVER_OBJ} ${GATT_CLIENT_OBJ} ${SM_OBJ} build-coverage/sm_test.o | build-coverage ${CC} $(filter-out build-coverage/sm_test.h,$^) ${LDFLAGS} -o $@ myclean: rm -rf build-coverage rm -f *.o rm -rf *.dSYM rm -f *.gcno *.gcda rm -rf SM_* clean: myclean test: build-coverage/sm_test rm -rf SM_* python3 ./sm_test.py coverage: build-coverage/sm_test # delete trace data rm -f build-coverage/*.gcda # run tests make test # collect traces lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-sm-sc.info # demangle python3 ../coverage_demangle.py coverage-sm-sc.info