18e8dfe94SMatthias Ringwald# Requirements: cpputest.github.io 2dd280e25S[email protected] 3dd280e25S[email protected]BTSTACK_ROOT = ../.. 4dd280e25S[email protected] 5*98e87e77SMatthias Ringwald# CppuTest from pkg-config 6*98e87e77SMatthias RingwaldCFLAGS += ${shell pkg-config --cflags CppuTest} 7*98e87e77SMatthias RingwaldLDFLAGS += ${shell pkg-config --libs CppuTest} 8*98e87e77SMatthias Ringwald 9*98e87e77SMatthias RingwaldCFLAGS += -DUNIT_TEST -g -Wall -Wnarrowing -Wconversion-null 10e0ff5d41SMatthias RingwaldCFLAGS += -I${BTSTACK_ROOT}/src 11e0ff5d41SMatthias RingwaldCFLAGS += -I.. 12e0ff5d41SMatthias Ringwald 1357fe2af8SMatthias RingwaldLDFLAGS += -lCppUTest -lCppUTestExt 1457fe2af8SMatthias Ringwald 153edc84c5SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/src/classic 1657fe2af8SMatthias RingwaldVPATH += ${BTSTACK_ROOT}/src 17dd9e275cSMatthias RingwaldVPATH += ${BTSTACK_ROOT}/platform/posix 18dd280e25S[email protected] 19dd280e25S[email protected]COMMON = \ 2057fe2af8SMatthias Ringwald sdp_util.c \ 216c927b22SMatthias Ringwald sdp_client.c \ 224c7b5f74SMatthias Ringwald spp_server.c \ 236c927b22SMatthias Ringwald mock.c \ 24e04f4e1fSMatthias Ringwald hci_dump.c \ 25eb886013SMatthias Ringwald btstack_util.c \ 26dd280e25S[email protected] 27cd56fb44SMatthias RingwaldCFLAGS_COVERAGE = ${CFLAGS} -fprofile-arcs -ftest-coverage 2871d52576SMatthias RingwaldCFLAGS_ASAN = ${CFLAGS} -fsanitize=address -DHAVE_ASSERT 29dd280e25S[email protected] 30cd56fb44SMatthias RingwaldLDFLAGS += -lCppUTest -lCppUTestExt 31cd56fb44SMatthias RingwaldLDFLAGS_COVERAGE = ${LDFLAGS} -fprofile-arcs -ftest-coverage 32cd56fb44SMatthias RingwaldLDFLAGS_ASAN = ${LDFLAGS} -fsanitize=address 33dd280e25S[email protected] 34cd56fb44SMatthias RingwaldCOMMON_OBJ_COVERAGE = $(addprefix build-coverage/,$(COMMON:.c=.o)) 35cd56fb44SMatthias RingwaldCOMMON_OBJ_ASAN = $(addprefix build-asan/, $(COMMON:.c=.o)) 36cd56fb44SMatthias Ringwald 37cd56fb44SMatthias Ringwaldall: $(addprefix build-coverage/, sdp_rfcomm_query general_sdp_query service_attribute_search_query service_search_query) \ 38cd56fb44SMatthias Ringwald $(addprefix build-asan/, sdp_rfcomm_query general_sdp_query service_attribute_search_query service_search_query) 39cd56fb44SMatthias Ringwald 40cd56fb44SMatthias Ringwaldbuild-%: 41cd56fb44SMatthias Ringwald mkdir -p $@ 423d87570fSMatthias Ringwald 433d87570fSMatthias Ringwaldbuild-coverage/%.o: %.c | build-coverage 44cd56fb44SMatthias Ringwald ${CC} -c $(CFLAGS_COVERAGE) $< -o $@ 453d87570fSMatthias Ringwald 461d3bd1e5SMatthias Ringwaldbuild-coverage/%.o: %.cpp | build-coverage 471d3bd1e5SMatthias Ringwald ${CXX} -c $(CFLAGS_COVERAGE) $< -o $@ 481d3bd1e5SMatthias Ringwald 49cd56fb44SMatthias Ringwaldbuild-asan/%.o: %.c | build-asan 50cd56fb44SMatthias Ringwald ${CC} -c $(CFLAGS_ASAN) $< -o $@ 51f30458f1S[email protected] 521d3bd1e5SMatthias Ringwaldbuild-asan/%.o: %.cpp | build-asan 531d3bd1e5SMatthias Ringwald ${CXX} -c $(CFLAGS_ASAN) $< -o $@ 54dd280e25S[email protected] 55cd56fb44SMatthias Ringwaldbuild-coverage/sdp_rfcomm_query: ${COMMON_OBJ_COVERAGE} build-coverage/sdp_client_rfcomm.o build-coverage/sdp_rfcomm_query.o build-coverage/btstack_linked_list.o | build-coverage 561d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_COVERAGE} -o $@ 5720f37ec3S[email protected] 58cd56fb44SMatthias Ringwaldbuild-coverage/general_sdp_query: ${COMMON_OBJ_COVERAGE} build-coverage/general_sdp_query.o build-coverage/btstack_linked_list.o | build-coverage 591d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_COVERAGE} -o $@ 60cd56fb44SMatthias Ringwald 61cd56fb44SMatthias Ringwaldbuild-coverage/service_attribute_search_query: ${COMMON_OBJ_COVERAGE} build-coverage/service_attribute_search_query.o build-coverage/btstack_linked_list.o | build-coverage 621d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_COVERAGE} -o $@ 63cd56fb44SMatthias Ringwald 64cd56fb44SMatthias Ringwaldbuild-coverage/service_search_query: ${COMMON_OBJ_COVERAGE} build-coverage/service_search_query.o build-coverage/btstack_linked_list.o | build-coverage 651d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_COVERAGE} -o $@ 66cd56fb44SMatthias Ringwald 67cd56fb44SMatthias Ringwald 68cd56fb44SMatthias Ringwaldbuild-asan/sdp_rfcomm_query: ${COMMON_OBJ_ASAN} build-asan/sdp_client_rfcomm.o build-asan/sdp_rfcomm_query.o build-asan/btstack_linked_list.o | build-asan 691d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_ASAN} -o $@ 70cd56fb44SMatthias Ringwald 71cd56fb44SMatthias Ringwaldbuild-asan/general_sdp_query: ${COMMON_OBJ_ASAN} build-asan/general_sdp_query.o build-asan/btstack_linked_list.o | build-asan 721d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_ASAN} -o $@ 73cd56fb44SMatthias Ringwald 74cd56fb44SMatthias Ringwaldbuild-asan/service_attribute_search_query: ${COMMON_OBJ_ASAN} build-asan/service_attribute_search_query.o build-asan/btstack_linked_list.o | build-asan 751d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_ASAN} -o $@ 76cd56fb44SMatthias Ringwald 77cd56fb44SMatthias Ringwaldbuild-asan/service_search_query: ${COMMON_OBJ_ASAN} build-asan/service_search_query.o build-asan/btstack_linked_list.o | build-asan 781d3bd1e5SMatthias Ringwald ${CXX} $^ ${LDFLAGS_ASAN} -o $@ 79cd56fb44SMatthias Ringwald 8020f37ec3S[email protected] 818e8dfe94SMatthias Ringwaldtest: all 82cd56fb44SMatthias Ringwald ASAN_OPTIONS=detect_leaks=0 build-asan/sdp_rfcomm_query 83cd56fb44SMatthias Ringwald build-asan/general_sdp_query 84cd56fb44SMatthias Ringwald build-asan/service_attribute_search_query 85cd56fb44SMatthias Ringwald build-asan/service_search_query 86cd56fb44SMatthias Ringwald 87cd56fb44SMatthias Ringwaldcoverage: all 88cd56fb44SMatthias Ringwald rm -f build-coverage/*.gcda 893d87570fSMatthias Ringwald ASAN_OPTIONS=detect_leaks=0 build-coverage/sdp_rfcomm_query 903d87570fSMatthias Ringwald build-coverage/general_sdp_query 913d87570fSMatthias Ringwald build-coverage/service_attribute_search_query 923d87570fSMatthias Ringwald build-coverage/service_search_query 933d87570fSMatthias Ringwald 94dd280e25S[email protected]clean: 95cd56fb44SMatthias Ringwald rm -rf build-coverage build-asan 96