diff --git a/Makefile.am b/Makefile.am index 6058214..858db00 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,6 +29,81 @@ install-data-local: $(HTML_INSTALL_DATA_TARGETS) uninstall-local: $(HTML_UNINSTALL_DATA_TARGETS) +# +# Additional rules +# + +# Add static-analysis rule: +static-analysis: cppcheck sloccount cppncss + +# Add dynamic-analysis rule: +dynamic-analysis: coverage valgrind + +# Add cppcheck rule +cppcheck: + @if type cppcheck >/dev/null 2>&1; then \ + cppcheck -v --enable=all --xml \ + src 2> cppcheck-result.xml; \ + else \ + echo "cppcheck not found in PATH."; \ + fi + +# Add sloccount rule +sloccount: + @if type sloccount >/dev/null 2>&1; then \ + sloccount --duplicates --wide --details \ + src test > sloccount.sc; \ + else \ + echo "sloccount not found in PATH."; \ + fi + +# Add cppncss rule +cppncss: + @if type cppncss >/dev/null 2>&1; then \ + cppncss -r -v -x -k -f=cppncss-raw-report.xml \ + src inst/*/src; \ + else \ + echo "cppncss not found in PATH."; \ + fi + +# Add coverage rule +coverage: + @if type gcovr >/dev/null 2>&1; then \ + gcovr -r . -x -o gcovr-reports-data.xml; \ + else \ + echo "gcovr script not found in PATH."; \ + fi + +# Add Valgrind rule +valgrind: + @if type valgrind >/dev/null 2>&1; then \ + $(MAKE) -C test valgrind; \ + else \ + echo "valgrind not found in PATH."; \ + fi + +# Add Sphinx rule +sphinx: + @if type sphinx-build >/dev/null 2>&1; then \ + sphinx-build -b html doc/source doc/html; \ + else \ + echo "sphinx-build not found in PATH."; \ + fi + +# Install Sphinx files +sphinx-install: + @if test -f $(srcdir)/doc/html/index.html ; then \ + $(mkinstalldirs) $(DESTDIR)$(docdir)/html && \ + for file in $(srcdir)/doc/html/*.* ; do \ + echo "$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/html" ; \ + $(INSTALL_DATA) "$$file" $(DESTDIR)$(docdir)/html ; \ + done ; \ + cp -r $(srcdir)/doc/html/_sources $(DESTDIR)$(docdir)/html/ ; \ + cp -r $(srcdir)/doc/html/_static $(DESTDIR)$(docdir)/html/ ; \ + fi + +# Add documentation rule: +#doc: doxygen sphinx # Non-Automake subdirectories to distribute DISTDIRS = doc/html doc/html/images diff --git a/test/Makefile.am b/test/Makefile.am index a2a61d6..f94addb 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -19,3 +19,16 @@ TESTS_ENVIRONMENT = @RUNSHARED@=$(top_builddir)/src/.libs$(TEST_ENV_DIR):$(LIBDI TESTS = test_ctools.sh \ $(TEST_CSCRIPTS) \ $(TEST_PYTHON_SCRIPT) + +# Add Valgrind rule +valgrind: + @if type valgrind >/dev/null 2>&1; then \ + for prog in $(check_PROGRAMS) ; do \ + valgrind --leak-check=full \ + --xml=yes --xml-file=tmp.xml ./$$prog; \ + sed '/<\/valgrindoutput>/d' tmp.xml > valgrind_$$prog.xml; \ + echo '' >> valgrind_$$prog.xml; \ + done ; \ + else \ + echo "valgrind not found in PATH."; \ + fi