doc/share/mk/web.site.mk
Nik Clayton 92bf4933d5 Pull out the realinstall2 target. The code to do this is part of the
standard doc/ build, and can be turned on for all articles and books
as necessary.  What's more likely is that these files (.tar.gz of the
HTML, PS, and other versions) will be automatically generated and placed
on wcarchive, and linked to there instead.
1999-08-19 20:40:26 +00:00

209 lines
4.8 KiB
Makefile

# bsd.web.mk
# $Id: web.site.mk,v 1.21 1999-08-19 20:40:26 nik 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
#
# 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.
#
ORPHANS:= ${DOCS}
COPY= -C
#
# Where the ports live, if CVS isn't used (ie. NOPORTSCVS is defined)
#
PORTSBASE?= /usr
##################################################################
# 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
SGMLNORM= sgmlnorm
CATALOG?= /usr/local/share/sgml/html/catalog
SGMLNORMFLAGS= -d ${SGMLNORMOPTS} -c ${CATALOG}
GENDOCS+= ${DOCS:M*.sgml:S/.sgml$/.html/g}
ORPHANS:= ${ORPHANS:N*.sgml}
.sgml.html:
${SGMLNORM} ${SGMLNORMFLAGS} ${.IMPSRC} > ${.TARGET}
###
# file.docb --> file.html
#
# Generate HTML from docbook
.SUFFIXES: .docb
GENDOCS+= ${DOCS:M*.docb:S/.docb$/.html/g}
ORPHANS:= ${ORPHANS:N*.docb}
.docb.html:
sgmlfmt -d docbook -f html ${SGMLOPTS} ${.IMPSRC}
##################################################################
# Targets
#
# If no target is specified, .MAIN is made
#
.MAIN: all
#
# Build most everything
#
all: ${COOKIE} orphans ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR
#
# Warn about anything in DOCS that has no translation
#
.if !empty(ORPHANS)
orphans:
@echo Warning! I don\'t know what to do with: ${ORPHANS}
.else
orphans:
.endif
#
# Clean things up
#
.if !target(clean)
clean: _PROGSUBDIR
rm -f Errs errs mklog ${GENDOCS} ${LOCAL} ${CLEANFILES}
.endif
#
# Really clean things up
#
.if !target(cleandir)
cleandir: clean _PROGSUBDIR
rm -f ${.CURDIR}/tags .depend
cd ${.CURDIR}; rm -rf obj;
.endif
#
# Install targets: before, real, and after.
#
.if !target(install)
.if !target(beforeinstall)
beforeinstall:
.endif
.if !target(afterinstall)
afterinstall:
.endif
_ALLINSTALL+= ${GENDOCS} ${DATA} ${LOCAL}
realinstall: ${COOKIE} ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR
.if !empty(_ALLINSTALL)
@mkdir -p ${DOCINSTALLDIR}
for entry in ${_ALLINSTALL}; do \
${INSTALL} ${COPY} -o ${WEBOWN} -g ${WEBGRP} -m ${WEBMODE} \
${INSTALLFLAGS} $${entry} ${DOCINSTALLDIR}; \
done
.if defined(INDEXLINK) && !empty(INDEXLINK)
(cd ${DOCINSTALLDIR}; ln -s -f ${INDEXLINK} index.html)
.endif
.endif
.if defined(CGI) && !empty(CGI)
@mkdir -p ${CGIINSTALLDIR}
for entry in ${CGI}; do \
${INSTALL} ${COPY} -o ${CGIOWN} -g ${CGIGRP} -m ${CGIMODE} \
${INSTALLFLAGS} $${entry} ${CGIINSTALLDIR}; \
done
.endif
.if defined(DOCSUBDIR) && !empty(DOCSUBDIR)
for entry in ${DOCSUBDIR}; do \
mkdir -p ${DOCINSTALLDIR}/$$entry; \
done
.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.
#
#SUBDIR+=${DOCSUBDIR}
_PROGSUBDIR: .USE
.if defined(SUBDIR) && !empty(SUBDIR)
@for entry in ${SUBDIR}; do \
(${ECHODIR} "===> ${DIRPRFX}$$entry"; \
cd ${.CURDIR}/$${entry}; \
${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/); \
done
.endif
.if defined(DOCSUBDIR) && !empty(DOCSUBDIR)
@for entry in ${DOCSUBDIR}; do \
(${ECHODIR} "===> ${DIRPRFX}$$entry"; \
cd ${.CURDIR}/$${entry}; \
if [ ${WEBDIR} = "data" -a $$entry = "handbook" -o $$entry = "docproj-primer" ]; then \
${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS} FORMATS="txt html html-split"; \
elif [ $$entry = "handbook" -a ${WEBDIR} = "data/ja" ]; then \
${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS} FORMATS="html html-split"; \
else \
${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS}; \
fi); \
done
.endif
#
# cruft for generating linuxdoc stuff
#
.if defined (DOCSUBDIR) && !empty(DOCSUBDIR)
FORMATS?= "html ps latin1 ascii"
PARAMS= DESTDIR=${DESTDIR} DOCDIR=${WEBBASE}/${WEBDIR}
PARAMS+= DOCOWN=${WEBOWN} DOCGRP=${WEBGRP}
PARAMS+= FORMATS=${FORMATS} COPY="${COPY}"
PARAMS+= SGMLOPTS="${SGMLOPTS}"
.endif
# THE END