diff --git a/share/mk/doc.xml.mk b/share/mk/doc.xml.mk
index 2cec273d8a..b2ed8a2ac1 100644
--- a/share/mk/doc.xml.mk
+++ b/share/mk/doc.xml.mk
@@ -1,378 +1,384 @@
# doc.xml.mk
-# $FreeBSD: www/share/mk/doc.xml.mk,v 1.8 2006/08/21 18:27:42 hrs Exp $
+# $FreeBSD: www/share/mk/doc.xml.mk,v 1.9 2006/08/22 09:25:05 hrs Exp $
XML_CATALOG_FILES= file://${.OBJDIR}/catalog-cwd.xml \
file://${DOC_PREFIX}/${LANGCODE}/share/sgml/catalog.xml \
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
.if exists(${WEB_PREFIX}/share/sgml/catalog-cwd.xml)
XML_CATALOG_CWD= ${WEB_PREFIX}/share/sgml/catalog-cwd.xml
.elif exists(${DOC_PREFIX}/share/sgml/catalog-cwd.xml)
XML_CATALOG_CWD= ${DOC_PREFIX}/share/sgml/catalog-cwd.xml
.endif
# Variables used in DEPENDSET
_DEPENDSET.all= wwwstd transtable mirrors usergroups commercial \
news press events advisories notices
# DEPENDSET: wwwstd .........................................................
_DEPENDSET.wwwstd= ${XML_INCLUDES}
_XML_INCLIST= libcommon.l10n.xsl \
libcommon.xsl \
navibar.l10n.ent \
- navibar.ent
+ navibar.ent \
+ common.ent \
+ header.ent \
+ header.l10n.ent \
+ iso8879.ent \
+ l10n.ent \
+ release.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
.if defined(XML_CATALOG_CWD)
XML_INCLUDES+= ${.OBJDIR}/catalog-cwd.xml
CLEANFILES+= ${.OBJDIR}/catalog-cwd.xml
${.OBJDIR}/catalog-cwd.xml: ${XML_CATALOG_CWD}
${INSTALL} ${.ALLSRC} ${.TARGET}
.endif
XML_INCLUDES+= ${.OBJDIR}/autogen.ent
CLEANFILES+= ${.OBJDIR}/autogen.ent
${.OBJDIR}/autogen.ent:
${ECHO_CMD} '' > ${.TARGET}
DEPENDSET.DEFAULT+= wwwstd
# 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} \
${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_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} \
${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_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} \
${XSL_EVENTS} \
${XSL_EVENTS_ICS} \
${XML_INCLUDES}
_PARAMS.events= --param events.xml-master "'${XML_EVENTS_EVENTS_MASTER}'" \
--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
XSL_EVENTS= ${WEB_PREFIX}/share/sgml/templates.events.xsl
XSL_EVENTS_ICS= ${WEB_PREFIX}/share/sgml/templates.events2ics.xsl
# 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
XSL_ENTRIES= ${WEB_PREFIX}/share/sgml/templates.entries.xsl
# 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
lint: ${VALIDATE_DOCS}
diff --git a/share/mk/web.site.mk b/share/mk/web.site.mk
index bd7b131297..d783520d71 100644
--- a/share/mk/web.site.mk
+++ b/share/mk/web.site.mk
@@ -1,388 +1,394 @@
# bsd.web.mk
-# $FreeBSD: www/share/mk/web.site.mk,v 1.74 2006/08/19 21:18:53 hrs Exp $
+# $FreeBSD: www/share/mk/web.site.mk,v 1.75 2006/08/24 20:02:06 hrs Exp $
#
# Build and install a web site.
#
# Basic targets:
#
# all (default) -- performs batch mode processing necessary
# install -- installs everything
# clean -- remove anything generated by processing
#
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
.endif
WEBDIR?= ${.CURDIR:T}
CGIDIR?= ${.CURDIR:T}
DESTDIR?= ${HOME}/public_html
WEBOWN?= ${USER}
WEBGRP?= www
WEBMODE?= 664
CGIOWN?= ${USER}
CGIGRP?= www
CGIMODE?= 775
BUNZIP2?= /usr/bin/bunzip2
CP?= /bin/cp
CVS?= /usr/bin/cvs
ECHO_CMD?= echo
FETCH?= /usr/bin/fetch
FIND?= /usr/bin/find
SETENV?= /usr/bin/env
LN?= /bin/ln
MKDIR?= /bin/mkdir
MV?= /bin/mv
PERL?= /usr/bin/perl5
.if !exists(${PERL}) && exists(/usr/local/bin/perl5)
PERL= /usr/local/bin/perl5
.endif
RM?= /bin/rm
SED?= /usr/bin/sed
SH?= /bin/sh
SORT?= /usr/bin/sort
TOUCH?= /usr/bin/touch
TRUE?= /usr/bin/true
LOCALBASE?= /usr/local
PREFIX?= ${LOCALBASE}
.if exists(${PREFIX}/bin/sgmlnorm) && !defined(OPENJADE)
SGMLNORM?= ${PREFIX}/bin/sgmlnorm
.else
SGMLNORM?= ${PREFIX}/bin/osgmlnorm
.endif
SGMLNORMOPTS?= -d ${SGMLNORMFLAGS} ${CATALOG:S,^,-c ,} -D ${.CURDIR}
XSLTPROC?= ${PREFIX}/bin/xsltproc
XSLTPROCOPTS?= ${XSLTPROCFLAGS}
XMLLINT?= ${PREFIX}/bin/xmllint
XMLLINTOPTS?= ${XMLLINTFLAGS}
TIDY?= ${PREFIX}/bin/tidy
.if defined(TIDY_VERBOSE)
_TIDYLOGFILE= tidyerr.${.TARGET}
CLEANFILES+= tidyerr.*
.else
_TIDYLOGFILE= /dev/null
.endif
TIDYOPTS?= -wrap 90 -m -raw -preserve -f ${_TIDYLOGFILE} -asxml ${TIDYFLAGS}
HTML2TXT?= ${PREFIX}/bin/w3m
HTML2TXTOPTS?= -dump ${HTML2TXTFLAGS}
ISPELL?= ispell
ISPELLOPTS?= -l -p /usr/share/dict/freebsd ${ISPELLFLAGS}
WEBCHECK?= ${PREFIX}/bin/webcheck
WEBCHECKOPTS?= -ab ${WEBCHECKFLAGS}
WEBCHECKDIR?= /webcheck
WEBCHECKINSTALLDIR?= ${DESTDIR}${WEBCHECKDIR}
.if !defined(WEBCHECKURL)
WEBCHECKURL!= ${ECHO_CMD} http://www.FreeBSD.org/${WEBBASE:S/data//}/${WEBDIR:S/data//}/ | ${SED} -E "s%/+%/%g"
.endif
#
# Install dirs derived from the above.
#
DOCINSTALLDIR= ${DESTDIR}${WEBBASE}/${WEBDIR}
CGIINSTALLDIR= ${DESTDIR}${WEBBASE}/${CGIDIR}
#
# The orphan list contains sources specified in DOCS that there
# is no transform rule for. We start out with all of them, and
# each rule below removes the ones it knows about. If any are
# left over at the end, the user is warned about them and build
# breaks.
#
ORPHANS:= ${DOCS}
#
# Tell install(1) to always copy file being installed.
#
COPY= -C
#
# Where the ports live, if CVS isn't used (ie. NOPORTSCVS is defined)
#
PORTSBASE?= /usr
#
# URL where INDEX can be found (define NOPORTSNET to disable)
#
INDEXURI?= http://www.FreeBSD.org/ports/INDEX-6
#
# Instruct bsd.subdir.mk to NOT to process SUBDIR directive. It is not
# necessary since web.site.mk does it using own rules.
#
NO_SUBDIR= YES
#
# for dependency
#
.if !defined(WITHOUT_DOC)
#
# When WITHOUT_DOC is not defined, we use doc.common.mk.
#
DOC_PREFIX?= ${WEB_PREFIX}/../doc
.if exists(${DOC_PREFIX}/share/mk/doc.common.mk)
.include "${DOC_PREFIX}/share/mk/doc.common.mk"
.include "${DOC_PREFIX}/share/mk/doc.xml.mk"
.else
.error ${DOC_PREFIX}/share/mk/doc.common.mk not found.\
Define $$WITHOUT_DOC and $$WEB_ONLY for performing a partial\
build without the doc/ module.
.endif
.else # !defined(WITHOUT_DOC)
#
# When WITHOUT_DOC is defined, we should not use files in doc/ module at all.
#
.if !defined(WWW_LANGCODE) || empty(WWW_LANGCODE)
_WEB_PREFIX!= realpath ${WEB_PREFIX}
WWW_LANGCODE:= ${.CURDIR:S,^${_WEB_PREFIX}/,,:C,^([^/]+)/.*,\1,}
.undef _WEB_PREFIX
.include "${WEB_PREFIX}/share/mk/doc.xml.mk"
.endif
.endif # !defined(WITHOUT_DOC)
_INCLIST= navibar.ent \
- navibar.l10n.ent
+ navibar.l10n.ent \
+ common.ent \
+ header.ent \
+ header.l10n.ent \
+ iso8879.ent \
+ l10n.ent \
+ release.ent
_SGML_INCLUDES= ${SGML_INCLUDES}
.for F in ${_INCLIST}
.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/${F})
_SGML_INCLUDES+=${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/${F}
.endif
.if exists(${WEB_PREFIX}/share/sgml/${F})
_SGML_INCLUDES+=${WEB_PREFIX}/share/sgml/${F}
.endif
.endfor
CATALOG?= ${PREFIX}/share/sgml/html/catalog \
${PREFIX}/share/sgml/catalog
.if exists(${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/catalog)
CATALOG+= ${WEB_PREFIX}/${WWW_LANGCODE}/share/sgml/catalog
.endif
CATALOG+= ${WEB_PREFIX}/share/sgml/catalog
##################################################################
# Transformation rules
###
# file.sgml --> file.html
#
# Runs file.sgml through spam to validate and expand some entity
# references are expanded. file.html is added to the list of
# things to install.
.SUFFIXES: .sgml .html
.if defined(REVCHECK)
PREHTML?= ${WEB_PREFIX}/ja/prehtml
CANONPREFIX0!= cd ${WEB_PREFIX}; ${ECHO_CMD} $${PWD};
CANONPREFIX= ${PWD:S/^${CANONPREFIX0}//:S/^\///}
LOCALTOP!= ${ECHO_CMD} ${CANONPREFIX} | \
${PERL} -pe 's@[^/]+@..@g; $$_.="/." if($$_ eq".."); s@^\.\./@@;'
DIR_IN_LOCAL!= ${ECHO_CMD} ${CANONPREFIX} | ${PERL} -pe 's@^[^/]+/?@@;'
PREHTMLOPTS?= -revcheck "${LOCALTOP}" "${DIR_IN_LOCAL}" ${PREHTMLFLAGS}
.else
DATESUBST?= 's///'
# Force override base to point to http://www.FreeBSD.org/. Note: This
# is used for http://security.FreeBSD.org/ .
.if WITH_WWW_FREEBSD_ORG_BASE
BASESUBST?= -e 's///'
.endif
PREHTML?= ${SED} -e ${DATESUBST} ${BASESUBST}
.endif
GENDOCS+= ${DOCS:M*.sgml:S/.sgml$/.html/g}
ORPHANS:= ${ORPHANS:N*.sgml}
# XXX: using a pipe between ${PREHTML} and ${SGMLNORM} should be better,
# but very strange errors will be reported when using osgmlnorm (from
# OpenSP. sgmlnorm works fine). For the moment, we use a temporary file
# to prevent it.
.sgml.html: ${_SGML_INCLUDES}
${PREHTML} ${PREHTMLOPTS} ${.IMPSRC} > ${.IMPSRC}-tmp
${SETENV} SGML_CATALOG_FILES= \
${SGMLNORM} ${SGMLNORMOPTS} ${.IMPSRC}-tmp > ${.TARGET} || \
(${RM} -f ${.IMPSRC}-tmp ${.TARGET} && false)
${RM} -f ${.IMPSRC}-tmp
.if !defined(NO_TIDY)
-${TIDY} ${TIDYOPTS} ${.TARGET}
.endif
##################################################################
# Special Targets
#
# Spellcheck all generated documents in the current directory.
#
spellcheck:
.for _entry in ${GENDOCS}
@echo "Spellcheck ${_entry}"
@${HTML2TXT} ${HTML2TXTOPTS} ${.OBJDIR}/${_entry} | ${ISPELL} ${ISPELLOPTS}
.endfor
#
# Check installed page's hypertext references. Checking is done relatively
# to ${.CURDIR} value, i.e. calling 'make webcheck' in www/ru/java
# directory will force checking all URLs at http://www.FreeBSD.org/ru/java/
#
# NOTE: webcheck's output always stored to ${DESTDIR}/webcheck directory.
#
webcheck:
@[ -d ${WEBCHECKINSTALLDIR} ] || ${MKDIR} ${WEBCHECKINSTALLDIR}
${WEBCHECK} ${WEBCHECKOPTS} -o ${WEBCHECKINSTALLDIR} ${WEBCHECKURL}
#
# Check if all directories and files in current directory are listed in
# Makefile as processing source. If anything not listed is found, then
# user is warned about (it can be forgotten file or directory).
#
.if make(checkmissing)
# skip printing '===> ...' while processing SUBDIRs
ECHODIR= ${TRUE}
# detect relative ${.CURDIR}
_CURDIR!= realpath ${.CURDIR}
_PFXDIR!= realpath ${WEB_PREFIX}
CDIR= ${_CURDIR:S/${_PFXDIR}\///}
# populate missing directories list based on $SUBDIR
_DIREXCL= ! -name CVS
.for entry in ${SUBDIR}
_DIREXCL+= ! -name ${entry}
.endfor
MISSDIRS!= ${FIND} ./ -type d ${_DIREXCL} -maxdepth 1 | ${SED} "s%./%%g"
# populate missing files list based on $DOCS, $DATA and $CGI
_FILEEXCL= ! -name Makefile\* ! -name includes.\*
.for entry in ${DOCS} ${DATA} ${CGI}
_FILEEXCL+= ! -name ${entry}
.endfor
MISSFILES!= ${FIND} ./ -type f ${_FILEEXCL} -maxdepth 1 | ${SED} "s%./%%g"
checkmissing: _PROGSUBDIR
.if !empty(MISSDIRS)
@${ECHO_CMD} "===> ${CDIR}"
@${ECHO_CMD} "Directories not listed in SUBDIR:"
.for entry in ${MISSDIRS}
@${ECHO_CMD} " >>> ${entry}"
.endfor
.endif
.if !empty(MISSFILES)
@${ECHO_CMD} "===> ${CDIR}"
@${ECHO_CMD} "Files not listed in DOCS/DATA/CGI:"
.for entry in ${MISSFILES}
@${ECHO_CMD} " >>> ${entry} "
.endfor
.endif
.endif
##################################################################
# Main Targets
#
# If no target is specified, .MAIN is made.
#
.MAIN: all
#
# Build most everything.
#
all: ${COOKIE} orphans ${GENDOCS} ${DATA} ${CGI} _PROGSUBDIR
#
# Warn about anything in DOCS that has no suffix translation rule.
#
.if !empty(ORPHANS)
orphans:
@${ECHO} Warning! I don\'t know what to do with: ${ORPHANS}; \
exit 1
.else
orphans:
.endif
#
# Clean things up.
#
.if !target(clean)
clean: _PROGSUBDIR
${RM} -f Errs errs mklog ${GENDOCS} ${CLEANFILES}
.endif
#
# Install targets: before, real, and after.
#
.if !target(install)
.if !target(beforeinstall)
beforeinstall:
.endif
.if !target(afterinstall)
afterinstall:
.endif
INSTALL_WEB?= \
${INSTALL} ${COPY} ${INSTALLFLAGS} \
-o ${WEBOWN} -g ${WEBGRP} -m ${WEBMODE}
INSTALL_CGI?= \
${INSTALL} ${COPY} ${INSTALLFLAGS} \
-o ${CGIOWN} -g ${CGIGRP} -m ${CGIMODE}
_ALLINSTALL+= ${GENDOCS} ${DATA}
realinstall: ${COOKIE} ${_ALLINSTALL} ${CGI} _PROGSUBDIR
.if !empty(_ALLINSTALL)
@${MKDIR} -p ${DOCINSTALLDIR}
.for entry in ${_ALLINSTALL}
.if exists(${.CURDIR}/${entry})
${INSTALL_WEB} ${.CURDIR}/${entry} ${DOCINSTALLDIR}
.else
${INSTALL_WEB} ${entry} ${DOCINSTALLDIR}
.endif
.endfor
.if defined(INDEXLINK) && !empty(INDEXLINK)
cd ${DOCINSTALLDIR}; ${LN} -fs ${INDEXLINK} index.html
.endif
.endif
.if defined(CGI) && !empty(CGI)
@${MKDIR} -p ${CGIINSTALLDIR}
.for entry in ${CGI}
${INSTALL_CGI} ${.CURDIR}/${entry} ${CGIINSTALLDIR}
.endfor
.endif
# Set up install dependencies so they happen in the correct order.
install: afterinstall
afterinstall: realinstall2
realinstall: beforeinstall
realinstall2: realinstall
.endif
#
# This recursively calls make in subdirectories.
#
_PROGSUBDIR: .USE
.if defined(SUBDIR) && !empty(SUBDIR)
.for entry in ${SUBDIR}
@${ECHODIR} "===> ${DIRPRFX}${entry}"
@cd ${.CURDIR}/${entry}; \
${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} \
DIRPRFX=${DIRPRFX}${entry}/
.endfor
.endif
.include
#
# Process 'make obj' recursively (should be declared *after* inclusion
# of bsd.obj.mk)
#
obj: _PROGSUBDIR
# THE END