-## Makefile for texmf stuff
+### -*-makefile-*-
+### Makefile for texmf stuff
-texmf = $(HOME)/texmf
-bibtexdir = $(texmf)/bibtex
-bibdir = $(bibtexdir)/bib
-bstdir = $(bibtexdir)/bst
-texdir = $(texmf)/tex
-latexdir = $(texdir)/latex
-fontinstdir = $(texdir)/fontinst
+all::
+.PHONY: all
+
+install::
+uninstall::
+.PHONY: install uninstall
+
+clean::
+.PHONY: clean
+
+.SECONDEXPANSION: #sorry
+
+V ?= 0
+if_v = $(call if_v_$V,$1,$2)
+if_v_0 = $1
+if_v_1 = $2
+V_AT = $(call if_v,@,)
+v_tag = \
+ $(call if_v,@printf " %-8s %s\n" "$1" "$(or $2,$@)";,)
+
+texmfdir = $(HOME)/texmf
+
+INSTALLDIRS += bib bst
+bibtexdir = $(texmfdir)/bibtex
+bibdir = $(bibtexdir)/bib
+bstdir = $(bibtexdir)/bst
+
+INSTALLDIRS += latex
+texdir = $(texmfdir)/tex
+latexdir = $(texdir)/latex
+
+INSTALLDIRS += fontinst
+fontinstdir = $(texdir)/fontinst
default: all
-INSTALL_TARGETS = \
- $(latexdir)/po.sty \
- $(latexdir)/babelbst.tex $(bstdir)/mdwalpha.bst \
- $(bibdir)/mdw-crypto.bib $(bibdir)/mdw-crypto.bix \
- $(fontinstdir)/zrhax.mtx \
- $(fontinstdir)/zrmhax.mtx \
- $(fontinstdir)/zrmkern.mtx \
- $(fontinstdir)/zrvhax.mtx \
- $(fontinstdir)/zryhax.mtx
-
-install: $(INSTALL_TARGETS) $(texmf)/ls-R
-all: babelbst.tex mdwalpha.bst mdw-crypto.bix
-
-$(texmf)/ls-R: $(INSTALL_TARGETS); mktexlsr $(texmf)
-$(texdir) $(latexdir) $(bibtexdir) $(bibdir) $(bstdir) $(fontinstdir): %:
- mkdir -p $@
-$(latexdir)/%: % $(latexdir); cp $< $@
-$(fontinstdir)/%: % $(fontinstdir); cp $< $@
-$(bibdir)/%: % $(bibdir); cp $< $@
-$(bstdir)/%: % $(bstdir); cp $< $@
-%.bix: %.bib; bibindex $<
-
-babelbst.tex mdwalpha.bst: mdwalpha.dbj
- rm -f babelbst.tex mdwalpha.bst
- tex '\let\ifbatching\iftrue \input mdwalpha.dbj'
-
-clean:; rm -f mdwalpha.bst babelbst.tex *.log *.bix
-
-.PHONY: all install clean
+latex_FILES += po.sty
+latex_FILES += babelbst.tex
+latex_FILES += beamerthememdw.sty
+
+bib_FILES += mdw-crypto.bib mdw-fixes.bib
+bst_FILES += mdwalpha.bst
+
+fontinst_FILES += zrmkern.mtx
+fontinst_FILES += zrhax.mtx zrmhax.mtx zrvhax.mtx zryhax.mtx
+
+CLEANFILES += *.log
+
+TARGETS += babelbst.tex mdwalpha.bst
+CLEANFILES += *.bix
+babelbst.tex: mdwalpha.bst
+mdwalpha.bst: mdwalpha.dbj
+ $(V_AT)rm -f babelbst.tex mdwalpha.bst
+ $(call v_tag,TEX)tex \
+ $(call if_v,>/dev/null --interaction=batchmode) \
+ '\let\ifbatching\iftrue \input mdwalpha.dbj'
+
+INSTALL_RULES = $(foreach d,$(INSTALLDIRS), install/$d)
+install:: $(INSTALL_RULES)
+ mktexlsr $(texmfdir)
+$(INSTALL_RULES): install/%: $$($$*_FILES)
+ $(V_AT)mkdir -p $(DESTDIR)$($*dir)
+ $(call v_tag,INST,$($*dir): $($*_FILES))\
+ cp $+ $(DESTDIR)$($*dir)/
+.PHONY: $(INSTALL_RULES)
+
+UNINSTALL_RULES = $(foreach d,$(INSTALLDIRS), uninstall/$d)
+uninstall:: $(UNINSTALL_RULES)
+ mktexlsr $(texmfdir)
+$(UNINSTALL_RULES): uninstall/%: $$($$*_FILES)
+ $(call v_tag,RM,$($*dir): $($*_FILES))\
+ rm -f $(foreach f,$($*_FILES), $(DESTDIR)$($*dir)/$f)
+.PHONY: $(UNINSTALL_RULES)
+
+all:: $(TARGETS)
+clean::; rm -f $(CLEANFILES) $(TARGETS)