On Tue, Sep 24, 2019 at 1:36 PM Tom Hromatka <tom.hroma...@oracle.com> wrote: > > This commit enables coveralls.io to generate code coverage > results by utilizing the gcov data generated during both the > unit and functional test runs. > > Signed-off-by: Tom Hromatka <tom.hroma...@oracle.com> > --- > .gitignore | 3 + > .travis.yml | 14 +++ > bootstrap.sh | 8 +- > configure.in | 42 ++++--- > m4/ax_code_coverage.m4 | 264 +++++++++++++++++++++++++++++++++++++++++
I assume you generated this file instead of handwriting it. Mind documenting in the commit log how you did so? Dhaval > src/Makefile.am | 8 +- > src/tools/Makefile.am | 24 ++++ > 7 files changed, 334 insertions(+), 29 deletions(-) > create mode 100644 m4/ax_code_coverage.m4 > > diff --git a/.gitignore b/.gitignore > index 7259d0c..6d7c3d7 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -2,6 +2,9 @@ patches/* > *.o > *.lo > *.la > +*.gcda > +*.gcno > +*.gcov > stamp-* > *.cache > .deps/ > diff --git a/.travis.yml b/.travis.yml > index 4b24840..72e202b 100644 > --- a/.travis.yml > +++ b/.travis.yml > @@ -36,13 +36,27 @@ compiler: > addons: > apt: > packages: > + - lcov > - lxc > - lxd > > +before_install: > + # see https://github.com/eddyxu/cpp-coveralls > + - pip install --user cpp-coveralls > + > # perform the build and fail immediately on error > install: > - ./bootstrap.sh > + - make clean > + # enable code coverage > + - CFLAGS="$CFLAGS -g -O0" ./configure --sysconfdir=/etc > --localstatedir=/var --enable-code-coverage > - make > > script: > - make check > + > +after_failure: > + - cat tests/ftests/test-suite.log > + > +after_success: > + - coveralls --exclude tests --exclude googletest --exclude samples > --gcov-options '\-lp' > diff --git a/bootstrap.sh b/bootstrap.sh > index 2a1386a..0668f3d 100755 > --- a/bootstrap.sh > +++ b/bootstrap.sh > @@ -16,11 +16,9 @@ cmake . > make > popd > > -aclocal > -libtoolize -c > -autoconf > -autoheader > -automake --foreign --add-missing --copy > +test -d m4 || mkdir m4 > +autoreconf -fi > +rm -fr autom4te.cache > > CFLAGS="$CFLAGS -g -O0" ./configure --sysconfdir=/etc --localstatedir=/var > > diff --git a/configure.in b/configure.in > index fafd245..67c1edb 100644 > --- a/configure.in > +++ b/configure.in > @@ -12,10 +12,14 @@ > # WITHOUT ANY WARRANTY; without even the implied warranty of > # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > # > -AC_PREREQ(2.61) > +AC_PREREQ([2.69]) > > # In following section update all occurences of version, including soname > -AC_INIT([libcgroup], 0.41) > +AC_INIT([libcgroup],[0.41]) > + > +AC_CONFIG_AUX_DIR([build-aux]) > +AC_CONFIG_MACRO_DIRS([m4]) > + > AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects]) > > m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) > @@ -35,8 +39,7 @@ AC_CONFIG_SRCDIR([src]) > AC_CONFIG_HEADER([config.h]) > > AC_ARG_ENABLE([bindings], > - [AC_HELP_STRING([--enable-bindings], > - [enable python bindings [default=no]])], > + [AS_HELP_STRING([--enable-bindings],[enable python bindings > [default=no]])], > [ > if test "x$enableval" = xno; then > with_bindings=false > @@ -49,8 +52,7 @@ AM_CONDITIONAL([WITH_BINDINGS], [test x$with_bindings = > xtrue]) > > # Process command line options > AC_ARG_ENABLE([tools], > - [AC_HELP_STRING([--enable-tools], > - [compile libcgroup tools [default=yes]])], > + [AS_HELP_STRING([--enable-tools],[compile libcgroup tools > [default=yes]])], > [ > if test "x$enableval" = xno; then > with_tools=false > @@ -62,8 +64,7 @@ AC_ARG_ENABLE([tools], > AM_CONDITIONAL([WITH_TOOLS], [test x$with_tools = xtrue]) > > AC_ARG_ENABLE([pam], > - [AC_HELP_STRING([--enable-pam], > - [compile libcgroup PAM module [default=yes]])], > + [AS_HELP_STRING([--enable-pam],[compile libcgroup PAM module > [default=yes]])], > [ > if test "x$enableval" = xno; then > with_pam=false > @@ -75,8 +76,7 @@ AC_ARG_ENABLE([pam], > AM_CONDITIONAL([WITH_PAM], [test x$with_pam = xtrue]) > > AC_ARG_ENABLE([daemon], > - [AC_HELP_STRING([--enable-daemon], > - [compile libcgroup daemon [default=yes]])], > + [AS_HELP_STRING([--enable-daemon],[compile libcgroup daemon > [default=yes]])], > [ > if test "x$enableval" = xno; then > with_daemon=false > @@ -88,8 +88,7 @@ AC_ARG_ENABLE([daemon], > AM_CONDITIONAL([WITH_DAEMON], [test x$with_daemon = xtrue]) > > AC_ARG_ENABLE([initscript-install], > - [AC_HELP_STRING([--enable-initscript-install], > - [install init scripts [default=no]])], > + [AS_HELP_STRING([--enable-initscript-install],[install init scripts > [default=no]])], > [ > if test "x$enableval" = xno; then > with_initscript_install=false > @@ -102,9 +101,8 @@ AM_CONDITIONAL([WITH_INITSCRIPT_INSTALL], [test > x$with_initscript_install = xtru > > socket_path="/var/run/cgred.socket" > AC_ARG_ENABLE([cgred-socket], > - [AC_HELP_STRING([--enable-cgred-socket=PATH], > - specify location of cgrulesengd communication socket > - (default=/var/run/cgred.socket))], > + [AS_HELP_STRING([--enable-cgred-socket=PATH],[specify location of > cgrulesengd communication socket > + (default=/var/run/cgred.socket)])], > [ > if test "x$enableval" = xno -o "x$enableval" = xyes; then > AC_MSG_ERROR([Provide valid path with > --enable-cgred-socket option.]) > @@ -116,9 +114,8 @@ > AC_DEFINE_UNQUOTED([CGRULE_CGRED_SOCKET_PATH],"$socket_path", [Cgrulesengd > socke > > pam_module_dir="$libdir/security" > AC_ARG_ENABLE([pam-module-dir], > - [AC_HELP_STRING([--enable-pam-module-dir=PATH], > - specify location of libcgroup PAM module > - (default=$libdir/security))], > + [AS_HELP_STRING([--enable-pam-module-dir=PATH],[specify location of > libcgroup PAM module > + (default=$libdir/security)])], > [ > if test "x$enableval" = xno -o "x$enableval" = xyes; then > AC_MSG_ERROR([Provide valid path with > --enable-pam-module-dir option.]) > @@ -129,9 +126,8 @@ AC_ARG_ENABLE([pam-module-dir], > AC_SUBST([pamlibdir],"$pam_module_dir") > > AC_ARG_ENABLE([opaque-hierarchy], > - [AC_HELP_STRING([--enable-opaque-hierarchy=NAME], > - [specify name of a hierarchy which libcgroup should ignore, > e.g. name=systemd] > - (default=none))], > + [AS_HELP_STRING([--enable-opaque-hierarchy=NAME],[specify name of a > hierarchy which libcgroup should ignore, e.g. name=systemd > + (default=none)])], > [ > if test "x$enableval" = xno -o "x$enableval" = xyes; then > AC_MSG_ERROR([Provide name of a hierarchy.]) > @@ -155,7 +151,7 @@ AM_PROG_LEX > if test "$LEX" != flex; then > AC_MSG_ERROR([This program cannot be built unless flex is installed.]) > fi > -AC_PROG_LIBTOOL > +LT_INIT > > # Checks for header files. > AC_HEADER_DIRENT > @@ -196,6 +192,8 @@ if test x$with_pam = xtrue; then > header files!])]) > fi > > +AX_CODE_COVERAGE > + > AC_CONFIG_FILES([Makefile > tests/Makefile > tests/ftests/Makefile > diff --git a/m4/ax_code_coverage.m4 b/m4/ax_code_coverage.m4 > new file mode 100644 > index 0000000..a257469 > --- /dev/null > +++ b/m4/ax_code_coverage.m4 > @@ -0,0 +1,264 @@ > +# =========================================================================== > +# http://www.gnu.org/software/autoconf-archive/ax_code_coverage.html > +# =========================================================================== > +# > +# SYNOPSIS > +# > +# AX_CODE_COVERAGE() > +# > +# DESCRIPTION > +# > +# Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS, > +# 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. > +# > +# Test also for gcov program and create GCOV variable that could be > +# substituted. > +# > +# Note that all optimisation flags in CFLAGS must be disabled when code > +# coverage is enabled. > +# > +# Usage example: > +# > +# configure.ac: > +# > +# AX_CODE_COVERAGE > +# > +# Makefile.am: > +# > +# @CODE_COVERAGE_RULES@ > +# 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. > +# > +# 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 code was derived from Makefile.decl in GLib, originally licenced > +# under LGPLv2.1+. > +# > +# LICENSE > +# > +# Copyright (c) 2012, 2016 Philip Withnall > +# Copyright (c) 2012 Xan Lopez > +# Copyright (c) 2012 Christian Persch > +# Copyright (c) 2012 Paolo Borelli > +# Copyright (c) 2012 Dan Winship > +# Copyright (c) 2015 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 > +# the Free Software Foundation; either version 2.1 of the License, or (at > +# your option) any later version. > +# > +# This library is distributed in the hope that it will be useful, but > +# WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser > +# General Public License for more details. > +# > +# You should have received a copy of the GNU Lesser General Public License > +# along with this program. If not, see <http://www.gnu.org/licenses/>. > + > +#serial 20 > + > +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]) > + > + [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=' > +# Code coverage > +# > +# Optional: > +# - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage > reporting. > +# Multiple directories may be specified, separated by whitespace. > +# (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) > +# - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage > +# reports to be created. (Default: > +# $(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) > +# - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both > lcov > +# instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) > +# - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov > +# instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) > +# - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov > +# - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the > +# collecting lcov instance. (Default: > $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) > +# - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov > +# instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) > +# - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the > filtering > +# lcov instance. (Default: empty) > +# - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov > +# instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) > +# - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the > +# genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) > +# - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml > +# 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, > +# 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 > +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_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_DEFAULTS) > +CODE_COVERAGE_IGNORE_PATTERN ?= > + > +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))) > + > +# Use recursive makes in order to ignore errors during check > +check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"' > + > +# Capture code coverage data > +code-coverage-capture: > code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"' > + > +# Hook rule executed before code-coverage-capture, overridable by the user > +code-coverage-capture-hook: > + > +'"$CODE_COVERAGE_RULES_CLEAN"' > + > +GITIGNOREFILES ?= > +GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) > $(CODE_COVERAGE_OUTPUT_DIRECTORY) > + > +A''M_DISTCHECK_CONFIGURE_FLAGS ?= > +A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage > + > +.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook > code-coverage-clean > +'] > + > + AC_SUBST([CODE_COVERAGE_RULES]) > + m4_ifdef([_AM_SUBST_NOTMAKE], > [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])]) > +]) > diff --git a/src/Makefile.am b/src/Makefile.am > index 52d0e00..4a7b974 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -1,3 +1,5 @@ > +@CODE_COVERAGE_RULES@ > + > if WITH_BINDINGS > BINDINGS_SUBDIR = bindings > endif > @@ -12,11 +14,13 @@ CLEANFILES = lex.c parse.c parse.h > INCLUDES = -I$(top_srcdir)/include > lib_LTLIBRARIES = libcgroup.la libcgroupfortesting.la > libcgroup_la_SOURCES = parse.h parse.y lex.l api.c config.c > libcgroup-internal.h libcgroup.map wrapper.c log.c > -libcgroup_la_LIBADD = -lpthread > +libcgroup_la_LIBADD = -lpthread $(CODE_COVERAGE_LIBS) > +libcgroup_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) > libcgroup_la_LDFLAGS = -Wl,--version-script,$(srcdir)/libcgroup.map \ > -version-number > $(LIBRARY_VERSION_MAJOR):$(LIBRARY_VERSION_MINOR):$(LIBRARY_VERSION_RELEASE) > > libcgroupfortesting_la_SOURCES = $(libcgroup_la_SOURCES) > -libcgroupfortesting_la_LIBADD = -lpthread > +libcgroupfortesting_la_LIBADD = -lpthread $(CODE_COVERAGE_LIBS) > +libcgroupfortesting_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) > libcgroupfortesting_la_LDFLAGS = > -Wl,--version-script,$(top_srcdir)/tests/gunit/libcgroup_unittest.map \ > -version-number > $(LIBRARY_VERSION_MAJOR):$(LIBRARY_VERSION_MINOR):$(LIBRARY_VERSION_RELEASE) > diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am > index 4cb02ff..2f3534c 100644 > --- a/src/tools/Makefile.am > +++ b/src/tools/Makefile.am > @@ -1,3 +1,5 @@ > +@CODE_COVERAGE_RULES@ > + > INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/include > LDADD = $(top_builddir)/src/.libs/libcgroup.la > > @@ -9,26 +11,48 @@ bin_PROGRAMS = cgexec cgclassify cgcreate cgset cgget > cgdelete lssubsys\ > sbin_PROGRAMS = cgconfigparser cgclear > > cgexec_SOURCES = cgexec.c tools-common.c tools-common.h > +cgexec_LIBS = $(CODE_COVERAGE_LIBS) > +cgexec_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgclassify_SOURCES = cgclassify.c tools-common.c tools-common.h > +cgclassify_LIBS = $(CODE_COVERAGE_LIBS) > +cgclassify_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgcreate_SOURCES = cgcreate.c tools-common.c tools-common.h > +cgcreate_LIBS = $(CODE_COVERAGE_LIBS) > +cgcreate_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgset_SOURCES = cgset.c tools-common.c tools-common.h > +cgset_LIBS = $(CODE_COVERAGE_LIBS) > +cgset_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgget_SOURCES = cgget.c tools-common.c tools-common.h > +cgget_LIBS = $(CODE_COVERAGE_LIBS) > +cgget_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgconfigparser_SOURCES = cgconfig.c tools-common.c tools-common.h > +cgconfigparser_LIBS = $(CODE_COVERAGE_LIBS) > +cgconfigparser_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgclear_SOURCES = cgclear.c tools-common.c tools-common.h > +cgclear_LIBS = $(CODE_COVERAGE_LIBS) > +cgclear_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgdelete_SOURCES = cgdelete.c tools-common.c tools-common.h > +cgdelete_LIBS = $(CODE_COVERAGE_LIBS) > +cgdelete_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > lssubsys_SOURCES = lssubsys.c > +lssubsys_LIBS = $(CODE_COVERAGE_LIBS) > +lssubsys_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > lscgroup_SOURCES = tools-common.c lscgroup.c > +lscgroup_LIBS = $(CODE_COVERAGE_LIBS) > +lscgroup_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > cgsnapshot_SOURCES = cgsnapshot.c > +cgsnapshot_LIBS = $(CODE_COVERAGE_LIBS) > +cgsnapshot_CFLAGS = $(CODE_COVERAGE_CFLAGS) > > install-exec-hook: > chmod u+s $(DESTDIR)$(bindir)/cgexec > -- > 2.21.0 > > > > _______________________________________________ > Libcg-devel mailing list > Libcg-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/libcg-devel _______________________________________________ Libcg-devel mailing list Libcg-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libcg-devel