1996-09-24 19:46:04 +02:00
|
|
|
# bsd.web.mk
|
1996-09-29 01:18:10 +02:00
|
|
|
# $Id: web.site.mk,v 1.4 1996-09-28 23:18:10 jfieber Exp $
|
1996-09-24 19:46:04 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# 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
|
|
|
|
#
|
1996-09-25 18:00:32 +02:00
|
|
|
all: ${COOKIE} orphans cvsdir ${GENDOCS} ${DATA} ${LOCAL} ${CGI} _PROGSUBDIR
|
1996-09-24 19:46:04 +02:00
|
|
|
|
|
|
|
#
|
|
|
|
# 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
|
|
|
|
#
|
1996-09-25 18:00:32 +02:00
|
|
|
cvsdir:
|
|
|
|
.if defined(CVSDIR) && !empty(CVSDIR)
|
|
|
|
for i in ${CVSDIR}; do \
|
1996-09-24 19:46:04 +02:00
|
|
|
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 \
|
1996-09-29 01:18:10 +02:00
|
|
|
$$entry[0-9]*.html ) \
|
1996-09-24 19:46:04 +02:00
|
|
|
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}
|
1996-09-29 01:18:10 +02:00
|
|
|
PARAMS+= SGMLOPTS="-links" FORMATS=${FORMATS} COPY="${COPY}"
|
1996-09-24 19:46:04 +02:00
|
|
|
|
|
|
|
.endif
|
|
|
|
|
|
|
|
# THE END
|