summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Müller <ulm@gentoo.org>2017-05-08 20:39:41 +0200
committerUlrich Müller <ulm@gentoo.org>2017-05-08 20:39:41 +0200
commit9ba8db2d110e28ea85783c8061652ba27336d565 (patch)
treec44f5fc2ad6ee64922bf19a79a69e80f88ce5372 /Makefile
parentebuild-env-state.tex: Remove misleading paragraph break. (diff)
downloadpms-9ba8db2d110e28ea85783c8061652ba27336d565.tar.gz
pms-9ba8db2d110e28ea85783c8061652ba27336d565.tar.bz2
pms-9ba8db2d110e28ea85783c8061652ba27336d565.zip
Makefile: Major rewrite.
Move pms.pdf and eapi-cheatsheet into one rule, since they cannot be built independently. Saner lists of prerequisites. Loop over latex and mk4ht until their output converges. Remove aux-clean target. Add .DELETE_ON_ERROR in order to delete corrupted or incomplete target files. Use all-caps for .PHONY target or it will have no effect.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile91
1 files changed, 52 insertions, 39 deletions
diff --git a/Makefile b/Makefile
index bc1ee51..53ccaa7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,31 +1,37 @@
-all : pms.pdf
-html : pms.html
+LATEXFILES := $(filter-out vc.tex,$(wildcard *.tex)) pms.cls
+SOURCES = $(LATEXFILES) pms.bib vc vc-git.awk Makefile
-clean :
- rm -f *~ *.pdf *.dvi *.log *.aux *.bbl *.blg *.toc *.lol *.loa *.lox \
- *.lot *.out *.html *.css *.png *.4ct *.4tc *.idv *.lg *.tmp *.xref
+# latex chokes on aux files produced by tex4ht, so remove them
+aux-clean = if grep -q rEfLiNK pms.aux 2>/dev/null; then rm -f *.aux; fi
-maintainer-clean: clean
- rm -f vc.tex
+all: pms.pdf
-aux-clean:
- @# latex chokes on aux files produced by tex4ht, so remove them
- if grep -q rEfLiNK pms.aux 2>/dev/null; then rm -f *.aux; fi
+html: pms.html
-LATEXFILES := $(filter-out vc.tex,$(wildcard *.tex)) pms.cls
+pms.pdf: $(LATEXFILES) pms.bbl vc.tex
+ $(aux-clean)
+ set -e; \
+ while true; do \
+ pdflatex eapi-cheatsheet; \
+ pdflatex pms; \
+ grep -q 'Warning.*Rerun' eapi-cheatsheet.log pms.log || break; \
+ done
-pms.pdf: $(LATEXFILES) pms.bbl vc.tex eapi-cheatsheet.pdf aux-clean
- pdflatex pms
- pdflatex pms
- pdflatex eapi-cheatsheet
- pdflatex pms
+pms.dvi: $(LATEXFILES) pms.bbl vc.tex
+ $(aux-clean)
+ set -e; \
+ while true; do \
+ latex pms; \
+ grep -q 'Warning.*Rerun' pms.log || break; \
+ done
pms.html: $(LATEXFILES) pms.bbl vc.tex
- @# need to do it twice to make the big env var table work ...
- @# ... and a third time for the eapi features table
- mk4ht xhlatex pms xhtml,fn-in
- mk4ht xhlatex pms xhtml,fn-in
- mk4ht xhlatex pms xhtml,fn-in
+ set -e; sum=''; \
+ while true; do \
+ mk4ht xhlatex pms xhtml,fn-in; \
+ oldsum=$${sum}; sum=$$(cksum $@); \
+ test "$${sum}" != "$${oldsum}" || break; \
+ done
@# some www servers ignore meta tags, resulting in a wrong charset.
@# therefore recode the very few non-ascii characters
recode -d l1..h3 $@
@@ -37,36 +43,43 @@ pms.html: $(LATEXFILES) pms.bbl vc.tex
@# remove redundant span elements
LC_ALL=C sed -i -e ':x;/<span\(\s\+[^>]*\)\?$$/{N;bx;};:y;s/\(<span\s\+[^>]*>\)\([^<]*\)<\/span>\1/\1\2/;ty' $@
-pms.bbl: pms.bib pms.tex vc.tex eapi-cheatsheet.pdf
+pms.bbl: $(LATEXFILES) pms.bib
+ $(aux-clean)
latex pms
bibtex pms
-eapi-cheatsheet.pdf: vc.tex aux-clean
- pdflatex eapi-cheatsheet
-
-eapi-cheatsheet-nocombine.pdf: vc.tex aux-clean
- @# cheat sheet with separate pages, for proofreading
- pdflatex -jobname eapi-cheatsheet-nocombine \
- '\PassOptionsToClass{nocombine}{leaflet}\input{eapi-cheatsheet.tex}'
-
-vc.tex: $(LATEXFILES) vc vc-git.awk
+vc.tex: $(SOURCES)
/bin/sh ./vc
-pms.dvi: $(LATEXFILES) pms.bbl vc.tex aux-clean
- latex pms
- latex pms
- latex pms
+eapi-cheatsheet.pdf: pms.pdf
+ @# nothing to do here, since this is also part of the main document
-dist: $(LATEXFILES) pms.bib vc vc-git.awk vc.tex Makefile
+eapi-cheatsheet-nocombine.pdf: pms.pdf
+ @# cheat sheet with separate pages, for proofreading
+ set -e; \
+ while true; do \
+ pdflatex -jobname eapi-cheatsheet-nocombine \
+ '\PassOptionsToClass{nocombine}{leaflet}\input{eapi-cheatsheet}'; \
+ grep -q 'Warning.*Rerun' eapi-cheatsheet-nocombine.log || break; \
+ done
+
+dist: $(SOURCES) vc.tex
@if test -z $(PV); then \
echo "Usage: $(MAKE) $@ PV=<version>"; false; \
fi
tar -cJf pms-$(PV).tar.xz --transform='s%^%pms-$(PV)/%' $^
-upload:
+upload: pms.pdf pms.html
scp pms.pdf eapi-cheatsheet.pdf pms*.html pms.css \
dev.gentoo.org:public_html/pms/head/
-.default: all
+clean:
+ rm -f *~ *.pdf *.dvi *.log *.aux *.bbl *.blg *.toc *.lol *.loa *.lox \
+ *.lot *.out *.html *.css *.png *.4ct *.4tc *.idv *.lg *.tmp *.xref
+
+maintainer-clean: clean
+ rm -f vc.tex
+
+.PHONY: all html dist upload clean maintainer-clean
-.phony: clean maintainer-clean aux-clean dist upload
+.DELETE_ON_ERROR: