# 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