From 1d4ac6200698bed9187e1c5b5b85840e538dc30a Mon Sep 17 00:00:00 2001 From: Tony Theodore Date: Sun, 10 Mar 2019 17:42:14 +1100 Subject: [PATCH] gnutls: update m4/ax_code_coverage.m4 see: https://github.com/mxe/mxe/issues/2301 --- src/gnutls-1-fixes.patch | 720 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 716 insertions(+), 4 deletions(-) diff --git a/src/gnutls-1-fixes.patch b/src/gnutls-1-fixes.patch index 474e5be3..eed3a413 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 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 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 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 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?= +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 ++# ++# 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 ++# ++# 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 ++# Copyright (c) 2009 Allan Caffee ++# ++# 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 ++# Copyright (c) 2009 Allan Caffee ++# ++# 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 ++# Copyright (c) 2015 Enrico M. Crisostomo ++# ++# 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 . + +-#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 ++# ++# 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="\"" ++])