From 1e51cb0848c0ec12f143cf9250d61f2cb6eb8b68 Mon Sep 17 00:00:00 2001 From: Tommy Reynolds Date: Sat, 17 Sep 2005 14:41:42 +0000 Subject: Added multi-language support. --- Makefile.common | 121 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 85 insertions(+), 36 deletions(-) diff --git a/Makefile.common b/Makefile.common index c610c01..7cece96 100644 --- a/Makefile.common +++ b/Makefile.common @@ -21,51 +21,100 @@ # providing additional rules, also marked with double-colons, in the # document Makefile. ######################################################################### +# Supply default values for the boilerplate files _unless_ the user has +# provided their own values. +ifeq (${XSLPDF},) +XSLPDF = ../docs-common/xsl/main-pdf.xsl +endif +ifeq (${XSLHTML},) +XSLHTML = ../docs-common/xsl/main-html.xsl +endif +ifeq (${XSHTMLNOCHUNKS},) +XSLHTMLNOCHUNKS = ../docs-common/xsl/main-html-nochunks.xsl +endif +######################################################################### # PUT NO TARGETS BEFORE THIS ONE, not even in your base Makefile # In a properly-constructed Makefile, this will be the default target -.PHONY: all tarball pdf html html-nochunks clean distclean - -all:: ${DOCNAME}/index.html - -# The "tarball" or "${DOCNAME}.tar.gz" target will bind the HTML formatted -# document into a compressed tar archive. +TARGETS=all tarball pdf html html-nochunks clean distclean +.PHONY: ${TARGETS} -tarball ${DOCNAME}.tar.gz:: ${DOCNAME}/index.html - tar -zc --exclude '*.eps' -f ${DOCNAME}.tar.gz ${DOCNAME} +all:: html html-nochunks tarball # pdf -# The "pdf" or "${DOCNAME}.pdf" target produces an Adobe Portable Document -# Format (PDF) file as output. +${TARGETS}:: -pdf ${DOCNAME}.pdf:: ${XMLFILE} ${XMLEXTRAFILES} - xmlto pdf -x $(XSLPDF) $(XMLFILE) - -# The "html" or "${DOCNAME}. -html ${DOCNAME}/index.html:: ${XMLFILE} ${XMLEXTRAFILES} - xmlto html -x $(XSLHTML) -o $(DOCNAME) $(XMLFILE) - mkdir -p $(DOCNAME)/stylesheet-images - cp ../docs-common/stylesheet-images/*.png $(DOCNAME)/stylesheet-images - cp ../docs-common/css/fedora.css $(DOCNAME) +######################################################################### +# For each LANG in LANGUAGES, generate a target and rule similar to: +# mydoc-en/index.html:: mydoc-en.xml ${XMLEXTRAFILES}-en +# LANG=en.UTF-8 xmlto html -x $(XSLHTML) -o mydoc-en mydoc-en.xml +# mkdir -p mydoc-en/stylesheet-images +# cp ../docs-common/stylesheet-images/*.png mydoc-en/stylesheet-images/ +# cp ../docs-common/css/fedora.css mydoc-en/ +# +define HTML_template +${DOCBASE}-$(1)/index.html:: ${DOCBASE}-$(1).xml $$(XMLEXTRAFILES-$(1)) + LANG=$(1).UTF-8 xmlto html -x $(XSLHTML) -o $(DOCBASE)-$(1) $(DOCBASE)-$(1).xml + mkdir -p $(DOCBASE)-$(1)/stylesheet-images/ + cp ../docs-common/stylesheet-images/*.png $(DOCBASE)-$(1)/stylesheet-images + cp ../docs-common/css/fedora.css $$(DOCBASE)-$(1)/ +endef +# +html:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG)/index.html) -html-nochunks $(DOCNAME).html:: ${XMLFILE} ${XMLEXTRAFILES} - xmlto html-nochunks -x $(XSLHTMLNOCHUNKS) $(XMLFILE) - mkdir -p stylesheet-images - cp ../docs-common/stylesheet-images/*.png stylesheet-images +$(foreach LANG,${LANGUAGES},$(eval $(call HTML_template,${LANG}))) +# +######################################################################### +# For each language in ${LANGUAGES}, generate a single HTML file +define HTMLNOCHUNK_template +${DOCBASE}-$(1).html:: ${DOCBASE}-$(1).xml $$(XMLEXTRAFILES-$(1)) + xmlto html-nochunks -x $(XSLHTMLNOCHUNKS) $(DOCBASE)-$(1).xml + mkdir -p stylesheet-images/ + cp ../docs-common/stylesheet-images/*.png stylesheet-images/ cp ../docs-common/css/fedora.css . +endef +# +html-nochunks:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG).html) -# The "view" target ensures that the HTML version of the document is built -# then displays it using the "htmlview" tool to start up the browser. It -# assumes that the current working directory is immediately above the HTML -# document directory. (We could change this if we wanted to futz around -# with making up an absolute pathname, but why bother.) +$(foreach LANG,${LANGUAGES},$(eval $(call HTMLNOCHUNK_template,${LANG}))) +# +######################################################################### +# For each language in ${LANGUAGES}, build a tarball of the HTML files. +# +define TAR_template +${DOCBASE}-$(1).tar.gz:: ${DOCBASE}-$(1)/index.html + tar -zc --exclude '*.eps' -f ${DOCBASE}-$(1).tar.gz ${DOCBASE}-$(1) +endef +# +tarball:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG).tar.gz) -view:: ${DOCNAME}/index.html - /usr/bin/htmlview file://localhost/${PWD}/${DOCNAME}/index.html +$(foreach LANG,${LANGUAGES},$(eval $(call TAR_template,${LANG}))) +# +######################################################################### +# For each language in ${LANGUAGES}, generate an Adobe Portable Document +# Format (PDF) file. +define PDF_template +${DOCBASE}-$(1).pdf:: ${DOCBASE}-$(1).xml $$(XMLEXTRAFILES-$(1)) + xmlto pdf -x $(XSLPDF) $(DOCBASE)-$(1).xml +endef +# +pdf:: $(foreach LANG,${LANGUAGES},$(DOCBASE)-$(LANG).pdf) -# The "clean" or "distclean" target will remove all generated and temporary -# files. +$(foreach LANG,${LANGUAGES},$(eval $(call PDF_template,${LANG}))) +# +######################################################################### +# For each language in ${LANGUAGES}, clean up! +define CLEAN_template +${DOCBASE}-$(1)-clean:: + ${RM} -r ${DOCBASE}-$(1) + ${RM} -r ${DOCBASE}-$(1).html stylesheet-images fedora.css + ${RM} -r ${DOCBASE}-$(1).pdf + ${RM} -r ${DOCBASE}-$(1).tar.gz +endef +# +distclean clean:: $(foreach LANG,${LANGUAGES},${DOCBASE}-${LANG}-clean) -distclean clean: - ${RM} -r ${DOCNAME}.pdf $(DOCNAME) \ - ${DOCNAME}.tar.gz \ - ${DOCNAME}.html stylesheet-images fedora.css +$(foreach LANG,${LANGUAGES},$(eval $(call CLEAN_template,${LANG}))) +# +######################################################################### +# End of Makefile.common +######################################################################### -- cgit