xref: /btstack/test/mesh/Makefile (revision 08a78038ba366a6a2a2df8fea05d5123880fdff2)
1 # Makefile for libusb based examples
2BTSTACK_ROOT = ../..
3
4# CppuTest from pkg-config
5CFLAGS  += ${shell pkg-config --cflags CppuTest}
6LDFLAGS += ${shell pkg-config --libs   CppuTest}
7
8ATT  += \
9	att_dispatch.c       	    \
10	att_db.c 				 	\
11	att_server.c        	    \
12	gatt_bearer.c               \
13	mesh_proxy_service_server.c \
14
15CORE += \
16	adv_bearer.c \
17	beacon.c \
18	btstack_link_key_db_fs.c \
19	btstack_run_loop_posix.c \
20	btstack_stdin_posix.c \
21	btstack_uart_posix_pty.c \
22	hci_transport_h2_libusb.c \
23	hci_transport_h4.c \
24	btstack_tlv_posix.c \
25	mesh_iv_index_seq_number.c \
26	mesh_node.c \
27	le_device_db_fs.c \
28	l2cap.c \
29	uECC.c \
30	rijndael.c \
31	hci_dump_posix_fs.c \
32
33
34# examples
35include ${BTSTACK_ROOT}/example/Makefile.inc
36include ${BTSTACK_ROOT}/src/ble/gatt-service/Makefile.inc
37
38
39CFLAGS  += -g -DUNIT_TEST -Wall \
40	-I$(BTSTACK_ROOT)/platform/embedded \
41	-I$(BTSTACK_ROOT)/platform/posix \
42	-I$(BTSTACK_ROOT)/3rd-party/tinydir \
43	-I$(BTSTACK_ROOT)/3rd-party/rijndael \
44
45CFLAGS += -Wmissing-prototypes -Wstrict-prototypes -Wshadow -Wunused-parameter -Wredundant-decls -Wsign-compare
46
47VPATH += ${BTSTACK_ROOT}/3rd-party/rijndael
48VPATH += ${BTSTACK_ROOT}/src/mesh
49VPATH += ${BTSTACK_ROOT}/src/classic
50VPATH += ${BTSTACK_ROOT}/platform/posix
51VPATH += ${BTSTACK_ROOT}/platform/embedded
52VPATH += ${BTSTACK_ROOT}/platform/libusb
53VPATH += ${BTSTACK_ROOT}/src/ble/gatt-service
54
55# libusb
56CFLAGS  += $(shell pkg-config libusb-1.0 --cflags)
57LDFLAGS += $(shell pkg-config libusb-1.0 --libs)
58
59CFLAGS_COVERAGE = ${CFLAGS} -fprofile-arcs -ftest-coverage
60CFLAGS_ASAN     = ${CFLAGS} -fsanitize=address -DHAVE_ASSERT
61
62# cppUTest
63LDFLAGS += -lCppUTest -lCppUTestExt
64
65LDFLAGS_COVERAGE = ${LDFLAGS} -fprofile-arcs -ftest-coverage
66LDFLAGS_ASAN     = ${LDFLAGS} -fsanitize=address
67
68COMMON_OBJ_COVERAGE      = $(addprefix build-coverage/,$(COMMON_OBJ))
69CORE_OBJ_COVERAGE        = $(addprefix build-coverage/,$(CORE_OBJ))
70ATT_OBJ_COVERAGE         = $(addprefix build-coverage/,$(ATT_OBJ))
71GATT_SERVER_OBJ_COVERAGE = $(addprefix build-coverage/,$(GATT_SERVER_OBJ))
72SM_OB_COVERAGE           = $(addprefix build-coverage/,$(SM_OB))
73MESH_OBJ_COVERAGE        = $(addprefix build-coverage/,$(MESH_OBJ))
74
75COMMON_OBJ_ASAN          = $(addprefix build-asan/,$(COMMON_OBJ))
76CORE_OBJ_ASAN            = $(addprefix build-asan/,$(CORE_OBJ))
77ATT_OBJ_ASAN             = $(addprefix build-asan/,$(ATT_OBJ))
78GATT_SERVER_OBJ_ASAN     = $(addprefix build-asan/,$(GATT_SERVER_OBJ))
79SM_OB_ASAN               = $(addprefix build-asan/,$(SM_OB))
80MESH_OBJ_ASAN            = $(addprefix build-asan/,$(MESH_OBJ))
81
82TESTS_SRCS = mesh_message_test provisioning_device_test provisioning_provisioner_test mesh_configuration_composition_data_message_test
83EXAMPLES =   mesh_pts provisioner sniffer
84
85
86all:   $(addprefix build-asan/,$(EXAMPLES))
87tests: $(addprefix build-asan/,$(TESTS_SRCS))
88
89build-%:
90	mkdir -p $@
91
92
93build-coverage/%.o: %.c | build-coverage
94	${CC} -c $(CFLAGS_COVERAGE) ${CPPFLAGS} $< -o $@
95
96build-coverage/%.o: %.cpp | build-coverage
97	${CXX} -c $(CFLAGS_COVERAGE) ${CPPFLAGS} $< -o $@
98
99build-asan/%.o: %.c | build-asan
100	${CC} -c $(CFLAGS_ASAN) ${CPPFLAGS} $< -o $@
101
102build-asan/%.o: %.cpp | build-asan
103	${CXX} -c $(CFLAGS_ASAN) ${CPPFLAGS} $< -o $@
104
105
106build-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
107	${CC} $(filter-out mesh_pts.h,$^) ${LDFLAGS_ASAN} -o $@
108
109build-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
110	${CC} $^ ${LDFLAGS_ASAN} -o $@
111
112build-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
113	${CC} $^ ${LDFLAGS_ASAN} -o $@
114
115
116build-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
117	${CXX} $^ ${CFLAGS} ${LDFLAGS_ASAN} -o $@
118
119build-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
120	${CXX} ${LDFLAGS_ASAN} $^ -lCppUTest -lCppUTestExt -o $@
121
122build-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
123	${CXX} ${LDFLAGS_ASAN} $^ -lCppUTest -lCppUTestExt -o $@
124
125build-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
126	${CXX} ${LDFLAGS_ASAN} $^ -lCppUTest -lCppUTestExt -o $@
127
128
129test: tests
130	# Ignore leaks in mesh message test as tests stop before all PDUs are fully processed
131	ASAN_OPTIONS=detect_leaks=0 build-asan/mesh_message_test
132	build-asan/provisioning_device_test
133	build-asan/provisioning_provisioner_test
134	build-asan/mesh_configuration_composition_data_message_test
135
136coverage: tests
137	rm -f build-coverage/*.gcda
138	@echo "no coverage here"
139
140clean:
141	rm -rf build-coverage build-asan
142