You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
doc/data/web.mk

257 lines
5.8 KiB
Makefile

# bsd.web.mk
# $Id: web.mk,v 1.1.1.1 1996-09-24 17:45:45 jfieber 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
#
# Transformations:
#
# copy -- no processing, simply copy the file to install
# spam -- run the file through spam for processing and validation
# m4 -- run through the m4 macro processor
#
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
.endif
WEBDIR?= ${.CURDIR:T}
CGIDIR?= ${.CURDIR:T}
DESTDIR?= ${HOME}/public_html
WEBOWN?= ${USER}
WEBGRP?= ${USER}
WEBMODE?= ${NOBINMODE}
CGIOWN?= ${USER}
CGIGRP?= ${USER}
CGIMODE?= ${BINMODE}
#
# 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
##################################################################
# 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.java --> file.class
#
# Uses javac to compile java source. Note: since we cannot tell
# what classes will come out of a java file, we have install all
# .class files. The .if construction is there so that *.class
# is only put in if there are actually java files in the DOCS.
# Generally speaking, make and java were not made for each other.
.SUFFIXES: .java .class
JAVAC?= javac
JAVAFLAGS= ${JAVAOPTS}
_TMP:= ${DOCS:M*.java}
.if !empty(_TMP)
GENDOCS+= ${DOCS:M*.java:S/.java$/.class/g} *.class
.endif
ORPHANS:= ${ORPHANS:N*.java}
.java.class:
${JAVAC} ${JAVAFLAGS} ${.IMPSRC}
###
# file.m4 --> file.html
#
# Runs file.m4 through the m4 preprocessor, generating file.sgml,
# which is then taken care of by the .sgml to .html rule.
.SUFFIXES: .m4
M4?= m4
M4FLAGS?= ${M4OPTS}
GENDOCS+= ${DOCS:M*.m4:S/.m4$/.html/g}
CLEANFILES+= ${DOCS:M*.m4:S/.m4$/.sgml/g}
ORPHANS:= ${ORPHANS:N*.m4}
.m4.sgml:
${M4} ${M4OPTS} < ${.IMPSRC} > ${.TARGET}
##################################################################
# Targets
#
# If no target is specified, .MAIN is made
#
.MAIN: all
#
# Build most everything
#
all: orphans cvsdirs ${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
#
# Check these things out from cvs
#
cvsdirs:
.if defined{CVSDIRS} && !empty{CVSDIRS}
for i in ${CVSDIRS}; do \
cvs co -P $$i; \
done
.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
.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
realinstall2:
.if defined(DOCSUBDIR) && !empty(DOCSUBDIR)
for entry in ${DOCSUBDIR}; do \
(cd ${DOCINSTALLDIR}/$$entry; \
tar czf $$entry-html.tar.gz $${entry}.html $${entry}_toc.html \
$$entry[0-9]*.html; \
${BATCHSSI} $$entry ${HDR} ${FTR} \
$${entry}.html $${entry}_toc.html $$entry[0-9]*.html); \
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}; \
${MAKE} ${.TARGET:S/realinstall/install/:S/.depend/depend/} DIRPRFX=${DIRPRFX}$$entry/ ${PARAMS}); \
done
.endif
#
# cruft for generating linuxdoc stuff
#
.if defined (DOCSUBDIR) && !empty(DOCSUBDIR)
FORMATS?= "html ascii latin1 ps"
PARAMS= DESTDIR=${DESTDIR} DOCDIR=${WEBBASE}/${WEBDIR}
PARAMS+= DOCOWN=${WEBOWN} DOCGRP=${WEBGRP}
PARAMS+= SGMLOPTS="-ssi -links" FORMATS=${FORMATS} COPY="${COPY}"
#DOCDIR= ${WEBBASE}/${WEBDIR}
#DOCOWN= ${WEBOWN}
#DOCGRP= ${WEBGRP}
#MANMODE= ${WEBMODE}
#PARAMS+= MANGRP=${CGIGRP} MANMODE=${MANMODE} MANOWN=${CGIOWN}
BATCHSSI= batchssi
HDR= ${.CURDIR}/doc.hdr
FTR= ${.CURDIR}/doc.ftr
.endif
# THE END