diff options
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..ebcf3e7 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,164 @@ +ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS} +# ^^^^^^^^ This has to be the first line and cannot come later in this +# Makefile.am due to some bork in some versions of autotools. + +SUBDIRS = tools . ext src doc m4macros @PREMIUM_DIR@ @CONTRIB_DIR@ + +USE_LCOV=@USE_LCOV@ +LCOV=@LCOV@ +GENHTML=@GENHTML@ +DISTCHECK_GTEST_CONFIGURE_FLAG=@DISTCHECK_GTEST_CONFIGURE_FLAG@ +DISTCHECK_CRYPTO_CONFIGURE_FLAG=@DISTCHECK_CRYPTO_CONFIGURE_FLAG@ +DISTCHECK_BOOST_CONFIGURE_FLAG=@DISTCHECK_BOOST_CONFIGURE_FLAG@ +DISTCHECK_LOG4CPLUS_CONFIGURE_FLAG=@DISTCHECK_LOG4CPLUS_CONFIGURE_FLAG@ +DISTCHECK_PERFDHCP_CONFIGURE_FLAG=@DISTCHECK_PERFDHCP_CONFIGURE_FLAG@ +DISTCHECK_KEA_SHELL_CONFIGURE_FLAG=@DISTCHECK_KEA_SHELL_CONFIGURE_FLAG@ +DISTCHECK_PREMIUM_CONFIGURE_FLAG=@DISTCHECK_PREMIUM_CONFIGURE_FLAG@ +DISTCHECK_CONTRIB_CONFIGURE_FLAG=@DISTCHECK_CONTRIB_CONFIGURE_FLAG@ + +OVERALL_COVERAGE_DIR=$(abs_top_builddir)/coverage-cpp-html + +DISTCLEANFILES = config.report + +# When running distcheck target, do not install the configurations +DISTCHECK_CONFIGURE_FLAGS = --disable-install-configurations + +# Use same --with-gtest flag if set +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_GTEST_CONFIGURE_FLAG) + +# Keep the crypto backend config +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_CRYPTO_CONFIGURE_FLAG) + +# Keep the Boost configuration which becomes sensible +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_BOOST_CONFIGURE_FLAG) + +# Keep the log4cplus path too +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_LOG4CPLUS_CONFIGURE_FLAG) + +# Keep perfdhcp if enabled +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_PERFDHCP_CONFIGURE_FLAG) + +# Keep kea-shell if enabled +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_KEA_SHELL_CONFIGURE_FLAG) + +# Keep the premium config +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_PREMIUM_CONFIGURE_FLAG) + +# Keep the contrib config +DISTCHECK_CONFIGURE_FLAGS += $(DISTCHECK_CONTRIB_CONFIGURE_FLAG) + +dist_doc_DATA = AUTHORS COPYING ChangeLog README CONTRIBUTING.md platforms.rst code_of_conduct.md + +.PHONY: check-valgrind check-valgrind-suppress + +check-valgrind: +if HAVE_VALGRIND + @VALGRIND_COMMAND="$(VALGRIND) -q --gen-suppressions=all --track-origins=yes --num-callers=48 --leak-check=full --fullpath-after=" \ + make -C $(abs_top_builddir) check +else + @echo "*** Valgrind is required for check-valgrind ***"; exit 1; +endif + +check-valgrind-suppress: +if HAVE_VALGRIND + @VALGRIND_COMMAND="$(VALGRIND) -q --gen-suppressions=all --track-origins=yes --error-exitcode=1 --suppressions=$(abs_top_srcdir)/src/valgrind-suppressions --suppressions=$(abs_top_srcdir)/src/valgrind-suppressions.revisit --num-callers=48 --leak-check=full --fullpath-after=" \ + make -C $(abs_top_builddir) check +else + @echo "*** Valgrind is required for check-valgrind-suppress ***"; exit 1; +endif + +clean-cpp-coverage: + @if [ $(USE_LCOV) = yes ] ; then \ + $(LCOV) --directory . --zerocounters; \ + rm -rf $(OVERALL_COVERAGE_DIR); \ + else \ + echo "C++ code coverage not enabled at configuration time." ; \ + echo "Use: ./configure --with-lcov" ; \ + fi + +perform-coverage: + find src -mindepth 2 -maxdepth 2 -type d | xargs -I{} bash -c "cd {}; make check || true" + +report-cpp-coverage: +if HAVE_BOTAN +BOTAN_PATH=botan/\* +else +BOTAN_PATH= +endif +if HAVE_OPENSSL +OPENSSL_PATH=openssl/\* +else +OPENSSL_PATH= +endif + @if [ $(USE_LCOV) = yes ] ; then \ + $(LCOV) --capture --directory . \ + --ignore-errors gcov,source,graph \ + --output-file all.info; \ + $(LCOV) --remove all.info \ + c++/* \ + boost/\* \ +if HAVE_BOTAN + botan/\* \ +endif + ext/coroutine/\* \ + gtest/\* \ + include/\* \ + lib/\eval/\* \ + log4cplus/\* \ + unittests/\* \ + tests/\* \ + testutils/\* \ + valgrind/\* \ + $(BOTAN_PATH) \ + $(OPENSSL_PATH) \ + --ignore-errors gcov,source,graph \ + --output report.info; \ + sed --in-place --expression "s|$(abs_top_srcdir)|$(abs_top_builddir)|g" report.info; \ + "$(GENHTML)" --frames --show-details --title 'Kea code coverage report' --legend \ + --function-coverage --ignore-errors source --demangle-cpp \ + --output "$(OVERALL_COVERAGE_DIR)" report.info; \ + printf "Generated C++ code coverage report in HTML at %s.\n" "$(OVERALL_COVERAGE_DIR)"; \ + else \ + echo "C++ code coverage not enabled at configuration time." ; \ + echo "Use: ./configure --with-lcov" ; \ + fi + +# for c++ test coverage +.NOTPARALLEL: coverage + +coverage: clean-coverage perform-coverage report-coverage + +clean-coverage: clean-cpp-coverage + +report-coverage: report-cpp-coverage + +# for static C++ check using cppcheck (when available) +cppcheck: + cppcheck -I./src/lib -I./src/bin --enable=all \ + --suppressions-list=src/cppcheck-suppress.lst --inline-suppr \ + --quiet --error-exitcode=1 \ + --template '{file}:{line}: check_fail: {message} ({severity},{id})' \ + src + +# this is a shortcut that builds only documentation dependencies and documentation itself +docs: + $(MAKE) -C doc/sphinx + + +# These steps are necessary during installation +install-exec-hook: + mkdir -p $(DESTDIR)${localstatedir}/log/ + mkdir -p $(DESTDIR)${localstatedir}/lib/${PACKAGE_NAME} + mkdir -p $(DESTDIR)${runstatedir}/${PACKAGE_NAME} + +EXTRA_DIST = tools/path_replacer.sh +EXTRA_DIST += tools/mk_cfgrpt.sh + +#### include external sources in the distributed tarball: +EXTRA_DIST += ext/coroutine/coroutine.hpp + +CLEANFILES = $(abs_top_builddir)/logger_lockfile + +# config.h may be included by headers supplied for building user-written +# hooks libraries, so we need to include it in the distribution. +pkginclude_HEADERS = config.h kea_version.h |