]> pere.pagekite.me Git - text-madewithcc.git/blobdiff - Makefile
Reflow XMl with xmllint after generating it, to make sure it get predictable indentation.
[text-madewithcc.git] / Makefile
index 358acb7a5427d0896e84e5fe5395c3b2b73050f7..286d9349fec92beb2128d31a6b36657488aed16a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,19 +10,31 @@ SOURCE=MadewithCreativeCommonsmostup-to-dateversion
 # increase every time the generated Markdown is modified.
 VERSION=20170609-2
 
-PANDOC_OPTS = --top-level-division=part -t docbook -f markdown+inline_notes --variable 'author:Paul Stacey' --variable 'author:Sarah Hinchliff Pearson'  --variable 'title:Hecho con Creative Commons'
-# --top-level-diversion is not available in pandoc in Jessie
-# PANDOC_OPTS = -t docbook -f markdown+inline_notes
+# pandoc version 1.17.2~dfsg-3 do not understand
+# --top-level-diversion, while version 1.19.2.4~dfsg-1+b3 do.
+PANDOC_OPTS = \
+  --standalone \
+  --top-level-division=part \
+  -t docbook \
+  -f markdown+inline_notes+ascii_identifiers
 
-LANGS = es nl nb
+LANGS := $(shell ls po/*/mwcc.po|cut -d/ -f2)
 
-all: pdf
+all: pdf epub
 
+distclean: clean
+       rm -f $(SOURCE).md
 clean:
-       rm -f $(SOURCE).pdf $(SOURCE).xml $(SOURCE).md
        for LANG in $(LANGS); do \
-           rm -f $(SOURCE).$$LANG.pdf $(SOURCE).$$LANG.xml $(SOURCE).$$LANG.md ;\
+           rm -f $(SOURCE).$$LANG.md ;\
+       done
+       for EXT in aux cb cb2 glo idx lof log tex toc xml pdf epub; do \
+           rm -f $(SOURCE).$$EXT ;\
+           for LANG in $(LANGS); do \
+               rm -f $(SOURCE).$$LANG.$$EXT ;\
+           done; \
         done
+       $(RM) *~
 
 $(SOURCE).md: $(SOURCE).odt fixup.rb
        TEMP=`tempfile -p mwcc` && \
@@ -31,41 +43,89 @@ $(SOURCE).md: $(SOURCE).odt fixup.rb
        rm $$TEMP
 
 pot: po/mwcc.pot po/*/mwcc.po
-po/mwcc.pot: $(SOURCE).md
+po/mwcc.pot: $(SOURCE).xml
        TEMP=`tempfile -p mwcc` && \
-       po4a-gettextize -f text -m $(SOURCE).md -p $$TEMP -M utf-8 --package-name 'Made with Creative Commons' --package-version $(VERSION) && \
+       po4a-gettextize -f docbook -m $(SOURCE).xml -p $$TEMP -M utf-8 --package-name 'Made with Creative Commons' --package-version $(VERSION) && \
        echo '# MADE WITH CREATIVE COMMONS' > $@ && \
        echo '# Copyright (C) 2017 by Creative Commons.' >> $@ && \
        echo '# This file is published under a Creative Commons Attribution-ShareAlike license (CC BY-SA), version 4.0' >> $@ && \
        echo '# Authors: Paul Stacey and Sarah Hinchliff Pearson' >> $@ && \
        tail --lines=+5 $$TEMP >> $@ && \
        rm $$TEMP
-       set -e; for LANG in po/*/mwcc.po; do \
-           echo -n $$LANG\  ; \
-           msgmerge $$LANG po/mwcc.pot -U ; \
-       done
 
-$(SOURCE).es.md: $(SOURCE).md po/es/mwcc.po
-       po4a-translate -f text -m $(SOURCE).md -p po/es/mwcc.po -l $@ -l $@ -L utf8 -M utf8 -k 20
+po/*/mwcc.po: po/mwcc.pot
+       msgmerge --previous $@ po/mwcc.pot -U
+       touch $@
+
+$(SOURCE).de.xml: $(SOURCE).xml po/de/mwcc.po
+       po4a-translate -f docbook -m $(SOURCE).xml -p po/de/mwcc.po -l $@ -l $@ -L utf-8 -M utf-8 -k 0
+
+$(SOURCE).es.xml: $(SOURCE).xml po/es/mwcc.po
+       po4a-translate -f docbook -m $(SOURCE).xml -p po/es/mwcc.po -l $@ -l $@ -L utf-8 -M utf-8 -k 0
+
+$(SOURCE).nb.xml: $(SOURCE).xml po/nb/mwcc.po
+       po4a-translate -f docbook -m $(SOURCE).xml -p po/nb/mwcc.po -l $@ -l $@ -L utf-8 -M utf-8 -k 0
+
+$(SOURCE).nl.xml: $(SOURCE).xml po/nl/mwcc.po
+       po4a-translate -f docbook -m $(SOURCE).xml -p po/nl/mwcc.po -l $@ -l $@ -L utf-8 -M utf-8 -k 0
 
-%.xml: %.md
-       pandoc -s -o $@ $(PANDOC_OPTS) $^
-       perl -p -i -e 's/!DOCTYPE article/!DOCTYPE book/' $@
-       perl -p -i -e 's!<(/?)article(info|)?>!<$$1book$$2>!' $@
+$(SOURCE).pl.xml: $(SOURCE).xml po/pl/mwcc.po
+       po4a-translate -f docbook -m $(SOURCE).xml -p po/pl/mwcc.po -l $@ -l $@ -L utf-8 -M utf-8 -k 0
+
+$(SOURCE).uk.xml: $(SOURCE).xml po/uk/mwcc.po
+       po4a-translate -f docbook -m $(SOURCE).xml -p po/uk/mwcc.po -l $@ -l $@ -L utf-8 -M utf-8 -k 0
+
+$(SOURCE).xml: $(SOURCE).md fixup-docbook.rb
+       TEMP=`tempfile -p mwcc` && \
+         pandoc -s -o $$TEMP $(PANDOC_OPTS) $(SOURCE).md && \
+         ruby fixup-docbook.rb $$TEMP $@ && \
+         rm $$TEMP
+       xmllint --format $@ > $@.new && mv $@.new $@
 
 pdf: $(SOURCE).pdf
+       for LANG in $(LANGS); do \
+           $(MAKE) $(SOURCE).$$LANG.pdf ; \
+       done
 %.pdf: %.tex
        pdflatex $^
        pdflatex $^
 
+epub: $(SOURCE).epub
+       for LANG in $(LANGS); do \
+           $(MAKE) $(SOURCE).$$LANG.epub ; \
+       done
+%.epub: %.xml
+       dbtoepub $^
+
+DBLATEX_OPTS = -T simple -t tex -b xetex -p extra/pdf.xsl
+# Replace Unicode Hair Space (U+200A) with space, as &hairsp; is not
+# handled by LaTeX/dblatex, see <URL: https://bugs.debian.org/889603 >.
 %.tex: %.xml
-       dblatex -t tex -b xetex $^
-       perl -p -i -e 's/\[latin1\]\{inputenc\}/[utf8]{inputenc}\n\\usepackage[spanish]{babel}/' $@
-       perl -p -i -e 's/\\caption\\end/\\caption{} \\end/' $@
-       perl -p -i -e 's/\\author\{and\}/\\author{Paul Stacey \\and Sarah Hinchliff Pearson}/' $@
+       dblatex $(DBLATEX_OPTS) $^
+       perl -p -i -e 's/ / /g' $@
 
 XMLLINTOPTS = --nonet --noout  --xinclude --postvalid
 lint: $(SOURCE).xml
        xmllint $(XMLLINTOPTS) $^
+lint-es: $(SOURCE).nb.xml
+       xmllint $(XMLLINTOPTS) $^
+lint-nb: $(SOURCE).nb.xml
+       xmllint $(XMLLINTOPTS) $^
+
+check-urls:
+       retval=0; for u in $$(perl -n -e'/<ulink url="(.+)"\/>/ && print "$$1\n"' MadewithCreativeCommonsmostup-to-dateversion.xml | sort -u); do \
+         HEAD -H "User-Agent: Docbook XML URL checker" "$$u" > /dev/null || echo "error fetching $$u"; retval=1; \
+       done; exit $$retval
+
+# Experimental build rule to test Docbook XSL + FOP processor 
+xsl-fo-%.pdf: %.xml
+       xsltproc --output $(subst .pdf,.fo,$@) \
+         extra/stylesheet-fo.xsl $^; \
+       fop -fo $(subst .pdf,.fo,$@) -pdf $@
+
+status:
+       for LANG in $(LANGS); do \
+          printf "$$LANG "; msgfmt -o /dev/null --statistics po/$$LANG/mwcc.po; \
+       done
 
 .SUFFIXES: .xml .md