11fbe4564SMatthias Ringwald # Makefile for libusb based examples 21fbe4564SMatthias RingwaldBTSTACK_ROOT = ../.. 31fbe4564SMatthias Ringwald 4*98e87e77SMatthias Ringwald# CppuTest from pkg-config 5*98e87e77SMatthias RingwaldCFLAGS += ${shell pkg-config --cflags CppuTest} 6*98e87e77SMatthias RingwaldLDFLAGS += ${shell pkg-config --libs CppuTest} 7*98e87e77SMatthias Ringwald 8752b29f3SMilanka RingwaldATT += \ 9752b29f3SMilanka Ringwald att_dispatch.c \ 10752b29f3SMilanka Ringwald att_db.c \ 11752b29f3SMilanka Ringwald att_server.c \ 12752b29f3SMilanka Ringwald gatt_bearer.c \ 13752b29f3SMilanka Ringwald mesh_proxy_service_server.c \ 14752b29f3SMilanka Ringwald 151fbe4564SMatthias RingwaldCORE += \ 161fbe4564SMatthias Ringwald adv_bearer.c \ 171fbe4564SMatthias Ringwald beacon.c \ 181fbe4564SMatthias Ringwald btstack_link_key_db_fs.c \ 191fbe4564SMatthias Ringwald btstack_run_loop_posix.c \ 201fbe4564SMatthias Ringwald btstack_stdin_posix.c \ 21f8da99a8SMatthias Ringwald btstack_uart_posix_pty.c \ 221fbe4564SMatthias Ringwald hci_transport_h2_libusb.c \ 231fbe4564SMatthias Ringwald hci_transport_h4.c \ 241fbe4564SMatthias Ringwald btstack_tlv_posix.c \ 2504875b11SMatthias Ringwald mesh_iv_index_seq_number.c \ 260e329b41SMatthias Ringwald mesh_node.c \ 271fbe4564SMatthias Ringwald le_device_db_fs.c \ 281fbe4564SMatthias Ringwald l2cap.c \ 291fbe4564SMatthias Ringwald uECC.c \ 301fbe4564SMatthias Ringwald rijndael.c \ 3131437b52SMatthias Ringwald hci_dump_posix_fs.c \ 321fbe4564SMatthias Ringwald 3339018edaSMilanka Ringwald 341fbe4564SMatthias Ringwald# examples 351fbe4564SMatthias Ringwaldinclude ${BTSTACK_ROOT}/example/Makefile.inc 36777f7d8dSMilanka Ringwaldinclude ${BTSTACK_ROOT}/src/ble/gatt-service/Makefile.inc 371fbe4564SMatthias Ringwald 3839018edaSMilanka Ringwald 3926ecb624SMilanka RingwaldCFLAGS += -g -DUNIT_TEST -Wall \ 401fbe4564SMatthias Ringwald -I$(BTSTACK_ROOT)/platform/embedded \ 411fbe4564SMatthias Ringwald -I$(BTSTACK_ROOT)/platform/posix \ 421fbe4564SMatthias Ringwald -I$(BTSTACK_ROOT)/3rd-party/tinydir \ 43f13fc290SMatthias Ringwald -I$(BTSTACK_ROOT)/3rd-party/rijndael \ 441fbe4564SMatthias Ringwald 4513753703SMatthias RingwaldCFLAGS += -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wunused-parameter -Wredundant-decls -Wsign-compare 46497cc682SMatthias Ringwald 47f13fc290SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/3rd-party/rijndael 4877ba3d3fSMatthias RingwaldVPATH += ${BTSTACK_ROOT}/src/mesh 491fbe4564SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/src/classic 501fbe4564SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/platform/posix 511fbe4564SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/platform/embedded 521fbe4564SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/platform/libusb 53777f7d8dSMilanka RingwaldVPATH += ${BTSTACK_ROOT}/src/ble/gatt-service 541fbe4564SMatthias Ringwald 551fbe4564SMatthias Ringwald# libusb 561fbe4564SMatthias RingwaldCFLAGS += $(shell pkg-config libusb-1.0 --cflags) 571fbe4564SMatthias RingwaldLDFLAGS += $(shell pkg-config libusb-1.0 --libs) 581fbe4564SMatthias Ringwald 59cd56fb44SMatthias RingwaldCFLAGS_COVERAGE = ${CFLAGS} -fprofile-arcs -ftest-coverage 6071d52576SMatthias RingwaldCFLAGS_ASAN = ${CFLAGS} -fsanitize=address -DHAVE_ASSERT 61cd56fb44SMatthias Ringwald 62c956179dSMatthias Ringwald# cppUTest 63c956179dSMatthias RingwaldLDFLAGS += -lCppUTest -lCppUTestExt 64c956179dSMatthias Ringwald 65cd56fb44SMatthias RingwaldLDFLAGS_COVERAGE = ${LDFLAGS} -fprofile-arcs -ftest-coverage 66cd56fb44SMatthias RingwaldLDFLAGS_ASAN = ${LDFLAGS} -fsanitize=address 67c956179dSMatthias Ringwald 68cd56fb44SMatthias RingwaldCOMMON_OBJ_COVERAGE = $(addprefix build-coverage/,$(COMMON_OBJ)) 69cd56fb44SMatthias RingwaldCORE_OBJ_COVERAGE = $(addprefix build-coverage/,$(CORE_OBJ)) 70cd56fb44SMatthias RingwaldATT_OBJ_COVERAGE = $(addprefix build-coverage/,$(ATT_OBJ)) 71cd56fb44SMatthias RingwaldGATT_SERVER_OBJ_COVERAGE = $(addprefix build-coverage/,$(GATT_SERVER_OBJ)) 72cd56fb44SMatthias RingwaldSM_OB_COVERAGE = $(addprefix build-coverage/,$(SM_OB)) 73cd56fb44SMatthias RingwaldMESH_OBJ_COVERAGE = $(addprefix build-coverage/,$(MESH_OBJ)) 741fbe4564SMatthias Ringwald 75cd56fb44SMatthias RingwaldCOMMON_OBJ_ASAN = $(addprefix build-asan/,$(COMMON_OBJ)) 76cd56fb44SMatthias RingwaldCORE_OBJ_ASAN = $(addprefix build-asan/,$(CORE_OBJ)) 77cd56fb44SMatthias RingwaldATT_OBJ_ASAN = $(addprefix build-asan/,$(ATT_OBJ)) 78cd56fb44SMatthias RingwaldGATT_SERVER_OBJ_ASAN = $(addprefix build-asan/,$(GATT_SERVER_OBJ)) 79cd56fb44SMatthias RingwaldSM_OB_ASAN = $(addprefix build-asan/,$(SM_OB)) 80cd56fb44SMatthias RingwaldMESH_OBJ_ASAN = $(addprefix build-asan/,$(MESH_OBJ)) 81777f7d8dSMilanka Ringwald 823d87570fSMatthias RingwaldTESTS_SRCS = mesh_message_test provisioning_device_test provisioning_provisioner_test mesh_configuration_composition_data_message_test 833d87570fSMatthias RingwaldEXAMPLES = mesh_pts provisioner sniffer 841fbe4564SMatthias Ringwald 85cd56fb44SMatthias Ringwald 86cd56fb44SMatthias Ringwaldall: $(addprefix build-asan/,$(EXAMPLES)) 87cd56fb44SMatthias Ringwaldtests: $(addprefix build-asan/,$(TESTS_SRCS)) 88cd56fb44SMatthias Ringwald 89cd56fb44SMatthias Ringwaldbuild-%: 90cd56fb44SMatthias Ringwald mkdir -p $@ 91cd56fb44SMatthias Ringwald 921fbe4564SMatthias Ringwald 933d87570fSMatthias Ringwaldbuild-coverage/%.o: %.c | build-coverage 94cd56fb44SMatthias Ringwald ${CC} -c $(CFLAGS_COVERAGE) ${CPPFLAGS} $< -o $@ 953d87570fSMatthias Ringwald 963d87570fSMatthias Ringwaldbuild-coverage/%.o: %.cpp | build-coverage 971d3bd1e5SMatthias Ringwald ${CXX} -c $(CFLAGS_COVERAGE) ${CPPFLAGS} $< -o $@ 983d87570fSMatthias Ringwald 99cd56fb44SMatthias Ringwaldbuild-asan/%.o: %.c | build-asan 100cd56fb44SMatthias Ringwald ${CC} -c $(CFLAGS_ASAN) ${CPPFLAGS} $< -o $@ 101cd56fb44SMatthias Ringwald 102cd56fb44SMatthias Ringwaldbuild-asan/%.o: %.cpp | build-asan 1031d3bd1e5SMatthias Ringwald ${CXX} -c $(CFLAGS_ASAN) ${CPPFLAGS} $< -o $@ 104cd56fb44SMatthias Ringwald 105cd56fb44SMatthias Ringwald 106cd56fb44SMatthias Ringwaldbuild-asan/mesh_pts: mesh_pts.h ${CORE_OBJ_ASAN} ${COMMON_OBJ_ASAN} ${ATT_OBJ_ASAN} ${GATT_SERVER_OBJ_ASAN} ${SM_OBJ_ASAN} ${MESH_OBJ_ASAN} build-asan/main.o build-asan/mesh_pts.o 107cd56fb44SMatthias Ringwald ${CC} $(filter-out mesh_pts.h,$^) ${LDFLAGS_ASAN} -o $@ 108cd56fb44SMatthias Ringwald 109cd56fb44SMatthias Ringwaldbuild-asan/provisioner: ${CORE_OBJ_ASAN} ${COMMON_OBJ_ASAN} ${ATT_OBJ_ASAN} ${SM_OBJ_ASAN} build-asan/main.o build-asan/pb_adv.o build-asan/mesh_crypto.o build-asan/provisioning_provisioner.o build-asan/mesh_keys.o build-asan/mesh_foundation.o build-asan/mesh_network.o build-asan/provisioner.o 110cd56fb44SMatthias Ringwald ${CC} $^ ${LDFLAGS_ASAN} -o $@ 111cd56fb44SMatthias Ringwald 112cd56fb44SMatthias Ringwaldbuild-asan/sniffer: ${CORE_OBJ_ASAN} ${COMMON_OBJ_ASAN} ${ATT_OBJ_ASAN} ${SM_OBJ_ASAN} build-asan/main.o build-asan/mesh_keys.o build-asan/mesh_network.o build-asan/mesh_foundation.o build-asan/sniffer.o 113cd56fb44SMatthias Ringwald ${CC} $^ ${LDFLAGS_ASAN} -o $@ 114cd56fb44SMatthias Ringwald 115cd56fb44SMatthias Ringwald 11631437b52SMatthias Ringwaldbuild-asan/mesh_message_test: $(addprefix build-asan/, mesh_message_test.o mesh_foundation.o mesh_node.o mesh_iv_index_seq_number.o mesh_network.o mesh_peer.o mesh_lower_transport.o mesh_upper_transport.o mesh_virtual_addresses.o mesh_keys.o mesh_crypto.o btstack_memory.o btstack_memory_pool.o btstack_util.o btstack_crypto.o btstack_linked_list.o hci_dump.o uECC.o mock.o rijndael.o hci_cmd.o hci_dump_posix_fs.o) | build-asan 1171d3bd1e5SMatthias Ringwald ${CXX} $^ ${CFLAGS} ${LDFLAGS_ASAN} -o $@ 118cd56fb44SMatthias Ringwald 11931437b52SMatthias Ringwaldbuild-asan/provisioning_device_test: $(addprefix build-asan/, provisioning_device_test.o uECC.o mesh_crypto.o provisioning_device.o btstack_crypto.o btstack_util.o btstack_linked_list.o mesh_node.o mock.o rijndael.o hci_cmd.o hci_dump.o hci_dump_posix_fs.o) | build-asan 1201d3bd1e5SMatthias Ringwald ${CXX} ${LDFLAGS_ASAN} $^ -lCppUTest -lCppUTestExt -o $@ 121cd56fb44SMatthias Ringwald 12231437b52SMatthias Ringwaldbuild-asan/provisioning_provisioner_test: $(addprefix build-asan/, provisioning_provisioner_test.o uECC.o mesh_crypto.o provisioning_provisioner.o btstack_crypto.o btstack_util.o btstack_linked_list.o mock.o rijndael.o hci_cmd.o hci_dump.o hci_dump_posix_fs.o) | build-asan 1231d3bd1e5SMatthias Ringwald ${CXX} ${LDFLAGS_ASAN} $^ -lCppUTest -lCppUTestExt -o $@ 124cd56fb44SMatthias Ringwald 125cd56fb44SMatthias Ringwaldbuild-asan/mesh_configuration_composition_data_message_test: ${CORE_OBJ_ASAN} ${COMMON_OBJ_ASAN} ${ATT_OBJ_ASAN} ${MESH_OBJ_ASAN} build-asan/mesh_configuration_composition_data_message_test.o | build-asan 1261d3bd1e5SMatthias Ringwald ${CXX} ${LDFLAGS_ASAN} $^ -lCppUTest -lCppUTestExt -o $@ 127cd56fb44SMatthias Ringwald 1283d87570fSMatthias Ringwald 1293d87570fSMatthias Ringwaldtest: tests 130c9fe0d9fSMatthias Ringwald # Ignore leaks in mesh message test as tests stop before all PDUs are fully processed 131cd56fb44SMatthias Ringwald ASAN_OPTIONS=detect_leaks=0 build-asan/mesh_message_test 132cd56fb44SMatthias Ringwald build-asan/provisioning_device_test 133cd56fb44SMatthias Ringwald build-asan/provisioning_provisioner_test 134cd56fb44SMatthias Ringwald build-asan/mesh_configuration_composition_data_message_test 1353d87570fSMatthias Ringwald 1363d87570fSMatthias Ringwaldcoverage: tests 137cd56fb44SMatthias Ringwald rm -f build-coverage/*.gcda 138cd56fb44SMatthias Ringwald @echo "no coverage here" 139d491c1eaSMatthias Ringwald 140777f7d8dSMilanka Ringwaldclean: 141cd56fb44SMatthias Ringwald rm -rf build-coverage build-asan 142