DITZ ?= ditz
CONFIGURE_ARGS ?= --disable-optimization
-HLINT_OPTS ?= --cross --report=dist/report.html
+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)
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 {} \;
clean-hook:
doc: setup-config
- ./Setup haddock
+ ./Setup haddock $(HADDOCK_OPTS)
install: build
$(SUDO) ./Setup install
$(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 ----------------------------------------------------------
fixme:
@$(FIND) . \
\( -name 'dist' -or -name '.git' -or -name '_darcs' \) -prune \
-name '*.hs' -or -name '*.lhs' -or \
-name '*.hsc' -or -name '*.cabal' \) \
-exec egrep 'FIXME|THINKME|TODO' {} \+ \
- || echo 'No FIXME or THINKME found.'
+ || 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_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:
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 \
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