aboutsummaryrefslogtreecommitdiff
path: root/documentation/Makefile
diff options
context:
space:
mode:
authorMarc Fonvieille <blackend@FreeBSD.org>2021-05-31 16:16:55 +0000
committerMarc Fonvieille <blackend@FreeBSD.org>2021-05-31 16:16:55 +0000
commit5f4322e404e4ea93f640658f3aef25b7e45a4e95 (patch)
tree47b75d363d76b643bcb9f72faccaa3f3466cc501 /documentation/Makefile
parent29e47423be969b7fcc7125977c1b22ddd33fc671 (diff)
downloaddoc-5f4322e404e4ea93f640658f3aef25b7e45a4e95.tar.gz
doc-5f4322e404e4ea93f640658f3aef25b7e45a4e95.zip
Diffstat (limited to 'documentation/Makefile')
-rw-r--r--documentation/Makefile132
1 files changed, 132 insertions, 0 deletions
diff --git a/documentation/Makefile b/documentation/Makefile
index 72616084fa..2257cc0061 100644
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -20,13 +20,20 @@ LOCALBASE?= /usr/local
PYTHON_CMD = ${LOCALBASE}/bin/python3
RUBY_CMD = ${LOCALBASE}/bin/ruby
HUGO_CMD = ${LOCALBASE}/bin/hugo
+ASCIIDOCTORPDF_CMD= /usr/local/bin/asciidoctor-pdf
+.if defined(DOC_LANG) && !empty(DOC_LANG)
+LANGUAGES = ${DOC_LANG}
+.else
LANGUAGES = en,es,pt-br,de,ja,zh-cn,zh-tw,ru,el,hu,it,mn,nl,pl,fr
+.endif
+
RUBYLIB = ../shared/lib
.export RUBYLIB
RUN_DEPENDS= ${PYTHON_CMD} \
${HUGO_CMD} \
${LOCALBASE}/bin/asciidoctor \
+ ${LOCALBASE}/bin/asciidoctor-pdf \
${LOCALBASE}/bin/rougify
.ifndef HOSTNAME
@@ -72,3 +79,128 @@ run-local: .PHONY
build: .PHONY
${HUGO_CMD} --minify
+
+#
+# PDF targets
+# Use DOC_LANG to choose the language, e.g., make DOC_LANG="en,fr" pdf-books
+#
+pdf: pdf-articles pdf-books
+
+pdf-books-target:
+.for _lang in ${LANGUAGES:S|,| |g}
+.if exists(${.CURDIR}/content/${_lang}/books/)
+TMP += ${.CURDIR}/content/${_lang}/books/*/
+.endif
+.endfor
+BOOKSDIR != echo ${TMP}
+
+pdf-articles-target:
+.for _lang in ${LANGUAGES:S|,| |g}
+.if exists(${.CURDIR}/content/${_lang}/articles/)
+TTMP += ${.CURDIR}/content/${_lang}/articles/*/
+.endif
+.endfor
+ARTICLESDIR != echo ${TTMP}
+
+pdf-books: pdf-books-target generate-books-toc
+
+# Books build
+#
+# Notes:
+# pdf-theme=default-with-fallback-font is
+# used instead of pdf-theme=./themes/default-pdf-theme.yml because
+# it allows ja, ru, tr, zh-* fonts to be embedded and rendering is
+# better for other languages.
+#
+# asciidoctor-pdf-cjk and/or specific themes should be used for cjk
+# fonts
+.for _curpdf in ${BOOKSDIR}
+ @mkdir -p ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}
+.if exists(${_curpdf}book.adoc)
+ ${ASCIIDOCTORPDF_CMD} \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/git-macro.rb \
+ -r ./shared/lib/packages-macro.rb \
+ -r ./shared/lib/inter-document-references-macro.rb \
+ -r ./shared/lib/sectnumoffset-treeprocessor.rb \
+ --doctype=book \
+ -a skip-front-matter \
+ -a pdf-theme=default-with-fallback-font \
+ -o ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf \
+ ${_curpdf}book.adoc
+.else
+# some books use _index.adoc as main document
+ ${ASCIIDOCTORPDF_CMD} \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/git-macro.rb \
+ -r ./shared/lib/packages-macro.rb \
+ -r ./shared/lib/inter-document-references-macro.rb \
+ -r ./shared/lib/sectnumoffset-treeprocessor.rb \
+ --doctype=book \
+ -a skip-front-matter \
+ -a pdf-theme=default-with-fallback-font \
+ -o ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf \
+ ${_curpdf}_index.adoc
+.endif
+.endfor
+
+pdf-articles: pdf-articles-target
+
+# Articles build
+.for _curpdf in ${ARTICLESDIR}
+ @mkdir -p ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}
+ ${ASCIIDOCTORPDF_CMD} \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/git-macro.rb \
+ -r ./shared/lib/packages-macro.rb \
+ -r ./shared/lib/inter-document-references-macro.rb \
+ -r ./shared/lib/sectnumoffset-treeprocessor.rb \
+ --doctype=article \
+ -a skip-front-matter \
+ -a pdf-theme=default-with-fallback-font \
+ -o ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}article.pdf \
+ ${_curpdf}_index.adoc
+.if exists(${.CURDIR}/static/source/articles/${_curpdf:H:T})
+ cp -R ${.CURDIR}/static/source/articles/${_curpdf:H:T}/ \
+ ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}
+.endif
+.endfor
+
+pdf-clean: pdf-articles-clean pdf-books-clean
+
+pdf-books-clean: pdf-books-target
+.for _curpdf in ${BOOKSDIR}
+ rm -f ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf ${_curpdf}toc*.adoc
+ rm -fr ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}
+.endfor
+.for _lang in ${LANGUAGES:S|,| |g}
+ rm -fr ${.CURDIR}/public/${_lang}/books
+.if !exists(${.CURDIR}/public/${_lang}/articles)
+ rm -fr ${.CURDIR}/public/${_lang}
+.endif
+.endfor
+ @if [ -d ${.CURDIR}/public/ ]; then \
+ if [ -z "`ls -A ${.CURDIR}/public/`" ]; then \
+ rm -fr ${.CURDIR}/public; \
+ fi; \
+ fi
+
+pdf-articles-clean: pdf-articles-target
+.for _curpdf in ${ARTICLESDIR}
+ rm -f ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}article.pdf
+ rm -fr ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}
+.endfor
+.for _lang in ${LANGUAGES:S|,| |g}
+ rm -fr ${.CURDIR}/public/${_lang}/articles
+.if !exists(${.CURDIR}/public/${_lang}/books)
+ rm -fr ${.CURDIR}/public/${_lang}
+.endif
+.endfor
+ @if [ -d ${.CURDIR}/public/ ]; then \
+ if [ -z "`ls -A ${.CURDIR}/public/`" ]; then \
+ rm -fr ${.CURDIR}/public; \
+ fi; \
+ fi