maint.mk: really add $(AM_MAKEFLAGS)
[pspp] / top / maint.mk
index 662b37174f2fa2e79932c621beeec830e17ae3d3..3177d577a59f50fcd0895fc0918cbc9506e09b6f 100644 (file)
@@ -2,7 +2,7 @@
 # This Makefile fragment is intended to be useful by any GNU-like project.
 # This file originate from coreutils, CPPI, Bison, and Autoconf.
 
-# Copyright (C) 2001-2007 Free Software Foundation, Inc.
+# Copyright (C) 2001-2009 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 ME := maint.mk
+MYSELF := $(srcdir)/$(ME)
 
 # List of all C-like source code files that will be tested for
-# stylistic "errors".  You may want to define this to something 
-# more complex in Makefile.cfg.
+# stylistic "errors".  You may want to define this to something
+# more complex in cfg.mk.
 C_SOURCES ?= $(shell find . -name '*.[chly]')
 
-# Add some more files to check, typically set in Makefile.cfg.
+# Add some more files to check, typically set in cfg.mk.
 C_SOURCES += $(C_SOURCES_ADD)
 
 # Do not save the original name or timestamp in the .tar.gz file.
@@ -100,11 +101,36 @@ sc_changelog:
            exit 1; } || :
 
 # Collect the names of rules starting with `sc_'.
-syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
+syntax-check-rules := \
+  $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(MYSELF))
 .PHONY: $(syntax-check-rules)
 
 syntax-check: $(syntax-check-rules)
 
+# Code Coverage
+
+init-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) clean
+       lcov --directory . --zerocounters
+
+COVERAGE_CCOPTS ?= "-g --coverage"
+COVERAGE_OUT ?= doc/coverage
+
+build-coverage:
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS)
+       $(MAKE) $(AM_MAKEFLAGS) CFLAGS=$(COVERAGE_CCOPTS) CXXFLAGS=$(COVERAGE_CCOPTS) check
+       mkdir -p $(COVERAGE_OUT)
+       lcov --directory . --output-file $(COVERAGE_OUT)/$(PACKAGE).info \
+               --capture
+
+gen-coverage:
+       genhtml --output-directory $(COVERAGE_OUT) \
+               $(COVERAGE_OUT)/$(PACKAGE).info \
+               --highlight --frames --legend \
+               --title "$(PACKAGE_NAME)"
+
+coverage: init-coverage build-coverage gen-coverage
+
 # Update gettext files.
 PACKAGE ?= $(shell basename $(PWD))
 POURL = http://translationproject.org/latest/$(PACKAGE)/
@@ -115,7 +141,7 @@ refresh-po:
        wget --no-verbose --directory-prefix $(PODIR) --no-directories --recursive --level 1 --accept .po --accept .po.1 $(POURL) && \
        echo 'en@boldquot' > $(PODIR)/LINGUAS && \
        echo 'en@quot' >> $(PODIR)/LINGUAS && \
-       ls $(PODIR)/*.po | sed 's/.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
+       ls $(PODIR)/*.po | sed 's/\.po//' | sed 's,$(PODIR)/,,' | sort >> $(PODIR)/LINGUAS
 
 INDENT_SOURCES ?= $(C_SOURCES)
 .PHONY: indent