diff --git a/en_US.ISO8859-1/books/handbook/Makefile b/en_US.ISO8859-1/books/handbook/Makefile index 2de04f5a28..b0d978ddac 100644 --- a/en_US.ISO8859-1/books/handbook/Makefile +++ b/en_US.ISO8859-1/books/handbook/Makefile @@ -1,260 +1,266 @@ # # $FreeBSD$ # # Build the FreeBSD Handbook. # # ------------------------------------------------------------------------ # # Handbook-specific variables # # WITH_PGPKEYS The print version of the handbook only prints PGP # fingerprints by default. If you would like for the # entire key to be displayed, then set this variable. # This option has no affect on the HTML formats. # # Handbook-specific targets # # pgpkeyring This target will read the contents of # pgpkeys/chapter.sgml and will extract all of # the pgpkeys to standard out. This output can then # be redirected into a file and distributed as a # public keyring of FreeBSD developers that can # easily be imported into PGP/GPG. # # ------------------------------------------------------------------------ .PATH: ${.CURDIR}/../../share/sgml/glossary MAINTAINER= doc@FreeBSD.org DOC?= book FORMATS?= html-split HAS_INDEX= true INSTALL_COMPRESSED?= gz INSTALL_ONLY_COMPRESSED?= IMAGES_EN = advanced-networking/isdn-bus.eps IMAGES_EN+= advanced-networking/isdn-twisted-pair.eps IMAGES_EN+= advanced-networking/natd.eps IMAGES_EN+= advanced-networking/net-routing.pic IMAGES_EN+= advanced-networking/static-routes.pic IMAGES_EN+= geom/striping.pic IMAGES_EN+= install/adduser1.scr IMAGES_EN+= install/adduser2.scr IMAGES_EN+= install/adduser3.scr IMAGES_EN+= install/boot-mgr.scr IMAGES_EN+= install/console-saver1.scr IMAGES_EN+= install/console-saver2.scr IMAGES_EN+= install/console-saver3.scr IMAGES_EN+= install/console-saver4.scr IMAGES_EN+= install/desktop.scr IMAGES_EN+= install/disklabel-auto.scr IMAGES_EN+= install/disklabel-ed1.scr IMAGES_EN+= install/disklabel-ed2.scr IMAGES_EN+= install/disklabel-fs.scr IMAGES_EN+= install/disklabel-root1.scr IMAGES_EN+= install/disklabel-root2.scr IMAGES_EN+= install/disklabel-root3.scr IMAGES_EN+= install/disk-layout.eps IMAGES_EN+= install/dist-set.scr IMAGES_EN+= install/dist-set2.scr IMAGES_EN+= install/docmenu1.scr IMAGES_EN+= install/ed0-conf.scr IMAGES_EN+= install/ed0-conf2.scr IMAGES_EN+= install/edit-inetd-conf.scr IMAGES_EN+= install/fdisk-drive1.scr IMAGES_EN+= install/fdisk-drive2.scr IMAGES_EN+= install/fdisk-edit1.scr IMAGES_EN+= install/fdisk-edit2.scr IMAGES_EN+= install/ftp-anon1.scr IMAGES_EN+= install/ftp-anon2.scr IMAGES_EN+= install/hdwrconf.scr IMAGES_EN+= install/keymap.scr IMAGES_EN+= install/main1.scr IMAGES_EN+= install/mainexit.scr IMAGES_EN+= install/main-std.scr IMAGES_EN+= install/main-options.scr IMAGES_EN+= install/main-doc.scr IMAGES_EN+= install/main-keymap.scr IMAGES_EN+= install/media.scr IMAGES_EN+= install/mouse1.scr IMAGES_EN+= install/mouse2.scr IMAGES_EN+= install/mouse3.scr IMAGES_EN+= install/mouse4.scr IMAGES_EN+= install/mouse5.scr IMAGES_EN+= install/mouse6.scr IMAGES_EN+= install/mta-main.scr IMAGES_EN+= install/net-config-menu1.scr IMAGES_EN+= install/net-config-menu2.scr IMAGES_EN+= install/nfs-server-edit.scr IMAGES_EN+= install/ntp-config.scr IMAGES_EN+= install/options.scr IMAGES_EN+= install/pkg-cat.scr IMAGES_EN+= install/pkg-confirm.scr IMAGES_EN+= install/pkg-install.scr IMAGES_EN+= install/pkg-sel.scr IMAGES_EN+= install/probstart.scr IMAGES_EN+= install/routed.scr IMAGES_EN+= install/security.scr IMAGES_EN+= install/sysinstall-exit.scr IMAGES_EN+= install/timezone1.scr IMAGES_EN+= install/timezone2.scr IMAGES_EN+= install/timezone3.scr IMAGES_EN+= install/userconfig.scr IMAGES_EN+= install/userconfig2.scr IMAGES_EN+= install/xf86setup.scr IMAGES_EN+= mail/mutt1.scr IMAGES_EN+= mail/mutt2.scr IMAGES_EN+= mail/mutt3.scr IMAGES_EN+= mail/pine1.scr IMAGES_EN+= mail/pine2.scr IMAGES_EN+= mail/pine3.scr IMAGES_EN+= mail/pine4.scr IMAGES_EN+= mail/pine5.scr IMAGES_EN+= install/example-dir1.eps IMAGES_EN+= install/example-dir2.eps IMAGES_EN+= install/example-dir3.eps IMAGES_EN+= install/example-dir4.eps IMAGES_EN+= install/example-dir5.eps IMAGES_EN+= security/ipsec-network.pic IMAGES_EN+= security/ipsec-crypt-pkt.pic IMAGES_EN+= security/ipsec-encap-pkt.pic IMAGES_EN+= security/ipsec-out-pkt.pic IMAGES_EN+= vinum/vinum-concat.pic IMAGES_EN+= vinum/vinum-mirrored-vol.pic IMAGES_EN+= vinum/vinum-raid10-vol.pic IMAGES_EN+= vinum/vinum-raid5-org.pic IMAGES_EN+= vinum/vinum-simple-vol.pic IMAGES_EN+= vinum/vinum-striped-vol.pic IMAGES_EN+= vinum/vinum-striped.pic # Images from the cross-document image library IMAGES_LIB= callouts/1.png IMAGES_LIB+= callouts/2.png IMAGES_LIB+= callouts/3.png IMAGES_LIB+= callouts/4.png IMAGES_LIB+= callouts/5.png IMAGES_LIB+= callouts/6.png IMAGES_LIB+= callouts/7.png IMAGES_LIB+= callouts/8.png IMAGES_LIB+= callouts/9.png IMAGES_LIB+= callouts/10.png # # SRCS lists the individual SGML files that make up the document. Changes # to any of these files will force a rebuild # # SGML content SRCS+= audit/chapter.sgml SRCS+= book.sgml SRCS+= colophon.sgml SRCS+= freebsd-glossary.sgml SRCS+= advanced-networking/chapter.sgml SRCS+= basics/chapter.sgml SRCS+= bibliography/chapter.sgml SRCS+= boot/chapter.sgml SRCS+= config/chapter.sgml SRCS+= cutting-edge/chapter.sgml SRCS+= desktop/chapter.sgml SRCS+= disks/chapter.sgml SRCS+= eresources/chapter.sgml SRCS+= firewalls/chapter.sgml SRCS+= geom/chapter.sgml SRCS+= install/chapter.sgml SRCS+= introduction/chapter.sgml SRCS+= kernelconfig/chapter.sgml SRCS+= l10n/chapter.sgml SRCS+= linuxemu/chapter.sgml SRCS+= mac/chapter.sgml SRCS+= mail/chapter.sgml SRCS+= mirrors/chapter.sgml SRCS+= multimedia/chapter.sgml SRCS+= network-servers/chapter.sgml SRCS+= pgpkeys/chapter.sgml SRCS+= ports/chapter.sgml SRCS+= ppp-and-slip/chapter.sgml SRCS+= preface/preface.sgml SRCS+= printing/chapter.sgml SRCS+= security/chapter.sgml SRCS+= serialcomms/chapter.sgml SRCS+= users/chapter.sgml SRCS+= vinum/chapter.sgml SRCS+= x11/chapter.sgml # Entities SRCS+= chapters.ent SYMLINKS= ${DESTDIR} index.html handbook.html # Turn on all the chapters. CHAPTERS?= ${SRCS:M*chapter.sgml} SGMLFLAGS+= ${CHAPTERS:S/\/chapter.sgml//:S/^/-i chap./} SGMLFLAGS+= -i chap.freebsd-glossary # XXX The Handbook build currently overflows some internal, hardcoded # limits in pdftex. Until we split the Handbook up, build the PDF # version using ps2pdf instead of pdftex. PS2PDF?= ${PREFIX}/bin/ps2pdf book.tex-pdf: ${TOUCH} book.tex-pdf book.pdf: book.ps ${PS2PDF} book.ps book.pdf pgpkeyring: pgpkeys/chapter.sgml @${JADE} -V nochunks ${OTHERFLAGS} ${JADEOPTS} -d ${DSLPGP} -t sgml ${MASTERDOC} # # Handbook-specific variables # .if defined(WITH_PGPKEYS) JADEFLAGS+= -V withpgpkeys .endif -.for p in ftp cvsup -SRCS+= mirrors.sgml.${p}.inc -CLEANFILES+= mirrors.sgml.${p}.inc -CLEANFILES+= mirrors.sgml.${p}.inc.tmp -.endfor - -SRCS+= eresources.sgml.www.inc -CLEANFILES+= eresources.sgml.www.inc -CLEANFILES+= eresources.sgml.www.inc.tmp - URL_RELPREFIX?= ../../../.. DOC_PREFIX?= ${.CURDIR}/../../.. +# +# rules generating lists of mirror site from XML database. +# +XMLDOCS= mirrors-ftp:::mirrors.sgml.ftp.inc.tmp \ + mirrors-cvsup:::mirrors.sgml.cvsup.inc.tmp \ + eresources:::eresources.sgml.www.inc.tmp +DEPENDSET.DEFAULT= transtable mirror +XSLT.DEFAULT= ${XSL_MIRRORS} +XML.DEFAULT= ${XML_MIRRORS} +NO_TIDY.DEFAULT= yes + +PARAMS.mirrors-ftp+= --param 'type' "'ftp'" \ + --param 'proto' "'ftp'" \ + --param 'target' "'handbook/mirrors/chapter.sgml'" +PARAMS.mirrors-cvsup+= --param 'type' "'cvsup'" \ + --param 'proto' "'cvsup'" \ + --param 'target' "'handbook/mirrors/chapter.sgml'" +PARAMS.eresources+= --param 'type' "'www'" \ + --param 'proto' "'http'" \ + --param 'target' "'handbook/eresources/chapter.sgml'" + +SRCS+= mirrors.sgml.ftp.inc \ + mirrors.sgml.cvsup.inc \ + eresources.sgml.www.inc +CLEANFILES+= mirrors.sgml.ftp.inc \ + mirrors.sgml.cvsup.inc \ + eresources.sgml.www.inc + .include "${DOC_PREFIX}/share/mk/doc.project.mk" .for p in ftp cvsup -mirrors.sgml.${p}.inc: ${XML_MIRRORS} ${XSL_MIRRORS} - ${XSLTPROC} ${XSLTPROCOPTS} \ - -o $@.tmp \ - --param 'type' "'$p'" \ - --param 'proto' "'$p'" \ - --param 'target' "'handbook/mirrors/chapter.sgml'" \ - ${XSL_MIRRORS} ${XML_MIRRORS} +mirrors.sgml.${p}.inc: mirrors.sgml.${p}.inc.tmp ${SED} -e 's,<\([^ >]*\)\([^>]*\)/>,<\1\2>,;s,,,'\ < $@.tmp > $@ || (${RM} -f $@ && false) ${RM} -f $@.tmp .endfor -eresources.sgml.www.inc: ${XML_MIRRORS} ${XSL_MIRRORS} - ${XSLTPROC} ${XSLTPROCOPTS} \ - -o $@.tmp \ - --param 'type' "'www'" \ - --param 'proto' "'http'" \ - --param 'target' "'handbook/eresources/chapter.sgml'" \ - ${XSL_MIRRORS} ${XML_MIRRORS} +eresources.sgml.www.inc: eresources.sgml.www.inc.tmp ${SED} -e 's,<\([^ >]*\)\([^>]*\)/>,<\1\2>,;s,,,'\ < $@.tmp > $@ || (${RM} -f $@ && false) ${RM} -f $@.tmp diff --git a/share/mk/doc.common.mk b/share/mk/doc.common.mk index 91e1ca9626..7be16c8523 100644 --- a/share/mk/doc.common.mk +++ b/share/mk/doc.common.mk @@ -1,197 +1,136 @@ # # $FreeBSD$ # # This include file provides targets and variables for # documents commonly used in doc/ and www/ tree. # AWK?= /usr/bin/awk GREP?= /usr/bin/grep REALPATH?= /bin/realpath .if defined(DOC_PREFIX) && !empty(DOC_PREFIX) WEB_PREFIX?= ${DOC_PREFIX}/../www .elif defined(WEB_PREFIX) && !empty(WEB_PREFIX) DOC_PREFIX?= ${WEB_PREFIX}/../doc .else .error "You must define either WEB_PREFIX or DOC_PREFIX!" .endif # ------------------------------------------------------------------------ # # Work out the language and encoding used for this document. # # Liberal default of maximum of 10 directories below to find it. # .if defined(DOC_PREFIX) && !empty(DOC_PREFIX) DOC_PREFIX_NAME!= ${REALPATH} ${DOC_PREFIX} DOC_PREFIX_NAME:= ${DOC_PREFIX_NAME:T} .else DOC_PREFIX_NAME?= doc .endif .if defined(WEB_PREFIX) && !empty(WEB_PREFIX) WWW_PREFIX_NAME!= ${REALPATH} ${WEB_PREFIX} WWW_PREFIX_NAME:= ${WWW_PREFIX_NAME:T} .else WWW_PREFIX_NAME?= www .endif .if (!defined(LANGCODE) || empty(LANGCODE)) && (!defined(WWW_LANGCODE) || empty(WWW_LANGCODE)) # Calculate _LANGCODE. _LANGCODE:= ${.CURDIR} .for _ in 1 2 3 4 5 6 7 8 9 10 .if !(${_LANGCODE:H:T} == ${DOC_PREFIX_NAME}) && !(${_LANGCODE:H:T} == ${WWW_PREFIX_NAME}) _LANGCODE:= ${_LANGCODE:H} .endif .endfor .if (${_LANGCODE:H:T} == ${DOC_PREFIX_NAME}) # We are in doc/. _LANGCODE:= ${_LANGCODE:T} _WWW_LANGCODE:= . .else # We are in www/. _WWW_LANGCODE:= ${_LANGCODE:T} _LANGCODE:= . .endif .else # when LANGCODE or WWW_LANGCODE is defined, use the value. .if defined(LANGCODE) && !empty(LANGCODE) _LANGCODE?= ${LANGCODE} .else _LANGCODE?= . .endif .if defined(WWW_LANGCODE) && !empty(WWW_LANGCODE) _WWW_LANGCODE?= ${WWW_LANGCODE} .else _WWW_LANGCODE?= . .endif .endif # fixup _LANGCODE .if (${_LANGCODE} == .) # We have a short name such as `en' in ${_WWW_LANGCODE} now. # Guess _LANGCODE using _WWW_LANGCODE. _LANGCODE:= ${_WWW_LANGCODE} .if (${_LANGCODE} != .) _LANGCODE!= ${ECHO} ${DOC_PREFIX}/${_WWW_LANGCODE}* .for _ in 1 2 3 4 5 6 7 8 9 10 .if !(${_LANGCODE:H:T} == ${DOC_PREFIX_NAME}) _LANGCODE:= ${_LANGCODE:H} .endif .endfor _LANGCODE:= ${_LANGCODE:T} .endif .endif LANGCODE?= ${_LANGCODE} # fixup _WWW_LANGCODE .if (${_WWW_LANGCODE} == .) # We have a long name such as `en_US.ISO8859-1' in ${LANGCODE} now. # Guess _WWW_LANGCODE using _LANGCODE. _WWW_LANGCODE!= ${ECHO} ${WEB_PREFIX}/* _WWW2_LANGCODE!= ${ECHO} ${_WWW_LANGCODE:T} |\ ${SED} -e 's,.*\(${LANGCODE:R:C,(..)_.*,\1,}[^. ]*\).*,\1,' .if ${_WWW_LANGCODE:T} == ${_WWW2_LANGCODE} _WWW_LANGCODE:= . .else _WWW_LANGCODE:= ${_WWW2_LANGCODE} .endif .undef _WWW2_LANGCODE .endif WWW_LANGCODE?= ${_WWW_LANGCODE} # normalize DOC_PREFIX and WEB_PREFIX DOC_PREFIX!= ${REALPATH} ${DOC_PREFIX} WEB_PREFIX!= ${REALPATH} ${WEB_PREFIX} .if !defined(URL_RELPREFIX) URLS_ABSOLUTE= YES .elif !defined(URLS_ABSOLUTE) _URL_RELPREFIX_LEVEL!= set -- ${URL_RELPREFIX:S,/$,,:S,/, ,g}; echo "$$\#" URL_RELPREFIX_ENT= freebsd.urls.relprefix.${_URL_RELPREFIX_LEVEL} .endif -# ------------------------------------------------------------------------ -# -# mirrors.xml dependency. -# - -XML_MIRRORS_MASTER= ${DOC_PREFIX}/share/sgml/mirrors.xml -XML_MIRRORS= ${.OBJDIR}/${DOC_PREFIX:S,^${.CURDIR}/,,}/${LANGCODE}/share/sgml/mirrors.xml - -XSL_MIRRORS_MASTER= ${DOC_PREFIX}/share/sgml/mirrors-master.xsl - -.if exists(${DOC_PREFIX}/${LANGCODE}/share/sgml/mirrors-local.xsl) -XSL_MIRRORS= ${DOC_PREFIX}/${LANGCODE}/share/sgml/mirrors-local.xsl -.else -XSL_MIRRORS= ${DOC_PREFIX}/share/sgml/mirrors-local.xsl -.endif - -XSL_TRANSTABLE_MASTER= ${DOC_PREFIX}/share/sgml/transtable-master.xsl -XSL_TRANSTABLE_COMMON= ${DOC_PREFIX}/share/sgml/transtable-common.xsl - -.if exists(${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable-local.xsl) -XSL_TRANSTABLE= ${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable-local.xsl -.else -XSL_TRANSTABLE= ${DOC_PREFIX}/share/sgml/transtable-local.xsl -.endif - -.if exists(${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable.xml) -XML_TRANSTABLE= ${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable.xml -.else -XML_TRANSTABLE= ${DOC_PREFIX}/share/sgml/transtable.xml -.endif - -${XSL_MIRRORS}: ${XSL_MIRRORS_MASTER} ${XSL_TRANSTABLE_COMMON} - -${XML_MIRRORS}: ${XML_MIRRORS_MASTER} ${XSL_TRANSTABLE} ${XSL_TRANSTABLE_MASTER} ${XSL_TRANSTABLE_COMMON} - ${MKDIR} -p ${@:H} - ${XSLTPROC} ${XSLTPROCOPTS} \ - --param 'transtable.xml' "'${XML_TRANSTABLE}'" \ - --param 'transtable-target-element' "'country'" \ - --param 'transtable-word-group' "'country'" \ - --param 'transtable-mode' "'sortkey'" \ - ${XSL_TRANSTABLE} ${XML_MIRRORS_MASTER} \ - | env -i LANG="${LANGCODE}" ${SORT} -f > $@.sort.tmp - env -i ${GREP} "^ $@.sort - ${ECHO} "" >> $@.sort - env -i ${AWK} '/@sortkey@/ {sub(/@sortkey@/, ++line); print;}' < $@.sort.tmp >> $@.sort - ${ECHO} '' >> $@.sort - ${XSLTPROC} ${XSLTPROCOPTS} -o $@ \ - --param 'transtable.xml' "'${XML_TRANSTABLE}'" \ - --param 'transtable-target-element' "'country'" \ - --param 'transtable-word-group' "'country'" \ - --param 'transtable-sortkey.xml' "'$@.sort'" \ - ${XSL_TRANSTABLE} ${XML_MIRRORS_MASTER} - ${RM} -f $@.sort $@.sort.tmp - -CLEANFILES+= ${XML_MIRRORS} -CLEANFILES+= ${XML_MIRRORS}.sort -CLEANFILES+= ${XML_MIRRORS}.sort.tmp - -XML_USERGROUPS= ${WEB_PREFIX}/share/sgml/usergroups.xml -XSL_USERGROUPS= ${WEB_PREFIX}/share/sgml/templates.usergroups.xsl - # # when URLS_ABSOLUTE is specified, make # %freebsd.urls.absolute; "INCLUDE". # .if defined(URLS_ABSOLUTE) HTMLFLAGS+= -ifreebsd.urls.absolute SGMLNORMFLAGS+= -ifreebsd.urls.absolute NSGMLSFLAGS+= -ifreebsd.urls.absolute .elif defined(URL_RELPREFIX_ENT) && !empty(URL_RELPREFIX_ENT) HTMLFLAGS+= -i${URL_RELPREFIX_ENT} SGMLNORMFLAGS+= -i${URL_RELPREFIX_ENT} NSGMLSFLAGS+= -i${URL_RELPREFIX_ENT} .endif # for ascii and printable format, always use URLS_ABSOLUTE. PRINTFLAGS+= -ifreebsd.urls.absolute HTMLTXTFLAGS+= -ifreebsd.urls.absolute OTHERFLAGS+= -ifreebsd.urls.absolute # for packages, always use URLS_ABSOLUTE. PKGMAKEFLAGS+= URLS_ABSOLUTE=yes diff --git a/share/mk/doc.project.mk b/share/mk/doc.project.mk index 97ba7c5c24..b7e6fa11e2 100644 --- a/share/mk/doc.project.mk +++ b/share/mk/doc.project.mk @@ -1,147 +1,150 @@ # # $FreeBSD$ # # This include file is the FreeBSD Documentation Project # co-ordination make file. # # This file includes the other makefiles, which contain enough # knowledge to perform their duties without the system make files. # # ------------------------------------------------------------------------ # # Document-specific variables: # # DOC This _must_ be set if there is a document to # build. It should be without prefix. # # DOCFORMAT Format of the document. Defaults to docbook. # docbook is also the only option currently. # # MAINTAINER This denotes who is responsible for maintaining # this section of the project. If unset, set to # doc@FreeBSD.org # # ------------------------------------------------------------------------ # # User-modifiable variables: # # PREFIX Standard path to document-building applications # installed to serve the documentation build # process, usually by installing the docproj port # or package. Default is ${LOCALBASE} or /usr/local # # NOINCLUDEMK Whether to include the standard BSD make files, # or just to emulate them poorly. Set this if you # aren't on FreeBSD, or a compatible sibling. By # default is not set. # # ------------------------------------------------------------------------ # # Make files included: # # doc.install.mk Installation specific information, including # ownership and permissions. # # doc.subdir.mk Subdirectory related configuration, including # handling "obj" builds. # # doc.common.mk targets and variables commonly used in doc/ and # www/ tree. # # DOCFORMAT-specific make files, like: # # doc.docbook.mk Building and installing docbook documentation. # Currently the only method. # # Document-specific defaults DOCFORMAT?= docbook MAINTAINER?= doc@FreeBSD.org # Master list of known target formats. The doc..mk files implement # the code to convert from their source format to one or more of these target # formats ALL_FORMATS= html html.tar html-split html-split.tar txt rtf ps pdf tex dvi tar pdb # User-modifiable LOCALBASE?= /usr/local PREFIX?= ${LOCALBASE} PRI_LANG?= en_US.ISO8859-1 CP?= /bin/cp CAT?= /bin/cat ECHO_CMD?= echo LN?= /bin/ln MKDIR?= /bin/mkdir RM?= /bin/rm MV?= /bin/mv HTML2TXT?= ${PREFIX}/bin/links HTML2TXTOPTS?= -dump -width 72 ${HTML2TXTFLAGS} ISPELL?= ispell ISPELLOPTS?= -l -p /usr/share/dict/freebsd ${ISPELLFLAGS} .if exists(/usr/bin/perl) PERL?= /usr/bin/perl .elif exists(/usr/local/bin/perl) PERL?= /usr/local/bin/perl .else PERL?= perl .endif REALPATH?= /bin/realpath SETENV?= /usr/bin/env XSLTPROC?= ${PREFIX}/bin/xsltproc TIDY?= ${PREFIX}/bin/tidy # # In teTeX 3.0 and later, pdfetex(1) is used as the default TeX # engine for JadeTeX and tex(1) cannot be used as ${TEX_CMD} anymore # due to incompatibility of the format file. Since the teTeX 3.0 # distribution has "${PREFIX}/share/texmf-dist/LICENSE.texmf," # it is checked here to determine which TeX engine should be used. .if exists(${PREFIX}/share/texmf-dist/LICENSE.texmf) TEX_CMD?= ${PREFIX}/bin/etex PDFTEX_CMD?= ${PREFIX}/bin/pdfetex .else TEX_CMD?= ${PREFIX}/bin/tex PDFTEX_CMD?= ${PREFIX}/bin/pdftex .endif LATEX_CMD?= ${PREFIX}/bin/latex JADETEX_CMD?= ${TEX_CMD} "&jadetex" PDFJADETEX_CMD?=${PDFTEX_CMD} "&pdfjadetex" FOP_CMD?= ${PREFIX}/share/fop/fop.sh XEP_CMD?= sh ${HOME}/XEP/xep.sh JAVA_CMD?= ${PREFIX}/bin/javavm SAXON_CMD?= ${JAVA_CMD} -jar ${PREFIX}/share/java/classes/saxon.jar # Image processing (contains code used by the doc..mk files, so must # be listed first). .include "doc.images.mk" # targets and variables commonly used in doc/ and www/ tree. .include "doc.common.mk" DOC_LOCAL_MK= ${DOC_PREFIX}/${LANGCODE}/share/mk/doc.local.mk .if exists(${DOC_LOCAL_MK}) .include "${DOC_LOCAL_MK}" .endif # Ownership information. .include "doc.install.mk" +# XML specific configuration +.include "doc.xml.mk" + # Format-specific configuration .if defined(DOC) .if ${DOCFORMAT} == "docbook" .include "doc.docbook.mk" .endif .if ${DOCFORMAT} == "slides" .include "doc.slides.mk" .endif .if ${DOCFORMAT} == "html" .include "doc.html.mk" .endif .endif # Subdirectory glue. .include "doc.subdir.mk" diff --git a/share/mk/doc.xml.mk b/share/mk/doc.xml.mk new file mode 100644 index 0000000000..ce415ff663 --- /dev/null +++ b/share/mk/doc.xml.mk @@ -0,0 +1,278 @@ +# doc.xml.mk +# $FreeBSD$ + +XML_CATALOG_FILES= file://${DOC_PREFIX}/${LANGCODE}/share/sgml/catalog.xml \ + file://${DOC_PREFIX}/share/sgml/catalog.xml \ + file://${DOC_PREFIX}/share/sgml/catalog-common.xml \ + file://${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/catalog.xml \ + file://${WEB_PREFIX}/share/sgml/catalog-common.xml \ + file://${LOCALBASE}/share/xml/catalog + +XML_INCLUDES= ${WEB_PREFIX}/${WWW_LANGCODE}/includes.xsl \ + ${WEB_PREFIX}/share/sgml/includes.header.xsl \ + ${WEB_PREFIX}/share/sgml/includes.misc.xsl \ + ${WEB_PREFIX}/share/sgml/includes.release.xsl \ + ${WEB_PREFIX}/share/sgml/includes.xsl + +# Variables used in DEPENDSET + +_DEPENDSET.all= transtable mirrors usergroups \ + news press navigation advisories notices + +# DEPENDSET: transtable ...................................................... +_DEPENDSET.transtable= ${XML_TRANSTABLE} ${XSL_TRANSTABLE} \ + ${XSL_TRANSTABLE_MASTER} ${XSL_TRANSTABLE_COMMON} +_PARAMS.transtable= --param transtable.xml "'${XML_TRANSTABLE}'" +XSL_TRANSTABLE_MASTER= ${DOC_PREFIX}/share/sgml/transtable-master.xsl +XSL_TRANSTABLE_COMMON= ${DOC_PREFIX}/share/sgml/transtable-common.xsl + +.if exists(${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable-local.xsl) +XSL_TRANSTABLE= ${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable-local.xsl +.else +XSL_TRANSTABLE= ${DOC_PREFIX}/share/sgml/transtable-local.xsl +.endif + +.if exists(${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable.xml) +XML_TRANSTABLE= ${DOC_PREFIX}/${LANGCODE}/share/sgml/transtable.xml +.else +XML_TRANSTABLE= ${DOC_PREFIX}/share/sgml/transtable.xml +.endif + +# DEPENDSET: mirrors ..................................................... +_DEPENDSET.mirrors= ${XSL_MIRRORS} ${XML_MIRRORS} +_PARAMS.mirrors= --param mirrors.xml "'${XML_MIRRORS}'" +XML_MIRRORS_MASTER= ${DOC_PREFIX}/share/sgml/mirrors.xml +.if ${.OBJDIR} != ${.CURDIR} +XML_MIRRORS= ${.OBJDIR}${DOC_PREFIX}/${LANGCODE}/share/sgml/mirrors.xml +.else +XML_MIRRORS= ${DOC_PREFIX}/${LANGCODE}/share/sgml/mirrors.xml +.endif +XSL_MIRRORS_MASTER= ${DOC_PREFIX}/share/sgml/mirrors-master.xsl +.if exists(${DOC_PREFIX}/${LANGCODE}/share/sgml/mirrors-local.xsl) +XSL_MIRRORS= ${DOC_PREFIX}/${LANGCODE}/share/sgml/mirrors-local.xsl +.else +XSL_MIRRORS= ${DOC_PREFIX}/share/sgml/mirrors-local.xsl +.endif +${XSL_MIRRORS}: ${XSL_MIRRORS_MASTER} \ + ${XSL_TRANSTABLE_COMMON} + +${XML_MIRRORS}: ${XML_MIRRORS_MASTER} \ + ${XSL_TRANSTABLE} ${XSL_TRANSTABLE_MASTER} ${XSL_TRANSTABLE_COMMON} + ${MKDIR} -p ${@:H} + ${XSLTPROC} ${XSLTPROCOPTS} \ + --param 'transtable.xml' "'${XML_TRANSTABLE}'" \ + --param 'transtable-target-element' "'country'" \ + --param 'transtable-word-group' "'country'" \ + --param 'transtable-mode' "'sortkey'" \ + ${XSL_TRANSTABLE} ${XML_MIRRORS_MASTER} \ + | env -i LANG="${LANGCODE}" ${SORT} -f > $@.sort.tmp + env -i ${GREP} "^ $@.sort + ${ECHO} "" >> $@.sort + env -i ${AWK} '/@sortkey@/ {sub(/@sortkey@/, ++line); print;}' < $@.sort.tmp >> $@.sort + ${ECHO} '' >> $@.sort + ${XSLTPROC} ${XSLTPROCOPTS} -o $@ \ + --param 'transtable.xml' "'${XML_TRANSTABLE}'" \ + --param 'transtable-target-element' "'country'" \ + --param 'transtable-word-group' "'country'" \ + --param 'transtable-sortkey.xml' "'$@.sort'" \ + ${XSL_TRANSTABLE} ${XML_MIRRORS_MASTER} + ${RM} -f $@.sort $@.sort.tmp +CLEANFILES+= ${XML_MIRRORS} +CLEANFILES+= ${XML_MIRRORS}.sort +CLEANFILES+= ${XML_MIRRORS}.sort.tmp + +# DEPENDSET: usergroups ...................................................... +_DEPENDSET.usergroups= ${XML_USERGROUPS} ${XSL_USERGROUPS} +XML_USERGROUPS= ${WEB_PREFIX}/share/sgml/usergroups.xml +XSL_USERGROUPS= ${WEB_PREFIX}/share/sgml/templates.usergroups.xsl + +# DEPENDSET: news ............................................................ +_DEPENDSET.news= ${XML_NEWS_NEWS_MASTER} ${XML_NEWS_NEWS} \ + ${XML_NEWS_INCLUDES_MASTER} ${XML_NEWS_INCLUDES} +_PARAMS.news= --param news.project.xml-master "'${XML_NEWS_NEWS_MASTER}'" \ + --param news.project.xml "'${XML_NEWS_NEWS}'" +XML_NEWS_INCLUDES_MASTER=${WEB_PREFIX}/en/news/includes.xsl +XML_NEWS_INCLUDES= ${WEB_PREFIX}/${WWW_LANGCODE}/news/includes.xsl +XML_NEWS_NEWS_MASTER= ${WEB_PREFIX}/en/news/news.xml +XML_NEWS_NEWS= ${WEB_PREFIX}/${WWW_LANGCODE}/news/news.xml + +# DEPENDSET: press .......................................................... +_DEPENDSET.press= ${XML_NEWS_PRESS_MASTER} ${XML_NEWS_PRESS} \ + ${XML_NEWS_INCLUDES_MASTER} ${XML_NEWS_INCLUDES} +_PARAMS.press= --param news.press.xml-master "'${XML_NEWS_PRESS_MASTER}'" \ + --param news.press.xml "'${XML_NEWS_PRESS}'" +XML_NEWS_INCLUDES_MASTER=${WEB_PREFIX}/en/news/includes.xsl +XML_NEWS_INCLUDES= ${WEB_PREFIX}/${WWW_LANGCODE}/news/includes.xsl +XML_NEWS_PRESS_MASTER= ${WEB_PREFIX}/en/news/press.xml +XML_NEWS_PRESS= ${WEB_PREFIX}/${WWW_LANGCODE}/news/press.xml + +# DEPENDSET: navigation ..................................................... +_DEPENDSET.navigation= ${XML_NAVIGATION} +_PARAMS.navigation= --param navigation.xml "'${XML_NAVIGATION}'" +XML_NAVIGATION= ${WEB_PREFIX}/${WWW_LANGCODE}/navigation.xml + +# DEPENDSET: advisories ..................................................... +_DEPENDSET.advisories= ${XML_ADVISORIES} +_PARAMS.advisories= --param advisories.xml "'${XML_ADVISORIES}'" +XML_ADVISORIES= ${WEB_PREFIX}/share/sgml/advisories.xml + +# DEPENDSET: notices ........................................................ +_DEPENDSET.notices= ${XML_NOTICES} +_PARAMS.notices= --param notices.xml "'${XML_NOTICES}'" +XML_NOTICES= ${WEB_PREFIX}/share/sgml/notices.xml + +# --- +# .xml -> .html rendering rule +# +# The following variables are available: +# +# XMLDOCS: (ex. XMLDOCS= doc1 doc2 doc3) +# Target document identifier, which is usually the same as the +# base part of the filenames. {XSLT,XML,TARGET}. described below +# can be specified in a short form like the following: +# "docid:stylesheet:xml:target". +# +# TARGET.: (ex. TARGET.doc1= doc1.html) +# The target filename. This is optional and .html is defined +# by default. +# +# XSLT.: (ex. XSLT.doc1= doc1.xsl) +# Filename of the XSLT stylesheet. This is optional and .xsl is +# defined by default. The following keywords are interpreted specially: +# +# `xsl' - .xsl +# +# XSLT.DEFAULT: +# The default filename or keyword of XSLT stylesheet. +# When XSLT. and one in the quadruplet are not specified, +# this value is used. +# +# XML.: (ex. XML.doc1= doc1.xml data.xml) +# Filename of the XML document. This is optional and /dev/null is +# defined by default. XML.DEFAULT is XML document for all s. +# +# SRCS.: (ex. SRCS.doc1= includes.xsl) +# Dependencies. SRCS.DEFAULT is dependencies for all s. +# +# DEPENDSET.: (ex. DEPENDSET.doc1= mirror) +# Depencencies predefined as keywords listed in ${_DEPENDSET.all}. +# DEPENDSET.DEFAULT is DEPENDSET for all s. +# +# PARAMS.: (ex. PARAMS.doc1= --params "foo" "'textproc/foo'") +# Parameters passed to xsltproc(1). +# +# XSLTPROCOPTS.: (ex. XSLTPROCOPTS.doc1= --nonet) +# Parameters passed to xsltproc(1). +# +# NO_DATA. +# The ${TARGET.} file will not be listed in $DATA if defined. +# NO_DATA.DEFAULT is the setting for all s. +# +# NO_TIDY. +# The ${TARGET.} file will not be processed by tidy if defined. +# NO_TIDY.DEFAULT is the setting for all s. +# +XSLTPROC_ENV+= SGML_CATALOG_FILES= +XSLTPROC_ENV+= XML_CATALOG_FILES="${XML_CATALOG_FILES}" + +XSLTPROCOPTS= ${XSLTPROC_ARGS} +XSLTPROCOPTS+= --xinclude +XSLTPROCOPTS+= --stringparam LOCALBASE ${LOCALBASE} +XSLTPROCOPTS+= --stringparam WEB_PREFIX ${WEB_PREFIX} +.if defined(XML_CATALOG_FILES) && !empty(XML_CATALOG_FILES) +XSLTPROCOPTS+= --nonet --catalogs +.endif +XSLTPROC= env ${XSLTPROC_ENV} ${LOCALBASE}/bin/xsltproc + +.for D in ${XMLDOCS} +# parse "docid:xslt:xml:target". +# XXX: ${__ID} is used because ${A}=B does not work except +# for the iterate variable in the .for statement. +__ID=${D:C,:.*$,,} + +.for _ID in ${__ID} +_tmpD= ${D:M*\:*} +.if !empty(_tmpD) +XSLT.${_ID}= ${D:C,^[^:]*,,:M*\:*:C,^:,,:C,:.*$,,} +XML.${_ID}= ${D:C,^[^:]*,,:M*\:*:C,^:,,:C,^[^:]*,,:M*\:*:C,^:,,:C,:.*$,,} +TARGET.${_ID}= ${D:C,^[^:]*,,:M*\:*:C,^:,,:C,^[^:]*,,:M*\:*:C,^:,,:C,^[^:]*,,:M*\:*:C,^:,,:C,:.*$,,} +.endif + +# Use default value if parameter not specified. +.if !defined(XSLT.${_ID}) || empty(XSLT.${_ID}) +.if defined(XSLT.DEFAULT) +XSLT.${_ID}= ${XSLT.DEFAULT} +.else +XSLT.${_ID}= ${_ID}.xsl +.endif +.endif +.if !defined(XML.${_ID}) || empty(XML.${_ID}) +.if defined(XML.DEFAULT) +XML.${_ID}= ${XML.DEFAULT} +.else +XML.${_ID}= ${_ID}.xml +.endif +.endif +.if !defined(TARGET.${_ID}) || empty(TARGET.${_ID}) +TARGET.${_ID}= ${_ID}.html +.endif +.if !defined(DEPENDSET.${_ID}) || empty(DEPENDSET.${_ID}) +.if defined(DEPENDSET.DEFAULT) +DEPENDSET.${_ID}= ${DEPENDSET.DEFAULT} +.else +DEPENDSET.${_ID}= +.endif +.endif +.if !defined(NO_TIDY.${_ID}) || empty(NO_TIDY.${_ID}) +.if defined(NO_TIDY.DEFAULT) +NO_TIDY.${_ID}= ${NO_TIDY.DEFAULT} +.else +NO_TIDY.${_ID}= +.endif +.endif +.if !defined(NO_DATA.${_ID}) || empty(NO_DATA.${_ID}) +.if defined(NO_DATA.DEFAULT) +NO_DATA.${_ID}= ${NO_DATA.DEFAULT} +.else +NO_DATA.${_ID}= +.endif +.endif + +XSLTPROCOPTS.${_ID}?= ${XSLTPROCOPTS} +GENDOCS+= ${TARGET.${_ID}} +SRCS+= ${TARGET.${_ID}} +.if !defined(NO_DATA.${_ID}) || empty(NO_DATA.${_ID}) +DATA+= ${TARGET.${_ID}} +.endif +CLEANFILES+= ${TARGET.${_ID}} + +.if ${XSLT.${_ID}} == xsl +XSLT.${_ID}= ${_ID}.xsl +DEPENDS.${_ID}+= ${XSLT.${_ID}} +.elif ${XSLT.${_ID}:Mhttp\://*} != "" +DEPENDS.${_ID}+= ${XSLT.${_ID}} +.else +DEPENDS.${_ID}+= ${XSLT.${_ID}} +.endif + +.for S in ${_DEPENDSET.all} +. if ${DEPENDSET.${_ID}:M${S}} != "" +DEPENDS.${_ID}+=${_DEPENDSET.${S}} +PARAMS.${_ID}+= ${_PARAMS.${S}} +. endif +.endfor + +.for S in ${SRCS.DEFAULT} ${SRCS.${_ID}} +DEPENDS.${_ID}+= ${S} +.endfor +${TARGET.${_ID}}: ${XML_INCLUDES} ${XML.${_ID}} ${DEPENDS.${_ID}} + ${XSLTPROC} ${XSLTPROCOPTS.${_ID}} \ + -o ${.TARGET} ${PARAMS.${_ID}} \ + ${XSLT.${_ID}} ${XML.${_ID}} +. if !defined(NO_TIDY) || empty(NO_TIDY) +. if !defined(NO_TIDY.${_ID}) || empty(NO_TIDY.${_ID}) + -${TIDY} ${TIDYOPTS} ${.TARGET} +. endif +. endif +.endfor +.endfor