Add --enable-coverage configure option
This configure flag enables lcov [1] coverage generation and is intended to be used with unit tests (--enable-unit-tests is implied). A html coverage report can be generated by issuing the following command in the toplevel build directory: make coverage [1] - http://ltp.sourceforge.net/coverage/lcov.php Based on a patch by Adrian-Ken Rueegsegger.
This commit is contained in:
@@ -34,3 +34,7 @@ apidoc/
|
|||||||
*.tar.bz2
|
*.tar.bz2
|
||||||
*.tar.gz
|
*.tar.gz
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
coverage/
|
||||||
|
*.gcno
|
||||||
|
*.gcda
|
||||||
|
*.gcov
|
||||||
@@ -18,8 +18,11 @@ the code, you need the following tools:
|
|||||||
- lex/flex
|
- lex/flex
|
||||||
- yacc/bison
|
- yacc/bison
|
||||||
- gperf
|
- gperf
|
||||||
|
|
||||||
|
Optionally:
|
||||||
- check
|
- check
|
||||||
- optionally Doxygen
|
- lcov/genhtml
|
||||||
|
- Doxygen
|
||||||
|
|
||||||
To check out the master branch, use:
|
To check out the master branch, use:
|
||||||
|
|
||||||
|
|||||||
+28
@@ -37,5 +37,33 @@ Doxyfile : Doxyfile.in
|
|||||||
apidoc : Doxyfile
|
apidoc : Doxyfile
|
||||||
doxygen
|
doxygen
|
||||||
|
|
||||||
|
if COVERAGE
|
||||||
|
cov-reset:
|
||||||
|
@rm -rf $(top_builddir)/coverage
|
||||||
|
@find $(top_builddir) -name "*.gcda" -delete
|
||||||
|
@lcov --zerocounters --directory $(top_builddir)
|
||||||
|
|
||||||
|
cov-report:
|
||||||
|
@mkdir $(top_builddir)/coverage
|
||||||
|
lcov -c -o $(top_builddir)/coverage/coverage.info -d $(top_builddir)
|
||||||
|
genhtml --num-spaces 4 --legend \
|
||||||
|
-t "$(PACKAGE_STRING)" \
|
||||||
|
-o $(top_builddir)/coverage/html \
|
||||||
|
-p `readlink -m $(abs_top_srcdir)`/src \
|
||||||
|
$(top_builddir)/coverage/coverage.info
|
||||||
|
@echo "Coverage Report at $(top_builddir)/coverage/html" >&2
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
@$(MAKE) cov-reset
|
||||||
|
@$(MAKE) check
|
||||||
|
@$(MAKE) cov-report
|
||||||
|
else
|
||||||
|
cov-reset:
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
@echo "reconfigure with --enable-coverage"
|
||||||
|
endif
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
|
@$(MAKE) cov-reset
|
||||||
rm -rf apidoc
|
rm -rf apidoc
|
||||||
|
|||||||
@@ -243,6 +243,7 @@ ARG_ENABL_SET([monolithic], [build monolithic version of libstrongswan that
|
|||||||
ARG_ENABL_SET([bfd-backtraces], [use binutils libbfd to resolve backtraces for memory leaks and segfaults.])
|
ARG_ENABL_SET([bfd-backtraces], [use binutils libbfd to resolve backtraces for memory leaks and segfaults.])
|
||||||
ARG_ENABL_SET([unwind-backtraces],[use libunwind to create backtraces for memory leaks and segfaults.])
|
ARG_ENABL_SET([unwind-backtraces],[use libunwind to create backtraces for memory leaks and segfaults.])
|
||||||
ARG_ENABL_SET([unit-tests], [enable unit tests using the check test framework.])
|
ARG_ENABL_SET([unit-tests], [enable unit tests using the check test framework.])
|
||||||
|
ARG_ENABL_SET([coverage], [enable lcov coverage report generation.])
|
||||||
ARG_ENABL_SET([tkm], [enable Trusted Key Manager support.])
|
ARG_ENABL_SET([tkm], [enable Trusted Key Manager support.])
|
||||||
ARG_ENABL_SET([cmd], [enable the command line IKE client charon-cmd.])
|
ARG_ENABL_SET([cmd], [enable the command line IKE client charon-cmd.])
|
||||||
|
|
||||||
@@ -362,6 +363,10 @@ if test x$medcli = xtrue; then
|
|||||||
mediation=true
|
mediation=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$coverage = xtrue; then
|
||||||
|
unit_tests=true
|
||||||
|
fi
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# check required libraries and header files
|
# check required libraries and header files
|
||||||
# ===========================================
|
# ===========================================
|
||||||
@@ -917,6 +922,25 @@ if test x$unit_tests = xtrue; then
|
|||||||
AC_SUBST(CHECK_LIBS)
|
AC_SUBST(CHECK_LIBS)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test x$coverage = xtrue; then
|
||||||
|
AC_PATH_PROG([LCOV], [lcov], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
|
||||||
|
if test x$LCOV = x; then
|
||||||
|
AC_MSG_ERROR([lcov not found])
|
||||||
|
fi
|
||||||
|
AC_PATH_PROG([GENHTML], [genhtml], [], [$PATH:/bin:/usr/bin:/usr/local/bin])
|
||||||
|
if test x$GENHTML = x; then
|
||||||
|
AC_MSG_ERROR([genhtml not found])
|
||||||
|
fi
|
||||||
|
|
||||||
|
COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage"
|
||||||
|
COVERAGE_LDFLAGS="-fprofile-arcs"
|
||||||
|
AC_SUBST(COVERAGE_CFLAGS)
|
||||||
|
AC_SUBST(COVERAGE_LDFLAGS)
|
||||||
|
|
||||||
|
AC_MSG_NOTICE([coverage enabled, adding "-g -O0" to CFLAGS])
|
||||||
|
CFLAGS="${CFLAGS} -g -O0"
|
||||||
|
fi
|
||||||
|
|
||||||
# ===============================================
|
# ===============================================
|
||||||
# collect plugin list for strongSwan components
|
# collect plugin list for strongSwan components
|
||||||
# ===============================================
|
# ===============================================
|
||||||
@@ -1241,6 +1265,7 @@ AM_CONDITIONAL(USE_TROUSERS, test x$tss = xtrousers)
|
|||||||
AM_CONDITIONAL(MONOLITHIC, test x$monolithic = xtrue)
|
AM_CONDITIONAL(MONOLITHIC, test x$monolithic = xtrue)
|
||||||
AM_CONDITIONAL(USE_SILENT_RULES, test x$enable_silent_rules = xyes)
|
AM_CONDITIONAL(USE_SILENT_RULES, test x$enable_silent_rules = xyes)
|
||||||
AM_CONDITIONAL(UNITTESTS, test x$unit_tests = xtrue)
|
AM_CONDITIONAL(UNITTESTS, test x$unit_tests = xtrue)
|
||||||
|
AM_CONDITIONAL(COVERAGE, test x$coverage = xtrue)
|
||||||
AM_CONDITIONAL(USE_TKM, test x$tkm = xtrue)
|
AM_CONDITIONAL(USE_TKM, test x$tkm = xtrue)
|
||||||
AM_CONDITIONAL(USE_CMD, test x$cmd = xtrue)
|
AM_CONDITIONAL(USE_CMD, test x$cmd = xtrue)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user