From b06f6e9d4158771ee180d60e3d3998771b724cb3 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 5 Jun 2013 17:30:08 +1000 Subject: [PATCH] Hook up gcov Signed-off-by: Peter Hutterer --- configure.ac | 20 ++++++++++++++++++++ libevdev/Makefile.am | 4 +++- test/Makefile.am | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 71 insertions(+), 5 deletions(-) diff --git a/configure.ac b/configure.ac index 623d457..d296f49 100644 --- a/configure.ac +++ b/configure.ac @@ -50,6 +50,26 @@ fi AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes]) +AC_MSG_CHECKING([whether to build with gcov]) +AC_ARG_ENABLE([gcov], + [AS_HELP_STRING([--enable-gcov], + [Whether to enable coverage testing (default:enabled)])] + [], + [enable_gcov=yes], + ) +AS_IF([test "x$enable_gcov" != "xno"], + [ + GCOV_CFLAGS="-fprofile-arcs -ftest-coverage" + GCOV_LDFLAGS="-fprofile-arcs -ftest-coverage" + enable_gcov=yes + ], +) + +AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" != "xno"]) +AC_SUBST([GCOV_CFLAGS]) +AC_SUBST([GCOV_LDFLAGS]) +AC_MSG_RESULT([$enable_gcov]) + AC_CONFIG_FILES([Makefile libevdev/Makefile man/Makefile diff --git a/libevdev/Makefile.am b/libevdev/Makefile.am index 8cffc2e..d780267 100644 --- a/libevdev/Makefile.am +++ b/libevdev/Makefile.am @@ -1,12 +1,14 @@ lib_LTLIBRARIES=libevdev.la +AM_CPPFLAGS = $(GCOV_CFLAGS) + libevdev_la_SOURCES = \ libevdev.h \ libevdev-int.h \ libevdev-util.h \ libevdev.c -libevdev_la_LDFLAGS = -version-info $(LIBEVDEV_LT_VERSION) -export-symbols-regex '^libevdev_' +libevdev_la_LDFLAGS = -version-info $(LIBEVDEV_LT_VERSION) -export-symbols-regex '^libevdev_' $(GCOV_LDFLAGS) libevdevincludedir = $(includedir)/libevdev-1.0/libevdev libevdevinclude_HEADERS = libevdev.h diff --git a/test/Makefile.am b/test/Makefile.am index 3ed6850..a4d5d8f 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -8,13 +8,57 @@ libevdev_sources = $(top_srcdir)/libevdev/libevdev.c \ $(top_srcdir)/libevdev/libevdev-int.h common_sources = $(libevdev_sources) test-common-uinput.c test-common-uinput.h -AM_CPPFLAGS = -I$(top_srcdir)/libevdev $(CHECK_CFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/libevdev $(CHECK_CFLAGS) $(GCOV_CFLAGS) + + test_event_names_SOURCES = test-event-names.c $(common_sources) -test_event_names_LDADD = $(CHECK_LIBS) +test_event_names_LDADD = $(CHECK_LIBS) $(GCOV_LDFLAGS) test_libevdev_init_SOURCES = test-libevdev-init.c $(common_sources) -test_libevdev_init_LDADD = $(CHECK_LIBS) +test_libevdev_init_LDADD = $(CHECK_LIBS) $(GCOV_LDFLAGS) test_libevdev_has_event_SOURCES = test-libevdev-has-event.c $(common_sources) -test_libevdev_has_event_LDADD = $(CHECK_LIBS) +test_libevdev_has_event_LDADD = $(CHECK_LIBS) $(GCOV_LDFLAGS) + +if GCOV_ENABLED +gcov-clean: + @rm -f *.gcov + +gcov-report.txt: gcov-clean check-TESTS + $(AM_V_GEN)(rm -rf $@; \ + echo "========== coverage report ========" >> $@; \ + for file in `find $(top_srcdir)/libevdev -name "*.c" -printf "%P\n"`; do \ + gcov $$file > /dev/null; \ + if test -f $$file.gcov; then \ + total=`grep -v " -:" $$file.gcov | wc -l`; \ + missing=`grep "#####" $$file.gcov | wc -l`; \ + hit=$$((total - missing)); \ + echo -e "$$file: total lines: $$total not tested: $$missing ($$((($$hit * 100)/$$total))%)"; \ + fi \ + done >> $@; \ + echo "========== =============== ========" >> $@; \ + ) + +gcov: gcov-report.txt + @cat gcov-report.txt + +check-local: gcov + +else + +gcov-report.txt: + @true + +gcov: + @true + +gcov-clean: + @true + +endif + +.PHONY: gcov gcov-clean gcov-report.txt + +clean-local: gcov-clean + rm -f *.gcno *.gcda -- 2.7.4