1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-21 08:45:04 -05:00
xeps/Makefile

96 lines
3.2 KiB
Makefile
Raw Normal View History

2015-08-31 22:41:35 -04:00
.SILENT:
OUTDIR?=build
REFSDIR?=$(OUTDIR)/refs
XMLDEPS=xep.xsd xep.ent xep.dtd ref.xsl $(OUTDIR)
2017-01-03 16:22:30 -05:00
TEXMLDEPS=xep2texml.xsl $(OUTDIR)/xmpp.pdf $(OUTDIR)/xmpp-text.pdf
XMPPIMAGESURL=https://xmpp.org/images
XEPDIRS=. inbox
HTMLDEPS=xep.xsl $(OUTDIR)/prettify.css $(OUTDIR)/prettify.js $(OUTDIR)/xmpp.css
2015-09-01 00:15:10 -04:00
2015-08-31 22:41:35 -04:00
.PHONY: help
help:
@echo 'XEP makefile targets:'
@echo ' '
@echo ' help - (this message)'
@echo ' all - build all XEPs (same as make html)'
@echo ' refs - build all IETF refs'
2015-09-01 00:15:10 -04:00
@echo ' html - build all XEPs'
2015-08-31 22:41:35 -04:00
@echo ' clean - recursively unlink the build tree'
@echo ' preview - builds html whenever an XEP changes (requires inotify-tools)'
@echo ' xep-xxxx - build HTML, PDF, and reference forms of an XEP'
2017-01-03 16:22:30 -05:00
@echo ' xep-xxxx.pdf - build xep-xxxx.pdf (requires xelatex and texml)'
2015-09-01 00:15:10 -04:00
@echo ' xep-xxxx.html - build xep-xxxx.html'
2015-08-31 22:41:35 -04:00
@echo ' '
@echo 'Output directory: "$(OUTDIR)/"'
.PHONY: all
all: html
2015-09-01 00:15:10 -04:00
.PHONY: html
html: $(patsubst %.xml, $(OUTDIR)/%.html, $(wildcard *.xml))
2017-01-03 16:22:30 -05:00
.PHONY: pdf
pdf: $(patsubst %.xml, $(OUTDIR)/%.pdf, $(wildcard *.xml))
.PHONY: refs
refs: $(patsubst xep-%.xml, $(REFSDIR)/reference.XSF.XEP-%.xml, $(wildcard *.xml))
2015-08-31 22:41:35 -04:00
.PHONY: xep-%
xep-%: $(OUTDIR)/xep-%.html $(REFSDIR)/reference.XSF.XEP-%.xml $(OUTDIR)/xep-%.pdf;
2015-09-01 00:15:10 -04:00
.PHONY: xep-%.html
2015-09-22 15:03:35 -04:00
xep-%.html: $(OUTDIR)/xep-%.html ;
2015-09-01 00:15:10 -04:00
2017-01-03 16:22:30 -05:00
.PHONY: xep-%.pdf
xep-%.pdf: $(OUTDIR)/xep-%.pdf ;
$(REFSDIR)/reference.XSF.XEP-%.xml: xep-%.xml $(XMLDEPS) ref.xsl $(REFSDIR)
xsltproc --path $(CURDIR) ref.xsl "$<" > "$@" && echo "Finished building $@"
2015-08-31 22:41:35 -04:00
$(OUTDIR)/%.html: %.xml $(XMLDEPS) $(HTMLDEPS)
xmllint --nonet --noout --noent --loaddtd --valid "$<"
# Check for non-data URIs
! xmllint --nonet --noout --noent --loaddtd --xpath "//img/@src[not(starts-with(., 'data:'))]" $< 2>/dev/null && true
2017-01-03 16:22:30 -05:00
# Actually build the HTML
2015-09-10 14:06:50 -04:00
xsltproc --path $(CURDIR) xep.xsl "$<" > "$@" && echo "Finished building $@"
2015-08-31 22:41:35 -04:00
$(OUTDIR)/xmpp.pdf $(OUTDIR)/xmpp-text.pdf: $(OUTDIR)
2017-01-03 16:22:30 -05:00
cp "resources/$(notdir $@)" "$@"
$(OUTDIR)/%.pdf: %.xml $(XMLDEPS) $(TEXMLDEPS)
xmllint --nonet --noout --noent --loaddtd --valid "$<"
2017-01-03 16:22:30 -05:00
# Check for non-data URIs
! xmllint --nonet --noout --noent --loaddtd --xpath "//img/@src[not(starts-with(., 'data:'))]" $< 2>/dev/null && true
xsltproc --path $(CURDIR) xep2texml.xsl "$<" > "$(@:.pdf=.tex.xml)"
texml -e utf8 "$(@:.pdf=.tex.xml)" "$(@:.pdf=.tex)"
sed -i -e 's|\([\s"]\)\([^"]http://[^ "]*\)|\1\\path{\2}|g' \
-e 's|\\hyperref\[#\([^}]*\)\]|\\hyperref\[\1\]|g' \
-e 's|\\pageref{#\([^}]*\)}|\\pageref{\1}|g' "$(@:.pdf=.tex)"
cd $(OUTDIR); xelatex -interaction=batchmode -no-shell-escape "$(notdir $(basename $@)).tex" && echo "Finished building $@"
$(OUTDIR)/%.js: %.js
cp "$<" "$@"
2015-09-01 00:15:10 -04:00
$(OUTDIR)/%.css: %.css
cp "$<" "$@"
2015-09-01 00:15:10 -04:00
$(REFSDIR) $(OUTDIR):
mkdir -p $@
2015-08-31 22:41:35 -04:00
.PHONY: clean
clean:
rm -rf $(OUTDIR)
.PHONY: preview
preview:
inotifywait -m -e close_write,moved_to --format '%e %w %f' $(XEPDIRS) | \
while read -r event dir file; do \
if [ "$${file: -4}" == ".xml" ]; then \
xsltproc --path $(CURDIR) xep.xsl "$${dir}/$${file}" > "$(OUTDIR)/$${file%.*}.html" && echo "Built $${file%.*}.html $${event}"; \
fi \
done