summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Theodore <tonyt@logyst.com>2019-03-10 06:42:14 (GMT)
committerTony Theodore <tonyt@logyst.com>2019-03-10 06:42:14 (GMT)
commit1d4ac6200698bed9187e1c5b5b85840e538dc30a (patch)
treeb2f7b3d67e3a61955ad54150781ceccbdc76a440
parent8969cd9f01e4ffe3bebc5d103535896522be57d2 (diff)
downloadmxe-1d4ac6200698bed9187e1c5b5b85840e538dc30a.zip
mxe-1d4ac6200698bed9187e1c5b5b85840e538dc30a.tar.gz
mxe-1d4ac6200698bed9187e1c5b5b85840e538dc30a.tar.bz2
gnutls: update m4/ax_code_coverage.m4
see: https://github.com/mxe/mxe/issues/2301
-rw-r--r--src/gnutls-1-fixes.patch720
1 files changed, 716 insertions, 4 deletions
diff --git a/src/gnutls-1-fixes.patch b/src/gnutls-1-fixes.patch
index 474e5be..eed3a41 100644
--- a/src/gnutls-1-fixes.patch
+++ b/src/gnutls-1-fixes.patch
@@ -5,7 +5,7 @@ Contains ad hoc patches for cross building.
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Mon, 4 Feb 2013 16:11:12 +0100
-Subject: [PATCH 1/4] add missing private lib to pc file
+Subject: [PATCH 1/5] add missing private lib to pc file
diff --git a/lib/gnutls.pc.in b/lib/gnutls.pc.in
@@ -24,7 +24,7 @@ index 1111111..2222222 100644
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Mon, 24 Nov 2014 08:56:48 +0100
-Subject: [PATCH 2/4] windows build fix: ws2tcpip.h supplies inet_ntop
+Subject: [PATCH 2/5] windows build fix: ws2tcpip.h supplies inet_ntop
Follow-up to 492c2b937ab66134d0b37499a6f3a747e19bc31a
@@ -53,7 +53,7 @@ index 1111111..2222222 100644
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Sun, 7 May 2017 20:17:13 +0200
-Subject: [PATCH 3/4] let gnutls configure detect libidn2
+Subject: [PATCH 3/5] let gnutls configure detect libidn2
diff --git a/configure.ac b/configure.ac
@@ -114,7 +114,7 @@ index 1111111..2222222 100644
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mark Brand <mabrand@mabrand.nl>
Date: Thu, 6 Dec 2018 10:36:30 +0100
-Subject: [PATCH 4/4] remove docs from configure.ac: avoid GTK_DOC dependencies
+Subject: [PATCH 4/5] remove docs from configure.ac: avoid GTK_DOC dependencies
diff --git a/configure.ac b/configure.ac
@@ -140,3 +140,715 @@ index 1111111..2222222 100644
extra/Makefile
extra/includes/Makefile
libdane/Makefile
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
+Date: Tue, 5 Feb 2019 11:01:20 +0100
+Subject: [PATCH 5/5] Update ax_code_coverage.m4 to latest release of
+ autoconf-archive
+
+taken from https://gitlab.com/gnutls/gnutls/merge_requests/905
+
+diff --git a/Makefile.am b/Makefile.am
+index 1111111..2222222 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -149,7 +149,9 @@ symbol-check:
+ fi
+ rm -f symbols.last.tmp symbols.diff.tmp
+
+-@CODE_COVERAGE_RULES@
++include $(top_srcdir)/aminclude_static.am
++clean-local: code-coverage-clean
++distclean-local: code-coverage-dist-clean
+
+ 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/configure.ac b/configure.ac
+index 1111111..2222222 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -60,6 +60,7 @@ if test "$ac_cv_prog_cc_c99" = "no"; then
+ fi
+
+ AX_CODE_COVERAGE
++
+ AM_MAINTAINER_MODE([enable])
+
+ AC_ARG_ENABLE(bash-tests,
+diff --git a/m4/ax_ac_append_to_file.m4 b/m4/ax_ac_append_to_file.m4
+new file mode 100644
+index 0000000..242b3d5
+--- /dev/null
++++ b/m4/ax_ac_append_to_file.m4
+@@ -0,0 +1,32 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_ac_append_to_file.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_AC_APPEND_TO_FILE([FILE],[DATA])
++#
++# DESCRIPTION
++#
++# Appends the specified data to the specified Autoconf is run. If you want
++# to append to a file when configure is run use AX_APPEND_TO_FILE instead.
++#
++# LICENSE
++#
++# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
++#
++# Copying and distribution of this file, with or without modification, are
++# permitted in any medium without royalty provided the copyright notice
++# and this notice are preserved. This file is offered as-is, without any
++# warranty.
++
++#serial 10
++
++AC_DEFUN([AX_AC_APPEND_TO_FILE],[
++AC_REQUIRE([AX_FILE_ESCAPES])
++m4_esyscmd(
++AX_FILE_ESCAPES
++[
++printf "%s" "$2" >> "$1"
++])
++])
+diff --git a/m4/ax_ac_print_to_file.m4 b/m4/ax_ac_print_to_file.m4
+new file mode 100644
+index 0000000..642dfc1
+--- /dev/null
++++ b/m4/ax_ac_print_to_file.m4
+@@ -0,0 +1,32 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_ac_print_to_file.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_AC_PRINT_TO_FILE([FILE],[DATA])
++#
++# DESCRIPTION
++#
++# Writes the specified data to the specified file when Autoconf is run. If
++# you want to print to a file when configure is run use AX_PRINT_TO_FILE
++# instead.
++#
++# LICENSE
++#
++# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
++#
++# Copying and distribution of this file, with or without modification, are
++# permitted in any medium without royalty provided the copyright notice
++# and this notice are preserved. This file is offered as-is, without any
++# warranty.
++
++#serial 10
++
++AC_DEFUN([AX_AC_PRINT_TO_FILE],[
++m4_esyscmd(
++AC_REQUIRE([AX_FILE_ESCAPES])
++[
++printf "%s" "$2" > "$1"
++])
++])
+diff --git a/m4/ax_add_am_macro_static.m4 b/m4/ax_add_am_macro_static.m4
+new file mode 100644
+index 0000000..6442d24
+--- /dev/null
++++ b/m4/ax_add_am_macro_static.m4
+@@ -0,0 +1,28 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_add_am_macro_static.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_ADD_AM_MACRO_STATIC([RULE])
++#
++# DESCRIPTION
++#
++# Adds the specified rule to $AMINCLUDE.
++#
++# LICENSE
++#
++# Copyright (c) 2009 Tom Howard <tomhoward@users.sf.net>
++# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
++#
++# Copying and distribution of this file, with or without modification, are
++# permitted in any medium without royalty provided the copyright notice
++# and this notice are preserved. This file is offered as-is, without any
++# warranty.
++
++#serial 8
++
++AC_DEFUN([AX_ADD_AM_MACRO_STATIC],[
++ AC_REQUIRE([AX_AM_MACROS_STATIC])
++ AX_AC_APPEND_TO_FILE(AMINCLUDE_STATIC,[$1])
++])
+diff --git a/m4/ax_am_macros_static.m4 b/m4/ax_am_macros_static.m4
+new file mode 100644
+index 0000000..f4cee8c
+--- /dev/null
++++ b/m4/ax_am_macros_static.m4
+@@ -0,0 +1,38 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_am_macros_static.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_AM_MACROS_STATIC
++#
++# DESCRIPTION
++#
++# Adds support for macros that create Automake rules. You must manually
++# add the following line
++#
++# include $(top_srcdir)/aminclude_static.am
++#
++# to your Makefile.am files.
++#
++# LICENSE
++#
++# Copyright (c) 2009 Tom Howard <tomhoward@users.sf.net>
++# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
++#
++# Copying and distribution of this file, with or without modification, are
++# permitted in any medium without royalty provided the copyright notice
++# and this notice are preserved. This file is offered as-is, without any
++# warranty.
++
++#serial 11
++
++AC_DEFUN([AMINCLUDE_STATIC],[aminclude_static.am])
++
++AC_DEFUN([AX_AM_MACROS_STATIC],
++[
++AX_AC_PRINT_TO_FILE(AMINCLUDE_STATIC,[
++# ]AMINCLUDE_STATIC[ generated automatically by Autoconf
++# from AX_AM_MACROS_STATIC on ]m4_esyscmd([LC_ALL=C date])[
++])
++])
+diff --git a/m4/ax_check_gnu_make.m4 b/m4/ax_check_gnu_make.m4
+new file mode 100644
+index 0000000..6811043
+--- /dev/null
++++ b/m4/ax_check_gnu_make.m4
+@@ -0,0 +1,95 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_check_gnu_make.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_CHECK_GNU_MAKE([run-if-true],[run-if-false])
++#
++# DESCRIPTION
++#
++# This macro searches for a GNU version of make. If a match is found:
++#
++# * The makefile variable `ifGNUmake' is set to the empty string, otherwise
++# it is set to "#". This is useful for including a special features in a
++# Makefile, which cannot be handled by other versions of make.
++# * The makefile variable `ifnGNUmake' is set to #, otherwise
++# it is set to the empty string. This is useful for including a special
++# features in a Makefile, which can be handled
++# by other versions of make or to specify else like clause.
++# * The variable `_cv_gnu_make_command` is set to the command to invoke
++# GNU make if it exists, the empty string otherwise.
++# * The variable `ax_cv_gnu_make_command` is set to the command to invoke
++# GNU make by copying `_cv_gnu_make_command`, otherwise it is unset.
++# * If GNU Make is found, its version is extracted from the output of
++# `make --version` as the last field of a record of space-separated
++# columns and saved into the variable `ax_check_gnu_make_version`.
++# * Additionally if GNU Make is found, run shell code run-if-true
++# else run shell code run-if-false.
++#
++# Here is an example of its use:
++#
++# Makefile.in might contain:
++#
++# # A failsafe way of putting a dependency rule into a makefile
++# $(DEPEND):
++# $(CC) -MM $(srcdir)/*.c > $(DEPEND)
++#
++# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
++# @ifGNUmake@ include $(DEPEND)
++# @ifGNUmake@ else
++# fallback code
++# @ifGNUmake@ endif
++#
++# Then configure.in would normally contain:
++#
++# AX_CHECK_GNU_MAKE()
++# AC_OUTPUT(Makefile)
++#
++# Then perhaps to cause gnu make to override any other make, we could do
++# something like this (note that GNU make always looks for GNUmakefile
++# first):
++#
++# if ! test x$_cv_gnu_make_command = x ; then
++# mv Makefile GNUmakefile
++# echo .DEFAULT: > Makefile ;
++# echo \ $_cv_gnu_make_command \$@ >> Makefile;
++# fi
++#
++# Then, if any (well almost any) other make is called, and GNU make also
++# exists, then the other make wraps the GNU make.
++#
++# LICENSE
++#
++# Copyright (c) 2008 John Darrington <j.darrington@elvis.murdoch.edu.au>
++# Copyright (c) 2015 Enrico M. Crisostomo <enrico.m.crisostomo@gmail.com>
++#
++# Copying and distribution of this file, with or without modification, are
++# permitted in any medium without royalty provided the copyright notice
++# and this notice are preserved. This file is offered as-is, without any
++# warranty.
++
++#serial 11
++
++AC_DEFUN([AX_CHECK_GNU_MAKE],dnl
++ [AC_PROG_AWK
++ AC_CACHE_CHECK([for GNU make],[_cv_gnu_make_command],[dnl
++ _cv_gnu_make_command="" ;
++dnl Search all the common names for GNU make
++ for a in "$MAKE" make gmake gnumake ; do
++ if test -z "$a" ; then continue ; fi ;
++ if "$a" --version 2> /dev/null | grep GNU 2>&1 > /dev/null ; then
++ _cv_gnu_make_command=$a ;
++ AX_CHECK_GNU_MAKE_HEADLINE=$("$a" --version 2> /dev/null | grep "GNU Make")
++ ax_check_gnu_make_version=$(echo ${AX_CHECK_GNU_MAKE_HEADLINE} | ${AWK} -F " " '{ print $(NF); }')
++ break ;
++ fi
++ done ;])
++dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise
++ AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifGNUmake], ["#"])], [AS_VAR_SET([ifGNUmake], [""])])
++ AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifnGNUmake], [""])], [AS_VAR_SET([ifGNUmake], ["#"])])
++ AS_VAR_IF([_cv_gnu_make_command], [""], [AS_UNSET(ax_cv_gnu_make_command)], [AS_VAR_SET([ax_cv_gnu_make_command], [${_cv_gnu_make_command}])])
++ AS_VAR_IF([_cv_gnu_make_command], [""],[$2],[$1])
++ AC_SUBST([ifGNUmake])
++ AC_SUBST([ifnGNUmake])
++])
+diff --git a/m4/ax_code_coverage.m4 b/m4/ax_code_coverage.m4
+index 1111111..2222222 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
+ ])
+diff --git a/m4/ax_file_escapes.m4 b/m4/ax_file_escapes.m4
+new file mode 100644
+index 0000000..a86fdc3
+--- /dev/null
++++ b/m4/ax_file_escapes.m4
+@@ -0,0 +1,30 @@
++# ===========================================================================
++# https://www.gnu.org/software/autoconf-archive/ax_file_escapes.html
++# ===========================================================================
++#
++# SYNOPSIS
++#
++# AX_FILE_ESCAPES
++#
++# DESCRIPTION
++#
++# Writes the specified data to the specified file.
++#
++# LICENSE
++#
++# Copyright (c) 2008 Tom Howard <tomhoward@users.sf.net>
++#
++# Copying and distribution of this file, with or without modification, are
++# permitted in any medium without royalty provided the copyright notice
++# and this notice are preserved. This file is offered as-is, without any
++# warranty.
++
++#serial 8
++
++AC_DEFUN([AX_FILE_ESCAPES],[
++AX_DOLLAR="\$"
++AX_SRB="\\135"
++AX_SLB="\\133"
++AX_BS="\\\\"
++AX_DQ="\""
++])