X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=cabal-package.mk;h=6c96697f39f307a8c537c9e1f208a2e4a98e96d3;hb=5fda588b9e7f64096f1033b3833f6af79bba30e2;hp=b2bf65597e8426a73d30fbdb637f08f33d54f7dd;hpb=c7faabefe2f193148ee2f4679e611f0025bfbd5b;p=cabal-shared-makefile.git diff --git a/cabal-package.mk b/cabal-package.mk index b2bf655..6c96697 100644 --- a/cabal-package.mk +++ b/cabal-package.mk @@ -8,17 +8,26 @@ # RUN_COMMAND :: command to be run for "make run" # -GHC ?= ghc -FIND ?= find -RM_RF ?= rm -rf -SUDO ?= sudo AUTOCONF ?= autoconf +DARCS ?= darcs +DITZ ?= ditz +FIND ?= find +GREP ?= grep +GHC ?= ghc +GIT ?= git HLINT ?= hlint HPC ?= hpc -DITZ ?= ditz +RM_RF ?= rm -rf +RSYNC ?= rsync +SUDO ?= sudo CONFIGURE_ARGS ?= --disable-optimization -HLINT_OPTS ?= --cross --report=dist/report.html +HADDOCK_OPTS ?= --hyperlink-source +HLINT_OPTS ?= \ + --hint=Default --hint=Dollar --hint=Generalise \ + --cross \ + --ignore="Parse error" \ + --report=dist/report.html SETUP_FILE := $(wildcard Setup.*hs) CABAL_FILE := $(wildcard *.cabal) @@ -74,6 +83,10 @@ $(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 *.tix .hpc $(FIND) . -name '*~' -exec rm -f {} \; @@ -81,7 +94,7 @@ clean: clean-hook clean-hook: doc: setup-config - ./Setup haddock + ./Setup haddock $(HADDOCK_OPTS) install: build $(SUDO) ./Setup install @@ -97,16 +110,14 @@ test: build $(HPC) markup --destdir="dist/hpc" --fun-entry-count "merged.tix"; \ fi -ditz: - $(DITZ) html dist/ditz - -ChangeLog: - rm -f $@ - $(DITZ) releases | awk '{print $$1}' | sort --reverse | while read i; do \ - $(DITZ) changelog $$i >> $@; \ - done - head $@ - +# -- Find FIXME Tags ---------------------------------------------------------- +ifeq ($(shell ls -d .git 2>/dev/null),.git) +fixme: + @$(FIND) . \ + -depth 1 -not -name '*.mk' \ + -exec $(GIT) grep -E 'FIXME|THINKME|TODO' {} + \ + || echo 'No FIXME, THINKME, nor TODO found.' +else fixme: @$(FIND) . \ \( -name 'dist' -or -name '.git' -or -name '_darcs' \) -prune \ @@ -114,33 +125,55 @@ fixme: \( -name '*.c' -or -name '*.h' -or \ -name '*.hs' -or -name '*.lhs' -or \ -name '*.hsc' -or -name '*.cabal' \) \ - -exec egrep -i '(fixme|thinkme)' {} \+ \ - || echo 'No FIXME or THINKME found.' + -exec $(GREP) -n -E 'FIXME|THINKME|TODO' {} + \ + || echo 'No FIXME, THINKME, nor TODO found.' +endif +# -- HLint -------------------------------------------------------------------- +HLINT_TARGETS ?= $$(find -E . -type d -name dist -prune -o -regex '.*\.(hsc?|lhs)' -print) lint: - $(HLINT) . $(HLINT_OPTS) + $(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 + +# -- Pushing to remote hosts -------------------------------------------------- push: push-repo push-ditz push-doc push-repo: if [ -d "_darcs" ]; then \ - darcs push; \ + $(DARCS) push; \ elif [ -d ".git" ]; then \ - git push --all && git push --tags; \ + $(GIT) push --all && git push --tags; \ fi push-ditz: ditz - rsync -av --delete \ - dist/ditz/ \ - www@nem.cielonegro.org:static.cielonegro.org/htdocs/ditz/$(PKG_NAME) + 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 \ + $(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