X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=Lucu.git;a=blobdiff_plain;f=cabal-package.mk;h=bec1d1419da2a391f41db8acf50c6422ae8ed693;hp=ca291ff93111587ba2f4d30245a97c94713e84a3;hb=b22e702f8161447a460847c6e6c97104c150534f;hpb=e2a6ee839c0ca27b25b32656a5c080e4b464e7c9 diff --git a/cabal-package.mk b/cabal-package.mk index ca291ff..bec1d14 100644 --- a/cabal-package.mk +++ b/cabal-package.mk @@ -13,11 +13,20 @@ FIND ?= find RM_RF ?= rm -rf SUDO ?= sudo AUTOCONF ?= autoconf +HLINT ?= hlint +HPC ?= hpc +DITZ ?= ditz CONFIGURE_ARGS ?= --disable-optimization +HADDOCK_OPTS ?= --hyperlink-source +HLINT_OPTS ?= \ + --hint=Default --hint=Dollar --hint=Generalise \ + --cross \ + --report=dist/report.html SETUP_FILE := $(wildcard Setup.*hs) CABAL_FILE := $(wildcard *.cabal) +PKG_NAME := $(CABAL_FILE:.cabal=) ifeq ($(shell ls configure.ac 2>/dev/null),configure.ac) AUTOCONF_AC_FILE := configure.ac @@ -39,6 +48,7 @@ all: build build: setup-config build-hook ./Setup build + $(RM_RF) *.tix build-hook: @@ -68,14 +78,18 @@ $(BUILDINFO_FILE): $(BUILDINFO_IN_FILE) configure Setup: $(SETUP_FILE) $(GHC) --make Setup +reconfigure: + rm -f dist/setup-config + $(MAKE) setup-config + clean: clean-hook - $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo + $(RM_RF) dist Setup *.o *.hi .setup-config *.buildinfo *.tix .hpc $(FIND) . -name '*~' -exec rm -f {} \; clean-hook: doc: setup-config - ./Setup haddock + ./Setup haddock $(HADDOCK_OPTS) install: build $(SUDO) ./Setup install @@ -84,6 +98,69 @@ sdist: setup-config ./Setup sdist test: build + $(RM_RF) dist/test ./Setup test + if ls *.tix >/dev/null 2>&1; then \ + $(HPC) sum --output="merged.tix" --union --exclude=Main *.tix; \ + $(HPC) markup --destdir="dist/hpc" --fun-entry-count "merged.tix"; \ + fi + +# -- Find FIXME Tags ---------------------------------------------------------- +fixme: + @$(FIND) . \ + \( -name 'dist' -or -name '.git' -or -name '_darcs' \) -prune \ + -or \ + \( -name '*.c' -or -name '*.h' -or \ + -name '*.hs' -or -name '*.lhs' -or \ + -name '*.hsc' -or -name '*.cabal' \) \ + -exec egrep 'FIXME|THINKME|TODO' {} \+ \ + || echo 'No FIXME, THINKME, nor TODO found.' + +# -- HLint -------------------------------------------------------------------- +HLINT_TARGETS ?= $$(find -E . -type d -name dist -prune -o -regex '.*\.(hsc?|lhs)' -print) +lint: + $(HLINT) $(HLINT_TARGETS) $(HLINT_OPTS) + +# -- Ditz the Distributed Issue Tracker --------------------------------------- +ifeq (,$(wildcard .ditz-config)) +ditz: +else +ditz: + $(DITZ) html dist/ditz + +ChangeLog: + rm -f $@ + $(DITZ) releases | awk '{print $$1}' | sort --reverse | while read i; do \ + $(DITZ) changelog $$i >> $@; \ + done + head $@ +endif -.PHONY: build build-hook setup-config setup-config-hook run clean clean-hook install doc sdist test +# -- Pushing to remote hosts -------------------------------------------------- +push: push-repo push-ditz push-doc + +push-repo: + if [ -d "_darcs" ]; then \ + darcs push; \ + elif [ -d ".git" ]; then \ + git push --all && git push --tags; \ + fi + +push-ditz: ditz + if [ -d "dist/ditz" ]; then \ + rsync -av --delete \ + dist/ditz/ \ + www@nem.cielonegro.org:static.cielonegro.org/htdocs/ditz/$(PKG_NAME); \ + fi + +push-doc: doc + if [ -d "dist/doc" ]; then \ + rsync -av --delete \ + dist/doc/html/$(PKG_NAME)/ \ + www@nem.cielonegro.org:static.cielonegro.org/htdocs/doc/$(PKG_NAME); \ + fi + +# -- Phony Targets ------------------------------------------------------------ +.PHONY: build build-hook setup-config setup-config-hook run clean clean-hook \ + install doc sdist test lint push push-repo push-ditz push-doc \ + ChangeLog