This reverts commit
f38d553e2d6ec2f041cb7947b5eafcdd3b26ae65.
Gnulib's make coverage (or init-coverage, build-coverage, gen-coverage)
is not a 1-1 replacement for the original configure option. Our old
--enable-test-coverage seems to be close to gnulib's make build-coverage
except gnulib runs lcov in that phase and the build actually fails for
me even before lcov is run. And since we want to be able to just build
libvirt without running lcov, I suggest reverting to our own
implementation.
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Acked-By: Eric Blake <eblake@redhat.com>
## License along with this library. If not, see
## <http://www.gnu.org/licenses/>.
+LCOV = lcov
+GENHTML = genhtml
+
SUBDIRS = . gnulib/lib include/libvirt src tools docs gnulib/tests \
tests po examples
XZ_OPT ?= -v -T0
export XZ_OPT
-# have gnulib 'make coverage' output to 'cov' dir
-COVERAGE_OUT = "cov"
-
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = \
check-access: all
@($(MAKE) $(AM_MAKEFLAGS) -C tests check-access)
+cov: clean-cov
+ $(MKDIR_P) $(top_builddir)/coverage
+ $(LCOV) -c -o $(top_builddir)/coverage/libvirt.info.tmp \
+ -d $(top_builddir)/src \
+ -d $(top_builddir)/tests
+ $(LCOV) -r $(top_builddir)/coverage/libvirt.info.tmp \
+ -o $(top_builddir)/coverage/libvirt.info
+ rm $(top_builddir)/coverage/libvirt.info.tmp
+ $(GENHTML) --show-details -t "libvirt" -o $(top_builddir)/coverage \
+ --legend $(top_builddir)/coverage/libvirt.info
+
+clean-cov:
+ rm -rf $(top_builddir)/coverage
+
MAINTAINERCLEANFILES = .git-module-status
dist-hook: gen-AUTHORS
AC_SUBST([VIR_TEST_EXPENSIVE_DEFAULT])
AM_CONDITIONAL([WITH_EXPENSIVE_TESTS], [test $VIR_TEST_EXPENSIVE_DEFAULT = 1])
+LIBVIRT_ARG_ENABLE([TEST_COVERAGE], [turn on code coverage instrumentation], [no])
+case "$enable_test_coverage" in
+ yes|no) ;;
+ *) AC_MSG_ERROR([bad value ${enable_test_coverga} for test-coverage option]) ;;
+esac
+
+if test "$enable_test_coverage" = yes; then
+ save_WARN_CFLAGS=$WARN_CFLAGS
+ WARN_CFLAGS=
+ gl_WARN_ADD([-fprofile-arcs])
+ gl_WARN_ADD([-ftest-coverage])
+ COVERAGE_FLAGS=$WARN_CFLAGS
+ AC_SUBST([COVERAGE_CFLAGS], [$COVERAGE_FLAGS])
+ AC_SUBST([COVERAGE_LDFLAGS], [$COVERAGE_FLAGS])
+ WARN_CFLAGS=$save_WARN_CFLAGS
+fi
+
LIBVIRT_ARG_ENABLE([TEST_OOM], [memory allocation failure checking], [no])
case "$enable_test_oom" in
yes|no) ;;
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Test suite])
AC_MSG_NOTICE([])
+AC_MSG_NOTICE([ Coverage: $enable_test_coverage])
AC_MSG_NOTICE([ Alloc OOM: $enable_test_oom])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Miscellaneous])
$(WARN_CFLAGS) \
$(LOCK_CHECKING_CFLAGS) \
$(WIN32_EXTRA_CFLAGS) \
+ $(COVERAGE_CFLAGS) \
$(NULL)
AM_LDFLAGS = $(DRIVER_MODULES_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(RELRO_LDFLAGS) \
$(NO_INDIRECT_LDFLAGS) \
$(CYGWIN_EXTRA_LDFLAGS) \
$(LIBNL_CFLAGS) \
$(WARN_CFLAGS) \
$(PIE_CFLAGS) \
+ $(COVERAGE_CFLAGS) \
-I$(srcdir)/access \
-I$(srcdir)/conf \
-I$(srcdir)/rpc \
$(PIE_LDFLAGS) \
$(NO_INDIRECT_LDFLAGS) \
$(NO_UNDEFINED_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(NULL)
REMOTE_DAEMON_LD_ADD = \
$(SELINUX_CFLAGS) \
$(APPARMOR_CFLAGS) \
$(YAJL_CFLAGS) \
+ $(COVERAGE_CFLAGS) \
$(XDR_CFLAGS) \
$(WARN_CFLAGS)
# This is a fake SSH we use from virnetsockettest
ssh_SOURCES = ssh.c
+ssh_LDADD = $(COVERAGE_LDFLAGS)
if WITH_LIBXL
test_programs += xlconfigtest \
AM_CFLAGS = \
$(WARN_CFLAGS) \
+ $(COVERAGE_CFLAGS) \
$(PIE_CFLAGS) \
$(LIBXML_CFLAGS) \
$(NULL)
libvirt_shell_la_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(NULL)
libvirt_shell_la_LIBADD = \
../src/libvirt.la \
virt_host_validate_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(NULL)
virt_host_validate_LDADD = \
virt_login_shell_helper_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(NULL)
virt_login_shell_helper_LDADD = \
../src/libvirt.la \
virsh_LDFLAGS = \
$(AM_LDFLAGS) \
$(PIE_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(NULL)
virsh_LDADD = \
$(STATIC_BINARIES) \
virt_admin_LDFLAGS = \
$(AM_LDFLAGS) \
+ $(COVERAGE_LDFLAGS) \
$(STATIC_BINARIES) \
$(PIE_LDFLAGS) \
$(NULL)