xref: /btstack/test/mesh/Makefile (revision 98e87e7776ef9a7fe55135aea8cddc761fe3a7a5)
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