Add optional usage of gcov for test coverage

Use gcov to find how much code coverage our current testing gets. This
can be enabled by passing --with-gcov to configure and running "make
gcov". This is limited to gcc. Here's a run from the current code (for
some reason, gcov insists on profiling gstring.h).

/usr/bin/gcov pkg.h pkg.c parse.h parse.c main.c
File 'pkg.c'
Lines executed:73.16% of 611
pkg.c:creating 'pkg.c.gcov'

File '/usr/include/glib-2.0/glib/gstring.h'
Lines executed:100.00% of 6
/usr/include/glib-2.0/glib/gstring.h:creating 'gstring.h.gcov'

File 'parse.c'
Lines executed:79.67% of 492
parse.c:creating 'parse.c.gcov'

File 'main.c'
Lines executed:57.34% of 293
main.c:creating 'main.c.gcov'
This commit is contained in:
Dan Nicholson 2012-09-28 05:45:37 -07:00
parent a35c3fc95e
commit e68baa7463
3 changed files with 31 additions and 0 deletions

3
.gitignore vendored
View file

@ -6,6 +6,9 @@
*.so
*.exe
*.orig
*.gcda
*.gcno
*.gcov
.deps/
.libs/
INSTALL

View file

@ -24,6 +24,7 @@ endif
AM_CFLAGS = \
$(WARN_CFLAGS) \
$(GCOV_CFLAGS) \
$(GLIB_CFLAGS)
bin_PROGRAMS = pkg-config
@ -42,6 +43,12 @@ dist_doc_DATA = pkg-config-guide.html
dist_man_MANS = pkg-config.1
EXTRA_DIST = README.win32
# gcov test coverage
gcov:
-$(MAKE) $(AM_MAKEFLAGS) -k check
$(GCOV) $(pkg_config_SOURCES)
CLEANFILES = *.gcda *.gcno *.gcov
# Since we can't always have glib in DIST_SUBDIRS, we need to make sure
# glib is configured when we want to run dist. Unfortunately, there's no
# DIST_CONFIGURE_FLAGS.

View file

@ -182,6 +182,27 @@ fi
AC_SUBST(GLIB_LIBS)
AC_SUBST(GLIB_CFLAGS)
dnl
dnl Optional gcov test coverage usage
dnl
AC_ARG_WITH([gcov],
[AS_HELP_STRING([--with-gcov], [gcov test coverage @<:@default=no@:>@])],
[],
[with_gcov=no])
if test "x$with_gcov" = xyes; then
if test "$GCC" = no; then
AC_MSG_ERROR([gcov test coverage can only be used with GCC])
fi
AC_PATH_PROG([GCOV], [gcov], [AC_MSG_ERROR([could not find gcov program])])
GCOV_CFLAGS="-fprofile-arcs -ftest-coverage"
# Ensure there's no optimizing since last -O wins and CFLAGS is used
# at the end of COMPILE/LTCOMPILE.
CFLAGS="${CFLAGS+$CFLAGS }-O0"
fi
AC_SUBST([GCOV_CFLAGS])
AC_CONFIG_FILES([
Makefile
check/Makefile