diff --git a/share/mk/doc.project.mk b/share/mk/doc.project.mk index 01ec603617..fac6b42cff 100644 --- a/share/mk/doc.project.mk +++ b/share/mk/doc.project.mk @@ -1,153 +1,154 @@ # # $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 +XMLLINT?= ${PREFIX}/bin/xmllint # # 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" JADETEX_PREPROCESS?= /bin/cat PDFJADETEX_CMD?=${PDFTEX_CMD} "&pdfjadetex" PDFJADETEX_PREPROCESS?= /bin/cat PS2PDF?= ${PREFIX}/bin/ps2pdf 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 index b222ea1ecc..5cc918a463 100644 --- a/share/mk/doc.xml.mk +++ b/share/mk/doc.xml.mk @@ -1,328 +1,361 @@ # 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.xml \ file://${WEB_PREFIX}/share/sgml/catalog-common.xml \ file://${LOCALBASE}/share/xml/catalog # Variables used in DEPENDSET -_DEPENDSET.all= wwwstd transtable mirrors usergroups \ +_DEPENDSET.all= wwwstd transtable mirrors usergroups commercial \ news press events navigation advisories notices # DEPENDSET: wwwstd ......................................................... _DEPENDSET.wwwstd= ${XML_INCLUDES} -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 +_XML_INCLIST= libcommon.l10n.xsl \ + libcommon.xsl \ + navibar.l10n.ent \ + navibar.ent +.for F in ${_INCLIST} +.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/${F}) +XML_INCLUDES+= ${F} +.endif +.if exists(${WEB_PREFIX}/share/sgml/${F}) +XML_INCLUDES+= ${F} +.endif +.endfor # 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 XML_MIRRORS= ${DOC_PREFIX}/${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_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 .if ${LANGCODE} != . CLEANFILES+= ${XML_MIRRORS} CLEANFILES+= ${XML_MIRRORS}.sort CLEANFILES+= ${XML_MIRRORS}.sort.tmp .endif # DEPENDSET: usergroups ...................................................... _DEPENDSET.usergroups= ${XML_USERGROUPS} ${XML_USERGROUPS_LOCAL} \ ${XSL_USERGROUPS_MASTER} ${XSL_USERGROUPS} \ ${XML_INCLUDES} _PARAMS.usergroups= --param usergroups.xml "'${XML_USERGROUPS}'" \ --param usergroups-local.xml "'${XML_USERGROUPS_LOCAL}'" XML_USERGROUPS= ${WEB_PREFIX}/share/sgml/usergroups.xml .if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/usergroups.xml) XML_USERGROUPS_LOCAL= ${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/usergroups.xml .else XML_USERGROUPS_LOCAL= ${WEB_PREFIX}/share/sgml/usergroups.xml .endif XSL_USERGROUPS_MASTER= ${WEB_PREFIX}/share/sgml/templates.usergroups.xsl .if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/templates.usergroups.xsl) XSL_USERGROUPS= ${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/templates.usergroups.xsl .else XSL_USERGROUPS= ${WEB_PREFIX}/share/sgml/templates.usergroups.xsl .endif # DEPENDSET: news ............................................................ _DEPENDSET.news= ${XML_NEWS_NEWS_MASTER} ${XML_NEWS_NEWS} \ - ${XML_NEWS_INCLUDES_MASTER} ${XML_NEWS_INCLUDES} \ + ${XSL_NEWS_NEWSFLASH} \ + ${XSL_NEWS_NEWS_RDF} \ ${XML_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 +XML_NEWS_NEWS_MASTER= ${WEB_PREFIX}/share/sgml/news.xml +.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/news.xml) +XML_NEWS_NEWS= ${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/news.xml +.else +XML_NEWS_NEWS= ${WEB_PREFIX}/share/sgml/news.xml +.endif + +XSL_NEWS_NEWSFLASH= ${WEB_PREFIX}/share/sgml/templates.newsflash.xsl +XSL_NEWS_NEWSFLASH_OLD= ${WEB_PREFIX}/share/sgml/templates.oldnewsflash.xsl +XSL_NEWS_NEWS_RDF= ${WEB_PREFIX}/share/sgml/templates.news-rdf.xsl # DEPENDSET: press .......................................................... _DEPENDSET.press= ${XML_NEWS_PRESS_MASTER} ${XML_NEWS_PRESS} \ - ${XML_NEWS_INCLUDES_MASTER} ${XML_NEWS_INCLUDES} \ + ${XSL_NEWS_PRESS} \ ${XML_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 +XML_NEWS_PRESS_MASTER= ${WEB_PREFIX}/share/sgml/press.xml +.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/press.xml) +XML_NEWS_PRESS= ${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/press.xml +.else +XML_NEWS_PRESS= ${WEB_PREFIX}/share/sgml/press.xml +.endif +XSL_NEWS_PRESS= ${WEB_PREFIX}/share/sgml/templates.press.xsl +XSL_NEWS_PRESS_OLD= ${WEB_PREFIX}/share/sgml/templates.oldpress.xsl # DEPENDSET: events .......................................................... _DEPENDSET.events= ${XML_EVENTS_EVENTS_MASTER} ${XML_EVENTS_EVENTS} \ - ${XML_EVENTS_CURDATE} ${XML_INCLUDES} + ${XSL_EVENTS} \ + ${XSL_EVENTS_ICS} \ + ${XML_INCLUDES} _PARAMS.events= --param events.xml-master "'${XML_EVENTS_EVENTS_MASTER}'" \ - --param events.xml "'${XML_EVENTS_EVENTS}'" \ - --param curdate.xml "'${XML_EVENTS_CURDATE}'" -XML_EVENTS_EVENTS_MASTER=${WEB_PREFIX}/en/events/events.xml -.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/events/events.xml) -XML_EVENTS_EVENTS= ${WEB_PREFIX}/${WWW_LANGCODE}/events/events.xml + --param events.xml "'${XML_EVENTS_EVENTS}'" +XML_EVENTS_EVENTS_MASTER=${WEB_PREFIX}/share/sgml/events.xml +.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/events.xml) +XML_EVENTS_EVENTS= ${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/events.xml .else XML_EVENTS_EVENTS= ${XML_EVENTS_EVENTS_MASTER} .endif -XML_EVENTS_CURDATE= ${WEB_PREFIX}/en/events/curdate.xml +XSL_EVENTS= ${WEB_PREFIX}/share/sgml/templates.events.xsl +XSL_EVENTS_ICS= ${WEB_PREFIX}/share/sgml/templates.events2ics.xsl -DATE?= /bin/date -TR?= /usr/bin/tr - -${XML_EVENTS_CURDATE}: - @${ECHO} "Generating ${.TARGET}" - @${ECHO_CMD} '' > ${.TARGET} - @${ECHO_CMD} '' >> ${.TARGET} - @${ECHO_CMD} -n ' ' >> ${.TARGET} - @${DATE} +%Y | ${TR} -d "\n" >> ${.TARGET} - @${ECHO_CMD} '' >> ${.TARGET} - @${ECHO_CMD} -n ' ' >> ${.TARGET} - @${DATE} +%m | ${TR} -d "\n" >> ${.TARGET} - @${ECHO_CMD} '' >> ${.TARGET} - @${ECHO_CMD} -n ' ' >> ${.TARGET} - @${DATE} +%d | ${TR} -d "\n" >> ${.TARGET} - @${ECHO_CMD} '' >> ${.TARGET} - @${ECHO_CMD} '' >> ${.TARGET} +# DEPENDSET: commercial ........................................................ +_DEPENDSET.commercial= ${XML_COMMERCIAL_CONSULT} \ + ${XML_COMMERCIAL_HARDWARE} \ + ${XML_COMMERCIAL_ISP} \ + ${XML_COMMERCIAL_MISC} \ + ${XML_COMMERCIAL_SOFTWARE} \ + ${XSL_ENTRIES} \ + ${XML_INCLUDES} +_PARAMS.commercial= +XML_COMMERCIAL_CONSULT= ${WEB_PREFIX}/share/sgml/commercial.consult.xml +XML_COMMERCIAL_HARDWARE=${WEB_PREFIX}/share/sgml/commercial.hardware.xml +XML_COMMERCIAL_ISP= ${WEB_PREFIX}/share/sgml/commercial.isp.xml +XML_COMMERCIAL_MISC= ${WEB_PREFIX}/share/sgml/commercial.misc.xml +XML_COMMERCIAL_SOFTWARE=${WEB_PREFIX}/share/sgml/commercial.software.xml -CLEANFILES+= ${XML_EVENTS_CURDATE} +XSL_ENTRIES= ${WEB_PREFIX}/share/sgml/templates.entries.xsl # DEPENDSET: navigation ..................................................... _DEPENDSET.navigation= ${XML_NAVIGATION} ${XML_INCLUDES} _PARAMS.navigation= --param navigation.xml "'${XML_NAVIGATION}'" XML_NAVIGATION= ${WEB_PREFIX}/${WWW_LANGCODE}/navigation.xml # DEPENDSET: advisories ..................................................... _DEPENDSET.advisories= ${XML_ADVISORIES} ${XML_INCLUDES} _PARAMS.advisories= --param advisories.xml "'${XML_ADVISORIES}'" XML_ADVISORIES= ${WEB_PREFIX}/share/sgml/advisories.xml # DEPENDSET: notices ........................................................ _DEPENDSET.notices= ${XML_NOTICES} ${XML_INCLUDES} _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= ${XSLTPROCFLAGS} 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 +XMLLINTOPTS= ${XMLLINTFLAGS} +XMLLINTOPTS+= --xinclude --valid --noout +.if defined(XML_CATALOG_FILES) && !empty(XML_CATALOG_FILES) +XMLLINTOPTS+= --nonet --catalogs +.endif +XMLLINT= env ${XSLTPROC_ENV} ${PREFIX}/bin/xmllint + .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.${_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 + +VALIDATE_DOCS+= VALIDATE.${_ID} +VALIDATE.${_ID}: + @${ECHO} "==>[xmllint] ${XML.${_ID}}" + -@${XMLLINT} ${XMLLINTOPTS} ${XML.${_ID}} 2>&1 \ + | ${SED} -e 's/^/ | /' +. endfor .endfor -.endfor + +lint: ${VALIDATE_DOCS}