summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2019-01-25 21:40:53 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2019-02-04 19:07:18 +0100
commitf797b7a1a9d7a095fc91399e40907142639e2f4e (patch)
tree92b618668218d6f3440dd0067bec949610218d44
parent71afdf09b820180f3125eeefaeb787155e7333fc (diff)
downloadgnutls-tmp-code-coverage-update.tar.gz
ax_code_coverage.m4: updated to latest macrotmp-code-coverage-update
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--Makefile.am4
-rw-r--r--lib/Makefile.am4
-rw-r--r--lib/accelerated/Makefile.am2
-rw-r--r--lib/accelerated/aarch64/Makefile.am2
-rw-r--r--lib/accelerated/x86/Makefile.am2
-rw-r--r--lib/algorithms/Makefile.am2
-rw-r--r--lib/auth/Makefile.am2
-rw-r--r--lib/common.mk5
-rw-r--r--lib/ext/Makefile.am2
-rw-r--r--lib/extras/Makefile.am2
-rw-r--r--lib/minitasn1/Makefile.am2
-rw-r--r--lib/nettle/Makefile.am2
-rw-r--r--lib/x509/Makefile.am2
-rw-r--r--libdane/Makefile.am6
-rw-r--r--m4/ax_code_coverage.m4310
15 files changed, 180 insertions, 169 deletions
diff --git a/Makefile.am b/Makefile.am
index 26d3dbbccb..82ca94a547 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,6 +19,8 @@
# along with this file; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+include $(top_srcdir)/aminclude_static.am
+
DISTCHECK_CONFIGURE_FLAGS = --enable-doc --enable-gtk-doc --disable-valgrind-tests AUTOGEN=false
SUBDIRS = gl lib extra
@@ -149,8 +151,6 @@ symbol-check:
fi
rm -f symbols.last.tmp symbols.diff.tmp
-@CODE_COVERAGE_RULES@
-
local-code-coverage-output: code-coverage-capture
cat GnuTLS-$(VERSION)-coverage/index.html|grep headerCovTableEntry|grep '%'|head -1|sed 's/^.*>\([0-9]\+\.[0-9]\+\s*%\)<.*$$/ coverage lines: \1/' || true
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 9f140469da..efb4a13eec 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -33,7 +33,7 @@ localedir = $(datadir)/locale
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-DLOCALEDIR=\"$(localedir)\" \
-I$(srcdir)/../gl \
-I$(builddir)/../gl \
@@ -207,7 +207,7 @@ if MACOSX
libgnutls_la_LDFLAGS += -framework Security -framework CoreFoundation
endif
-libgnutls_la_LIBADD += $(thirdparty_libadd)
+libgnutls_la_LIBADD += $(thirdparty_libadd) $(COMMON_LINK_LIBS)
# C++ library
diff --git a/lib/accelerated/Makefile.am b/lib/accelerated/Makefile.am
index ae6adf966e..ba6cccecb5 100644
--- a/lib/accelerated/Makefile.am
+++ b/lib/accelerated/Makefile.am
@@ -21,7 +21,7 @@
include $(top_srcdir)/lib/common.mk
SUBDIRS =
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/../includes \
diff --git a/lib/accelerated/aarch64/Makefile.am b/lib/accelerated/aarch64/Makefile.am
index ccf37e991b..d2cc477aab 100644
--- a/lib/accelerated/aarch64/Makefile.am
+++ b/lib/accelerated/aarch64/Makefile.am
@@ -22,7 +22,7 @@ AM_LIBTOOLFLAGS=--tag=CC
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = -I$(srcdir)/../../../gl \
+AM_CPPFLAGS += -I$(srcdir)/../../../gl \
-I$(builddir)/../../../gl \
-I$(srcdir)/../../includes \
-I$(builddir)/../../includes \
diff --git a/lib/accelerated/x86/Makefile.am b/lib/accelerated/x86/Makefile.am
index c4ee6a1308..9335f92a39 100644
--- a/lib/accelerated/x86/Makefile.am
+++ b/lib/accelerated/x86/Makefile.am
@@ -22,7 +22,7 @@ AM_LIBTOOLFLAGS=--tag=CC
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = -I$(srcdir)/../../../gl \
+AM_CPPFLAGS += -I$(srcdir)/../../../gl \
-I$(builddir)/../../../gl \
-I$(srcdir)/../../includes \
-I$(builddir)/../../includes \
diff --git a/lib/algorithms/Makefile.am b/lib/algorithms/Makefile.am
index 2f5607e5a8..ef8c5efda2 100644
--- a/lib/algorithms/Makefile.am
+++ b/lib/algorithms/Makefile.am
@@ -20,7 +20,7 @@
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/../includes \
diff --git a/lib/auth/Makefile.am b/lib/auth/Makefile.am
index 9f749b04ed..f335e27623 100644
--- a/lib/auth/Makefile.am
+++ b/lib/auth/Makefile.am
@@ -20,7 +20,7 @@
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/../includes \
diff --git a/lib/common.mk b/lib/common.mk
index 6a1b7855d6..79eba663b1 100644
--- a/lib/common.mk
+++ b/lib/common.mk
@@ -1,3 +1,6 @@
+AM_CPPFLAGS = \
+ $(CODE_COVERAGE_CPPFLAGS)
+
AM_CFLAGS = $(WERROR_CFLAGS) $(WSTACK_CFLAGS) $(WARN_CFLAGS) $(NETTLE_CFLAGS) \
$(LIBTASN1_CFLAGS) $(LIBIDN2_CFLAGS) $(P11_KIT_CFLAGS) $(CODE_COVERAGE_CFLAGS)
-COMMON_LINK_FLAGS = $(CODE_COVERAGE_LDFLAGS)
+COMMON_LINK_LIBS = $(CODE_COVERAGE_LIBS)
diff --git a/lib/ext/Makefile.am b/lib/ext/Makefile.am
index c8ef79101c..f28f71d97c 100644
--- a/lib/ext/Makefile.am
+++ b/lib/ext/Makefile.am
@@ -20,7 +20,7 @@
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/../includes \
diff --git a/lib/extras/Makefile.am b/lib/extras/Makefile.am
index a22eb27238..a87682530d 100644
--- a/lib/extras/Makefile.am
+++ b/lib/extras/Makefile.am
@@ -20,7 +20,7 @@
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/../includes \
diff --git a/lib/minitasn1/Makefile.am b/lib/minitasn1/Makefile.am
index 9b6769746d..2a6d51941b 100644
--- a/lib/minitasn1/Makefile.am
+++ b/lib/minitasn1/Makefile.am
@@ -22,7 +22,7 @@
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = -DASN1_BUILDING \
+AM_CPPFLAGS += -DASN1_BUILDING \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/..
diff --git a/lib/nettle/Makefile.am b/lib/nettle/Makefile.am
index 30a195b52b..23cc9f6b62 100644
--- a/lib/nettle/Makefile.am
+++ b/lib/nettle/Makefile.am
@@ -22,7 +22,7 @@ include $(top_srcdir)/lib/common.mk
AM_CFLAGS += $(HOGWEED_CFLAGS) $(GMP_CFLAGS)
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/int \
-I$(srcdir)/backport \
-I$(srcdir)/../../gl \
diff --git a/lib/x509/Makefile.am b/lib/x509/Makefile.am
index a10cd2f00c..a0048cee0f 100644
--- a/lib/x509/Makefile.am
+++ b/lib/x509/Makefile.am
@@ -18,7 +18,7 @@
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../../gl \
-I$(builddir)/../../gl \
-I$(srcdir)/../includes \
diff --git a/libdane/Makefile.am b/libdane/Makefile.am
index d2b4e835ac..c9ed8eefb7 100644
--- a/libdane/Makefile.am
+++ b/libdane/Makefile.am
@@ -22,7 +22,7 @@ ACLOCAL_AMFLAGS = -I ../m4 -I ../gl/m4
include $(top_srcdir)/lib/common.mk
-AM_CPPFLAGS = \
+AM_CPPFLAGS += \
-I$(srcdir)/../gl \
-I$(builddir)/../gl \
-I$(builddir)/../lib/includes \
@@ -34,14 +34,14 @@ AM_CPPFLAGS = \
SUBDIRS = includes
-libgnutls_dane_la_LDFLAGS = -no-undefined $(COMMON_LINK_FLAGS)
+libgnutls_dane_la_LDFLAGS = -no-undefined
lib_LTLIBRARIES = libgnutls-dane.la
libgnutls_dane_la_SOURCES = dane.c dane-params.c errors.c libdane.map
libgnutls_dane_la_LIBADD = ../gl/libgnu.la \
- ../lib/libgnutls.la
+ ../lib/libgnutls.la $(COMMON_LINK_LIBS)
libgnutls_dane_la_LDFLAGS += -version-info $(LT_DANE_CURRENT):$(LT_DANE_REVISION):$(LT_DANE_AGE)
diff --git a/m4/ax_code_coverage.m4 b/m4/ax_code_coverage.m4
index 6484f03324..3d36924b15 100644
--- a/m4/ax_code_coverage.m4
+++ b/m4/ax_code_coverage.m4
@@ -12,11 +12,11 @@
# CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LIBS which should be included
# in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LIBADD variables of every
# build target (program or library) which should be built with code
-# coverage support. Also defines CODE_COVERAGE_RULES which should be
-# substituted in your Makefile; and $enable_code_coverage which can be
-# used in subsequent configure output. CODE_COVERAGE_ENABLED is defined
-# and substituted, and corresponds to the value of the
-# --enable-code-coverage option, which defaults to being disabled.
+# coverage support. Also add rules using AX_ADD_AM_MACRO_STATIC; and
+# $enable_code_coverage which can be used in subsequent configure output.
+# CODE_COVERAGE_ENABLED is defined and substituted, and corresponds to the
+# value of the --enable-code-coverage option, which defaults to being
+# disabled.
#
# Test also for gcov program and create GCOV variable that could be
# substituted.
@@ -32,25 +32,24 @@
#
# Makefile.am:
#
-# @CODE_COVERAGE_RULES@
+# include $(top_srcdir)/aminclude_static.am
+#
# my_program_LIBS = ... $(CODE_COVERAGE_LIBS) ...
# my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ...
# my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ...
# my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ...
#
-# This results in a "check-code-coverage" rule being added to any
-# Makefile.am which includes "@CODE_COVERAGE_RULES@" (assuming the module
-# has been configured with --enable-code-coverage). Running `make
-# check-code-coverage` in that directory will run the module's test suite
-# (`make check`) and build a code coverage report detailing the code which
-# was touched, then print the URI for the report.
+# clean-local: code-coverage-clean
+# distclean-local: code-coverage-dist-clean
#
-# In earlier versions of this macro, CODE_COVERAGE_LDFLAGS was defined
-# instead of CODE_COVERAGE_LIBS. They are both still defined, but use of
-# CODE_COVERAGE_LIBS is preferred for clarity; CODE_COVERAGE_LDFLAGS is
-# deprecated. They have the same value.
+# This results in a "check-code-coverage" rule being added to any
+# Makefile.am which do "include $(top_srcdir)/aminclude_static.am"
+# (assuming the module has been configured with --enable-code-coverage).
+# Running `make check-code-coverage` in that directory will run the
+# module's test suite (`make check`) and build a code coverage report
+# detailing the code which was touched, then print the URI for the report.
#
-# This code was derived from Makefile.decl in GLib, originally licenced
+# This code was derived from Makefile.decl in GLib, originally licensed
# under LGPLv2.1+.
#
# LICENSE
@@ -60,7 +59,7 @@
# Copyright (c) 2012 Christian Persch
# Copyright (c) 2012 Paolo Borelli
# Copyright (c) 2012 Dan Winship
-# Copyright (c) 2015 Bastien ROUCARIES
+# Copyright (c) 2015,2018 Bastien ROUCARIES
#
# This library is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
@@ -75,107 +74,22 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
-#serial 25
-
-AC_DEFUN([AX_CODE_COVERAGE],[
- dnl Check for --enable-code-coverage
- AC_REQUIRE([AC_PROG_SED])
-
- # allow to override gcov location
- AC_ARG_WITH([gcov],
- [AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])],
- [_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov],
- [_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov])
-
- AC_MSG_CHECKING([whether to build with code coverage support])
- AC_ARG_ENABLE([code-coverage],
- AS_HELP_STRING([--enable-code-coverage],
- [Whether to enable code coverage support]),,
- enable_code_coverage=no)
-
- AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test x$enable_code_coverage = xyes])
- AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
- AC_MSG_RESULT($enable_code_coverage)
-
- AS_IF([ test "$enable_code_coverage" = "yes" ], [
- # check for gcov
- AC_CHECK_TOOL([GCOV],
- [$_AX_CODE_COVERAGE_GCOV_PROG_WITH],
- [:])
- AS_IF([test "X$GCOV" = "X:"],
- [AC_MSG_ERROR([gcov is needed to do coverage])])
- AC_SUBST([GCOV])
-
- dnl Check if gcc is being used
- AS_IF([ test "$GCC" = "no" ], [
- AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage])
- ])
-
- AC_CHECK_PROG([LCOV], [lcov], [lcov])
- AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
-
- AS_IF([ test -z "$LCOV" ], [
- AC_MSG_ERROR([To enable code coverage reporting you must have lcov installed])
- ])
-
- AS_IF([ test -z "$GENHTML" ], [
- AC_MSG_ERROR([Could not find genhtml from the lcov package])
- ])
-
- dnl Build the code coverage flags
- dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility
- CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
- CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
- CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
- CODE_COVERAGE_LIBS="-lgcov"
- CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS"
-
- AC_SUBST([CODE_COVERAGE_CPPFLAGS])
- AC_SUBST([CODE_COVERAGE_CFLAGS])
- AC_SUBST([CODE_COVERAGE_CXXFLAGS])
- AC_SUBST([CODE_COVERAGE_LIBS])
- AC_SUBST([CODE_COVERAGE_LDFLAGS])
+#serial 32
- [CODE_COVERAGE_RULES_CHECK='
- -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check
- $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
-']
- [CODE_COVERAGE_RULES_CAPTURE='
- $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS)
- $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS)
- -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
- $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
- @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
-']
- [CODE_COVERAGE_RULES_CLEAN='
-clean: code-coverage-clean
-distclean: code-coverage-clean
-code-coverage-clean:
- -$(LCOV) --directory $(top_builddir) -z
- -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
- -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete
-']
- ], [
- [CODE_COVERAGE_RULES_CHECK='
- @echo "Need to reconfigure with --enable-code-coverage"
-']
- CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK"
- CODE_COVERAGE_RULES_CLEAN=''
- ])
-
-[CODE_COVERAGE_RULES='
+m4_define(_AX_CODE_COVERAGE_RULES,[
+AX_ADD_AM_MACRO_STATIC([
# Code coverage
#
# Optional:
# - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
# Multiple directories may be specified, separated by whitespace.
-# (Default: $(top_builddir))
+# (Default: \$(top_builddir))
# - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
# by lcov for code coverage. (Default:
-# $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
+# \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage.info)
# - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
# reports to be created. (Default:
-# $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
+# \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage)
# - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
# set to 0 to disable it and leave empty to stay with the default.
# (Default: empty)
@@ -198,67 +112,161 @@ code-coverage-clean:
# instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
# - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
#
-# The generated report will be titled using the $(PACKAGE_NAME) and
-# $(PACKAGE_VERSION). In order to add the current git hash to the title,
+# The generated report will be titled using the \$(PACKAGE_NAME) and
+# \$(PACKAGE_VERSION). In order to add the current git hash to the title,
# use the git-version-gen script, available online.
-
# Optional variables
-CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
-CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
-CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
+# run only on top dir
+if CODE_COVERAGE_ENABLED
+ ifeq (\$(abs_builddir), \$(abs_top_builddir))
+CODE_COVERAGE_DIRECTORY ?= \$(top_builddir)
+CODE_COVERAGE_OUTPUT_FILE ?= \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage.info
+CODE_COVERAGE_OUTPUT_DIRECTORY ?= \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage
+
CODE_COVERAGE_BRANCH_COVERAGE ?=
-CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
-CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)"
-CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
-CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
+CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= \$(if \$(CODE_COVERAGE_BRANCH_COVERAGE),\
+--rc lcov_branch_coverage=\$(CODE_COVERAGE_BRANCH_COVERAGE))
+CODE_COVERAGE_LCOV_SHOPTS ?= \$(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
+CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool \"\$(GCOV)\"
+CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= \$(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
+CODE_COVERAGE_LCOV_OPTIONS ?= \$(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
-CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
+CODE_COVERAGE_LCOV_RMOPTS ?= \$(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
-$(if $(CODE_COVERAGE_BRANCH_COVERAGE),\
---rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE))
-CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
+\$(if \$(CODE_COVERAGE_BRANCH_COVERAGE),\
+--rc genhtml_branch_coverage=\$(CODE_COVERAGE_BRANCH_COVERAGE))
+CODE_COVERAGE_GENHTML_OPTIONS ?= \$(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
CODE_COVERAGE_IGNORE_PATTERN ?=
-GITIGNOREFILES ?=
-GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
-
-code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V))
-code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\
- $(CODE_COVERAGE_OUTPUT_FILE);
-code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V))
-code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_lcov_ign_0 = @echo " LCOV --remove /tmp/*"\
- $(CODE_COVERAGE_IGNORE_PATTERN);
-code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V))
-code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY))
-code_coverage_v_genhtml_0 = @echo " GEN " $(CODE_COVERAGE_OUTPUT_DIRECTORY);
-code_coverage_quiet = $(code_coverage_quiet_$(V))
-code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY))
+GITIGNOREFILES = \$(GITIGNOREFILES) \$(CODE_COVERAGE_OUTPUT_FILE) \$(CODE_COVERAGE_OUTPUT_DIRECTORY)
+code_coverage_v_lcov_cap = \$(code_coverage_v_lcov_cap_\$(V))
+code_coverage_v_lcov_cap_ = \$(code_coverage_v_lcov_cap_\$(AM_DEFAULT_VERBOSITY))
+code_coverage_v_lcov_cap_0 = @echo \" LCOV --capture\" \$(CODE_COVERAGE_OUTPUT_FILE);
+code_coverage_v_lcov_ign = \$(code_coverage_v_lcov_ign_\$(V))
+code_coverage_v_lcov_ign_ = \$(code_coverage_v_lcov_ign_\$(AM_DEFAULT_VERBOSITY))
+code_coverage_v_lcov_ign_0 = @echo \" LCOV --remove /tmp/*\" \$(CODE_COVERAGE_IGNORE_PATTERN);
+code_coverage_v_genhtml = \$(code_coverage_v_genhtml_\$(V))
+code_coverage_v_genhtml_ = \$(code_coverage_v_genhtml_\$(AM_DEFAULT_VERBOSITY))
+code_coverage_v_genhtml_0 = @echo \" GEN \" \"\$(CODE_COVERAGE_OUTPUT_DIRECTORY)\";
+code_coverage_quiet = \$(code_coverage_quiet_\$(V))
+code_coverage_quiet_ = \$(code_coverage_quiet_\$(AM_DEFAULT_VERBOSITY))
code_coverage_quiet_0 = --quiet
# sanitizes the test-name: replaces with underscores: dashes and dots
-code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1)))
+code_coverage_sanitize = \$(subst -,_,\$(subst .,_,\$(1)))
# Use recursive makes in order to ignore errors during check
-check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"'
+check-code-coverage:
+ -\$(AM_V_at)\$(MAKE) \$(AM_MAKEFLAGS) -k check
+ \$(AM_V_at)\$(MAKE) \$(AM_MAKEFLAGS) code-coverage-capture
# Capture code coverage data
-code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"'
+code-coverage-capture: code-coverage-capture-hook
+ \$(code_coverage_v_lcov_cap)\$(LCOV) \$(code_coverage_quiet) \$(addprefix --directory ,\$(CODE_COVERAGE_DIRECTORY)) --capture --output-file \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\" --test-name \"\$(call code_coverage_sanitize,\$(PACKAGE_NAME)-\$(PACKAGE_VERSION))\" --no-checksum --compat-libtool \$(CODE_COVERAGE_LCOV_SHOPTS) \$(CODE_COVERAGE_LCOV_OPTIONS)
+ \$(code_coverage_v_lcov_ign)\$(LCOV) \$(code_coverage_quiet) \$(addprefix --directory ,\$(CODE_COVERAGE_DIRECTORY)) --remove \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\" \"/tmp/*\" \$(CODE_COVERAGE_IGNORE_PATTERN) --output-file \"\$(CODE_COVERAGE_OUTPUT_FILE)\" \$(CODE_COVERAGE_LCOV_SHOPTS) \$(CODE_COVERAGE_LCOV_RMOPTS)
+ -@rm -f \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\"
+ \$(code_coverage_v_genhtml)LANG=C \$(GENHTML) \$(code_coverage_quiet) \$(addprefix --prefix ,\$(CODE_COVERAGE_DIRECTORY)) --output-directory \"\$(CODE_COVERAGE_OUTPUT_DIRECTORY)\" --title \"\$(PACKAGE_NAME)-\$(PACKAGE_VERSION) Code Coverage\" --legend --show-details \"\$(CODE_COVERAGE_OUTPUT_FILE)\" \$(CODE_COVERAGE_GENHTML_OPTIONS)
+ @echo \"file://\$(abs_builddir)/\$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html\"
+
+code-coverage-clean:
+ -\$(LCOV) --directory \$(top_builddir) -z
+ -rm -rf \"\$(CODE_COVERAGE_OUTPUT_FILE)\" \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\" \"\$(CODE_COVERAGE_OUTPUT_DIRECTORY)\"
+ -find . \\( -name \"*.gcda\" -o -name \"*.gcno\" -o -name \"*.gcov\" \\) -delete
+
+code-coverage-dist-clean:
+
+A][M_DISTCHECK_CONFIGURE_FLAGS = \$(A][M_DISTCHECK_CONFIGURE_FLAGS) --disable-code-coverage
+ else # ifneq (\$(abs_builddir), \$(abs_top_builddir))
+check-code-coverage:
+code-coverage-capture: code-coverage-capture-hook
+
+code-coverage-clean:
+
+code-coverage-dist-clean:
+ endif # ifeq (\$(abs_builddir), \$(abs_top_builddir))
+else #! CODE_COVERAGE_ENABLED
+# Use recursive makes in order to ignore errors during check
+check-code-coverage:
+ @echo \"Need to reconfigure with --enable-code-coverage\"
+# Capture code coverage data
+code-coverage-capture: code-coverage-capture-hook
+ @echo \"Need to reconfigure with --enable-code-coverage\"
+
+code-coverage-clean:
+
+code-coverage-dist-clean:
+
+endif #CODE_COVERAGE_ENABLED
# Hook rule executed before code-coverage-capture, overridable by the user
code-coverage-capture-hook:
-'"$CODE_COVERAGE_RULES_CLEAN"'
+.PHONY: check-code-coverage code-coverage-capture code-coverage-dist-clean code-coverage-clean code-coverage-capture-hook
+])
+])
+
+AC_DEFUN([_AX_CODE_COVERAGE_ENABLED],[
+ AX_CHECK_GNU_MAKE([],[AC_MSG_ERROR([not using GNU make that is needed for coverage])])
+ AC_REQUIRE([AX_ADD_AM_MACRO_STATIC])
+ # check for gcov
+ AC_CHECK_TOOL([GCOV],
+ [$_AX_CODE_COVERAGE_GCOV_PROG_WITH],
+ [:])
+ AS_IF([test "X$GCOV" = "X:"],
+ [AC_MSG_ERROR([gcov is needed to do coverage])])
+ AC_SUBST([GCOV])
+
+ dnl Check if gcc is being used
+ AS_IF([ test "$GCC" = "no" ], [
+ AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage])
+ ])
+
+ AC_CHECK_PROG([LCOV], [lcov], [lcov])
+ AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
+
+ AS_IF([ test x"$LCOV" = x ], [
+ AC_MSG_ERROR([To enable code coverage reporting you must have lcov installed])
+ ])
+
+ AS_IF([ test x"$GENHTML" = x ], [
+ AC_MSG_ERROR([Could not find genhtml from the lcov package])
+ ])
+
+ dnl Build the code coverage flags
+ dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility
+ CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
+ CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+ CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+ CODE_COVERAGE_LIBS="-lgcov"
-A''M_DISTCHECK_CONFIGURE_FLAGS ?=
-A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
+ AC_SUBST([CODE_COVERAGE_CPPFLAGS])
+ AC_SUBST([CODE_COVERAGE_CFLAGS])
+ AC_SUBST([CODE_COVERAGE_CXXFLAGS])
+ AC_SUBST([CODE_COVERAGE_LIBS])
+])
+
+AC_DEFUN([AX_CODE_COVERAGE],[
+ dnl Check for --enable-code-coverage
+
+ # allow to override gcov location
+ AC_ARG_WITH([gcov],
+ [AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])],
+ [_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov],
+ [_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov])
+
+ AC_MSG_CHECKING([whether to build with code coverage support])
+ AC_ARG_ENABLE([code-coverage],
+ AS_HELP_STRING([--enable-code-coverage],
+ [Whether to enable code coverage support]),,
+ enable_code_coverage=no)
+
+ AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test "x$enable_code_coverage" = xyes])
+ AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
+ AC_MSG_RESULT($enable_code_coverage)
-.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
-']
+ AS_IF([ test "x$enable_code_coverage" = xyes ], [
+ _AX_CODE_COVERAGE_ENABLED
+ ])
- AC_SUBST([CODE_COVERAGE_RULES])
- m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])])
+ _AX_CODE_COVERAGE_RULES
])