diff --git a/documentation/Makefile b/documentation/Makefile --- a/documentation/Makefile +++ b/documentation/Makefile @@ -20,13 +20,20 @@ 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 @@ 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