1# $NetBSD: bsd.man.mk,v 1.78 2002/02/11 21:15:00 mycroft Exp $ 2# @(#)bsd.man.mk 8.1 (Berkeley) 6/8/93 3 4.include <bsd.init.mk> 5 6##### Basic targets 7.PHONY: catinstall maninstall catpages manpages catlinks manlinks \ 8 cleanman html installhtml cleanhtml 9realinstall: ${MANINSTALL} 10 11##### Default values 12.if ${USETOOLS} == "yes" 13TMACDEPDIR?= ${TOOLDIR}/share/groff/tmac 14.else 15TMACDEPDIR?= ${DESTDIR}/usr/share/tmac 16.endif 17 18HTMLDIR?= ${DESTDIR}/usr/share/man 19CATDEPS?= ${TMACDEPDIR}/tmac.andoc \ 20 ${TMACDEPDIR}/tmac.doc \ 21 ${TMACDEPDIR}/tmac.doc-ditroff \ 22 ${TMACDEPDIR}/tmac.doc-common \ 23 ${TMACDEPDIR}/tmac.doc-nroff \ 24 ${TMACDEPDIR}/tmac.doc-syms 25HTMLDEPS?= ${TMACDEPDIR}/tmac.doc2html 26MANTARGET?= cat 27 28GROFF_HTML?= ${GROFF} -Tlatin1 -mdoc2html -P-b -P-o -P-u 29NROFF?= ${GROFF} -Tascii -mtty-char 30TBL?= tbl 31 32MAN?= 33MLINKS?= 34_MNUMBERS= 1 2 3 4 5 6 7 8 9 35.SUFFIXES: ${_MNUMBERS:@N@.$N@} 36 37MANCOMPRESS?= ${MANZ:Dgzip -cf} 38MANSUFFIX?= ${MANZ:D.gz} 39 40# make MANCOMPRESS a filter, so it can be inserted on an as-needed basis 41.if !empty(MANCOMPRESS) 42MANCOMPRESS:= | ${MANCOMPRESS} 43.endif 44 45__installpage: .USE 46 @cmp -s ${.ALLSRC} ${.TARGET} > /dev/null 2>&1 || \ 47 (echo "${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ 48 ${.ALLSRC} ${.TARGET}" && \ 49 ${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ 50 ${.ALLSRC} ${.TARGET}) 51 52##### Build and install rules (source form pages) 53 54.if ${MKMAN} != "no" 55maninstall: manlinks 56manpages:: # ensure target exists 57MANPAGES= ${MAN:C/.$/&${MANSUFFIX}/} 58 59realall: ${MANPAGES} 60.if !empty(MANSUFFIX) 61.NOPATH: ${MANPAGES} 62.SUFFIXES: ${_MNUMBERS:@N@.$N${MANSUFFIX}@} 63 64${_MNUMBERS:@N@.$N.$N${MANSUFFIX}@}: # build rule 65 cat ${.IMPSRC} ${MANCOMPRESS} > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET} 66.endif # !empty(MANSUFFIX) 67 68.for F in ${MANPAGES:S/${MANSUFFIX}$//:O:u} 69_F:= ${DESTDIR}${MANDIR}/man${F:T:E}${MANSUBDIR}/${F}${MANSUFFIX} 70 71.if !defined(UPDATE) 72${_F}! ${F}${MANSUFFIX} __installpage # install rule 73.if !defined(BUILD) && !make(all) && !make(${F}) 74${_F}! .MADE # no build at install 75.endif 76.else 77${_F}: ${F}${MANSUFFIX} __installpage # install rule 78.if !defined(BUILD) && !make(all) && !make(${F}) 79${_F}: .MADE # no build at install 80.endif 81.endif 82 83manpages:: ${_F} 84.PRECIOUS: ${_F} # keep if install fails 85.endfor 86 87manlinks: manpages # symlink install 88.if !empty(MLINKS) 89 @set ${MLINKS}; \ 90 while test $$# -ge 2; do \ 91 name=$$1; shift; \ 92 dir=${DESTDIR}${MANDIR}/man$${name##*.}; \ 93 l=$${dir}${MANSUBDIR}/$${name}${MANSUFFIX}; \ 94 name=$$1; shift; \ 95 dir=${DESTDIR}${MANDIR}/man$${name##*.}; \ 96 t=$${dir}${MANSUBDIR}/$${name}${MANSUFFIX}; \ 97 if test $$l -nt $$t -o ! -f $$t; then \ 98 echo $$t -\> $$l; \ 99 ${INSTALL_LINK} $$l $$t; \ 100 fi; \ 101 done 102.endif 103.endif # ${MKMAN} != "no" 104 105##### Build and install rules (plaintext pages) 106 107.if (${MKCATPAGES} != "no") && (${MKMAN} != "no") 108catinstall: catlinks 109catpages:: # ensure target exists 110CATPAGES= ${MAN:C/\.([1-9])$/.cat\1${MANSUFFIX}/} 111 112realall: ${CATPAGES} 113.NOPATH: ${CATPAGES} 114.SUFFIXES: ${_MNUMBERS:@N@.cat$N${MANSUFFIX}@} 115.MADE: ${CATDEPS} 116.MADE: ${HTMLDEPS} 117 118${_MNUMBERS:@N@.$N.cat$N${MANSUFFIX}@}: ${CATDEPS} # build rule 119.if defined(USETBL) 120 ${TBL} ${.IMPSRC} | ${NROFF} -mandoc ${MANCOMPRESS} > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET} 121.else 122 ${NROFF} -mandoc ${.IMPSRC} ${MANCOMPRESS} > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET} 123.endif 124 125.for F in ${CATPAGES:S/${MANSUFFIX}$//:O:u} 126_F:= ${DESTDIR}${MANDIR}/${F:T:E}${MANSUBDIR}/${F:R}.0${MANSUFFIX} 127 128.if !defined(UPDATE) 129${_F}! ${F}${MANSUFFIX} __installpage # install rule 130.if !defined(BUILD) && !make(all) && !make(${F}) 131${_F}! .MADE # no build at install 132.endif 133.else 134${_F}: ${F}${MANSUFFIX} __installpage # install rule 135.if !defined(BUILD) && !make(all) && !make(${F}) 136${_F}: .MADE # no build at install 137.endif 138.endif 139 140catpages:: ${_F} 141.PRECIOUS: ${_F} # keep if install fails 142.endfor 143 144catlinks: catpages # symlink install 145.if !empty(MLINKS) 146 @set ${MLINKS}; \ 147 while test $$# -ge 2; do \ 148 name=$$1; shift; \ 149 dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \ 150 l=$${dir}${MANSUBDIR}/$${name%.*}.0${MANSUFFIX}; \ 151 name=$$1; shift; \ 152 dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \ 153 t=$${dir}${MANSUBDIR}/$${name%.*}.0${MANSUFFIX}; \ 154 if test $$l -nt $$t -o ! -f $$t; then \ 155 echo $$t -\> $$l; \ 156 ${INSTALL_LINK} $$l $$t; \ 157 fi; \ 158 done 159.endif 160.endif # (${MKCATPAGES} != "no") && (${MKMAN} != "no") 161 162##### Build and install rules (HTML pages) 163 164.if !defined(NOHTML) 165installhtml: htmlpages 166htmlpages:: # ensure target exists 167HTMLPAGES= ${MAN:C/\.([1-9])$/.html\1/} 168 169html: ${HTMLPAGES} 170.NOPATH: ${HTMLPAGES} 171.SUFFIXES: ${_MNUMBERS:@N@.html$N@} 172 173${_MNUMBERS:@N@.$N.html$N@}: ${HTMLDEPS} # build rule 174 ${GROFF_HTML} ${.IMPSRC} > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET} 175 176.for F in ${HTMLPAGES:O:u} 177# construct installed path 178_F:= ${HTMLDIR}/${F:T:E}${MANSUBDIR}/${F:R:S-/index$-/x&-}.html 179 180.if !defined(UPDATE) 181${_F}! ${F} __installpage # install rule 182.if !defined(BUILD) && !make(all) && !make(${F}) 183${_F}! .MADE # no build at install 184.endif 185.else 186${_F}: ${F} __installpage # install rule 187.if !defined(BUILD) && !make(all) && !make(${F}) 188${_F}: .MADE # no build at install 189.endif 190.endif 191 192htmlpages:: ${_F} 193.PRECIOUS: ${_F} # keep if install fails 194.endfor 195 196cleanhtml: 197 rm -f ${HTMLPAGES} 198.endif # !defined(NOHTML) 199 200##### Clean rules 201.undef _F 202 203cleandir: cleanman 204cleanman: 205.if !empty(MAN) && (${MKMAN} != "no") 206.if (${MKCATPAGES} != "no") 207 rm -f ${CATPAGES} 208.endif 209.if !empty(MANSUFFIX) 210 rm -f ${MANPAGES} ${CATPAGES:S/${MANSUFFIX}$//} 211.endif 212.endif 213# (XXX ${CATPAGES:S...} cleans up old .catN files where .catN.gz now used) 214 215##### Pull in related .mk logic 216.include <bsd.obj.mk> 217.include <bsd.sys.mk> 218 219${TARGETS} catinstall maninstall: # ensure existence 220