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