17f3dea24SPeter Wemm# $FreeBSD$ 253996fadSWolfram Schneider# 353996fadSWolfram Schneider# The include file <bsd.man.mk> handles installing manual pages and 470e244f8SWolfram Schneider# their links. 553996fadSWolfram Schneider# 653996fadSWolfram Schneider# 753996fadSWolfram Schneider# +++ variables +++ 853996fadSWolfram Schneider# 953996fadSWolfram Schneider# DESTDIR Change the tree where the man pages gets installed. [not set] 1053996fadSWolfram Schneider# 1153996fadSWolfram Schneider# MANDIR Base path for manual installation. [${SHAREDIR}/man/man] 1253996fadSWolfram Schneider# 1353996fadSWolfram Schneider# MANOWN Manual owner. [${SHAREOWN}] 1453996fadSWolfram Schneider# 1553996fadSWolfram Schneider# MANGRP Manual group. [${SHAREGRP}] 1653996fadSWolfram Schneider# 1753996fadSWolfram Schneider# MANMODE Manual mode. [${NOBINMODE}] 1853996fadSWolfram Schneider# 1953996fadSWolfram Schneider# MANSUBDIR Subdirectory under the manual page section, i.e. "/i386" 2053996fadSWolfram Schneider# or "/tahoe" for machine specific manual pages. 2153996fadSWolfram Schneider# 22862d3deaSRuslan Ermilov# MAN The manual pages to be installed. For sections see 2353996fadSWolfram Schneider# variable ${SECTIONS} 2453996fadSWolfram Schneider# 25f7ea12a0SWolfram Schneider# MCOMPRESS_CMD Program to compress man pages. Output is to 26f7ea12a0SWolfram Schneider# stdout. [${COMPRESS_CMD}] 2753996fadSWolfram Schneider# 2853996fadSWolfram Schneider# MLINKS List of manual page links (using a suffix). The 2953996fadSWolfram Schneider# linked-to file must come first, the linked file 3053996fadSWolfram Schneider# second, and there may be multiple pairs. The files 3153996fadSWolfram Schneider# are hard-linked. 3253996fadSWolfram Schneider# 3353996fadSWolfram Schneider# NOMANCOMPRESS If you do not want unformatted manual pages to be 3453996fadSWolfram Schneider# compressed when they are installed. [not set] 3553996fadSWolfram Schneider# 36236fc12aSWolfram Schneider# NOMLINKS If you do not want install manual page links. [not set] 37236fc12aSWolfram Schneider# 381663ea58STim Vanderhoek# MANFILTER command to pipe the raw man page through before compressing 39d5dcd8e6SPeter Wemm# or installing. Can be used to do sed substitution. 4053996fadSWolfram Schneider# 415191ded8SPaul Traina# MANBUILDCAT create preformatted manual pages in addition to normal 425191ded8SPaul Traina# pages. [not set] 435191ded8SPaul Traina# 445191ded8SPaul Traina# MROFF_CMD command and flags to create preformatted pages 455191ded8SPaul Traina# 4653996fadSWolfram Schneider# +++ targets +++ 4753996fadSWolfram Schneider# 4853996fadSWolfram Schneider# maninstall: 4953996fadSWolfram Schneider# Install the manual pages and their links. 5053996fadSWolfram Schneider# 5153996fadSWolfram Schneider 522bdaf7e8SRuslan Ermilov.if !target(__<bsd.init.mk>__) 532bdaf7e8SRuslan Ermilov.error bsd.man.mk cannot be included directly. 542bdaf7e8SRuslan Ermilov.endif 552bdaf7e8SRuslan Ermilov 563585b293SGarrett WollmanMINSTALL= ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} 57afe61c15SRodney W. Grimes 585191ded8SPaul TrainaCATDIR= ${MANDIR:H:S/$/\/cat/} 595191ded8SPaul TrainaCATEXT= .cat 60b19ea0bbSRuslan ErmilovMROFF_CMD?= groff -Tascii -mtty-char -man -t 615191ded8SPaul Traina 62f7ea12a0SWolfram SchneiderMCOMPRESS_CMD?= ${COMPRESS_CMD} 63f7ea12a0SWolfram SchneiderMCOMPRESS_EXT?= ${COMPRESS_EXT} 64afe61c15SRodney W. Grimes 6509fa52f8SRuslan ErmilovSECTIONS= 1 1aout 2 3 4 5 6 7 8 9 6609fa52f8SRuslan Ermilov.SUFFIXES: ${SECTIONS:S/^/./g} 67862d3deaSRuslan Ermilov 68862d3deaSRuslan Ermilov# Backwards compatibility. 6909fa52f8SRuslan Ermilov.if !defined(MAN) 7009fa52f8SRuslan Ermilov.for sect in ${SECTIONS} 71862d3deaSRuslan Ermilov.if defined(MAN${sect}) && !empty(MAN${sect}) 72862d3deaSRuslan ErmilovMAN+= ${MAN${sect}} 73eb896871SBruce Evans.endif 74eb896871SBruce Evans.endfor 7509fa52f8SRuslan Ermilov.endif 76eb896871SBruce Evans 77afeaaa84SRuslan Ermilov_manpages: 78afeaaa84SRuslan Ermilovall-man: _manpages 79e8f9a073SBruce Evans 80e8f9a073SBruce Evans.if defined(NOMANCOMPRESS) 81e8f9a073SBruce Evans 82eb0085f4SPeter Wemm# Make special arrangements to filter to a temporary file at build time 83eb0085f4SPeter Wemm# for NOMANCOMPRESS. 84eb0085f4SPeter Wemm.if defined(MANFILTER) 85eb0085f4SPeter WemmFILTEXTENSION= .filt 86eb0085f4SPeter Wemm.else 87eb0085f4SPeter WemmFILTEXTENSION= 88eb0085f4SPeter Wemm.endif 89eb0085f4SPeter Wemm 90e8f9a073SBruce EvansZEXT= 91e8f9a073SBruce Evans 92d5dcd8e6SPeter Wemm.if defined(MANFILTER) 93862d3deaSRuslan Ermilov.if defined(MAN) && !empty(MAN) 94862d3deaSRuslan ErmilovCLEANFILES+= ${MAN:T:S/$/${FILTEXTENSION}/g} 95862d3deaSRuslan ErmilovCLEANFILES+= ${MAN:T:S/$/${CATEXT}${FILTEXTENSION}/g} 96862d3deaSRuslan Ermilov.for page in ${MAN} 97eb0085f4SPeter Wemm.for target in ${page:T:S/$/${FILTEXTENSION}/g} 98afeaaa84SRuslan Ermilov_manpages: ${target} 99d5dcd8e6SPeter Wemm${target}: ${page} 1005e7d3affSPeter Wemm ${MANFILTER} < ${.ALLSRC} > ${.TARGET} 101d5dcd8e6SPeter Wemm.endfor 1025d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 1035191ded8SPaul Traina.for target in ${page:T:S/$/${CATEXT}${FILTEXTENSION}/g} 104afeaaa84SRuslan Ermilov_manpages: ${target} 1055191ded8SPaul Traina${target}: ${page} 1065191ded8SPaul Traina ${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} > ${.TARGET} 107d5dcd8e6SPeter Wemm.endfor 108d5dcd8e6SPeter Wemm.endif 109d5dcd8e6SPeter Wemm.endfor 110d5dcd8e6SPeter Wemm.endif 1115191ded8SPaul Traina.else 112862d3deaSRuslan Ermilov.if defined(MAN) && !empty(MAN) 113862d3deaSRuslan ErmilovCLEANFILES+= ${MAN:T:S/$/${CATEXT}/g} 1145d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 115862d3deaSRuslan Ermilov.for page in ${MAN} 1165191ded8SPaul Traina.for target in ${page:T:S/$/${CATEXT}/g} 117afeaaa84SRuslan Ermilov_manpages: ${target} 1185191ded8SPaul Traina${target}: ${page} 1195191ded8SPaul Traina ${MROFF_CMD} ${.ALLSRC} > ${.TARGET} 1205191ded8SPaul Traina.endfor 1215191ded8SPaul Traina.endfor 1225191ded8SPaul Traina.endif 1235191ded8SPaul Traina.endif 1245191ded8SPaul Traina.endif 125d5dcd8e6SPeter Wemm 126e8f9a073SBruce Evans.else 127e8f9a073SBruce Evans 128f7ea12a0SWolfram SchneiderZEXT= ${MCOMPRESS_EXT} 129e8f9a073SBruce Evans 130862d3deaSRuslan Ermilov.if defined(MAN) && !empty(MAN) 131862d3deaSRuslan ErmilovCLEANFILES+= ${MAN:T:S/$/${MCOMPRESS_EXT}/g} 132862d3deaSRuslan ErmilovCLEANFILES+= ${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} 133862d3deaSRuslan Ermilov.for page in ${MAN} 134f7ea12a0SWolfram Schneider.for target in ${page:T:S/$/${MCOMPRESS_EXT}/} 135afeaaa84SRuslan Ermilov_manpages: ${target} 136e8f9a073SBruce Evans${target}: ${page} 1375e7d3affSPeter Wemm.if defined(MANFILTER) 138f7ea12a0SWolfram Schneider ${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET} 139d5dcd8e6SPeter Wemm.else 140f7ea12a0SWolfram Schneider ${MCOMPRESS_CMD} ${.ALLSRC} > ${.TARGET} 141d5dcd8e6SPeter Wemm.endif 142e8f9a073SBruce Evans.endfor 1435d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 1445191ded8SPaul Traina.for target in ${page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/} 145afeaaa84SRuslan Ermilov_manpages: ${target} 1465191ded8SPaul Traina${target}: ${page} 1475191ded8SPaul Traina.if defined(MANFILTER) 1485191ded8SPaul Traina ${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} | ${MCOMPRESS_CMD} > ${.TARGET} 1495191ded8SPaul Traina.else 1505191ded8SPaul Traina ${MROFF_CMD} ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET} 1515191ded8SPaul Traina.endif 1525191ded8SPaul Traina.endfor 1535191ded8SPaul Traina.endif 154e8f9a073SBruce Evans.endfor 155e8f9a073SBruce Evans.endif 156e8f9a073SBruce Evans 1573585b293SGarrett Wollman.endif 1583585b293SGarrett Wollman 159afeaaa84SRuslan Ermilovmaninstall: _maninstall 160afeaaa84SRuslan Ermilov_maninstall: 161862d3deaSRuslan Ermilov.if defined(MAN) && !empty(MAN) 162afeaaa84SRuslan Ermilov_maninstall: ${MAN} 163973f098aSGarrett Wollman.if defined(NOMANCOMPRESS) 164eb0085f4SPeter Wemm.if defined(MANFILTER) 165862d3deaSRuslan Ermilov.for page in ${MAN} 1665191ded8SPaul Traina ${MINSTALL} ${page:T:S/$/${FILTEXTENSION}/g} \ 167862d3deaSRuslan Ermilov ${DESTDIR}${MANDIR}${page:E}${MANSUBDIR}/${page} 1685d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 1695191ded8SPaul Traina ${MINSTALL} ${page:T:S/$/${CATEXT}${FILTEXTENSION}/g} \ 170862d3deaSRuslan Ermilov ${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page} 1715191ded8SPaul Traina.endif 172eb0085f4SPeter Wemm.endfor 173eb0085f4SPeter Wemm.else 174862d3deaSRuslan Ermilov @set `echo ${.ALLSRC} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \ 175862d3deaSRuslan Ermilov while : ; do \ 176862d3deaSRuslan Ermilov case $$# in \ 177862d3deaSRuslan Ermilov 0) break;; \ 178862d3deaSRuslan Ermilov 1) echo "warn: missing extension: $$1"; break;; \ 179862d3deaSRuslan Ermilov esac; \ 180862d3deaSRuslan Ermilov page=$$1; shift; sect=$$1; shift; \ 181862d3deaSRuslan Ermilov d=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}; \ 182862d3deaSRuslan Ermilov ${ECHO} ${MINSTALL} $${page} $${d}; \ 183862d3deaSRuslan Ermilov ${MINSTALL} $${page} $${d}; \ 184862d3deaSRuslan Ermilov done 1855d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 186862d3deaSRuslan Ermilov.for page in ${MAN} 1875191ded8SPaul Traina ${MINSTALL} ${page:T:S/$/${CATEXT}/} \ 188862d3deaSRuslan Ermilov ${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page:T} 1895191ded8SPaul Traina.endfor 1905191ded8SPaul Traina.endif 191eb0085f4SPeter Wemm.endif 192973f098aSGarrett Wollman.else 193862d3deaSRuslan Ermilov.for page in ${MAN} 194862d3deaSRuslan Ermilov ${MINSTALL} ${page:T:S/$/${MCOMPRESS_EXT}/g} \ 195862d3deaSRuslan Ermilov ${DESTDIR}${MANDIR}${page:E}${MANSUBDIR} 1965d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 1975191ded8SPaul Traina ${MINSTALL} ${page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} \ 198862d3deaSRuslan Ermilov ${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page:T:S/$/${MCOMPRESS_EXT}/} 199973f098aSGarrett Wollman.endif 200973f098aSGarrett Wollman.endfor 201862d3deaSRuslan Ermilov.endif 202862d3deaSRuslan Ermilov.endif 203e8f9a073SBruce Evans 204236fc12aSWolfram Schneider.if !defined(NOMLINKS) && defined(MLINKS) && !empty(MLINKS) 205d8982a6aSWolfram Schneider @set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \ 206d8982a6aSWolfram Schneider while : ; do \ 207d8982a6aSWolfram Schneider case $$# in \ 208d8982a6aSWolfram Schneider 0) break;; \ 209d8982a6aSWolfram Schneider [123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \ 210d8982a6aSWolfram Schneider esac; \ 211d8982a6aSWolfram Schneider name=$$1; shift; sect=$$1; shift; \ 212d8982a6aSWolfram Schneider l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \ 213d8982a6aSWolfram Schneider name=$$1; shift; sect=$$1; shift; \ 214d8982a6aSWolfram Schneider t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \ 21580c02d59SBruce Evans ${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \ 216f7ea12a0SWolfram Schneider rm -f $${t} $${t}${MCOMPRESS_EXT}; \ 2173585b293SGarrett Wollman ln $${l}${ZEXT} $${t}${ZEXT}; \ 218d8982a6aSWolfram Schneider done 2195d08f311SBruce Evans.if defined(MANBUILDCAT) && !empty(MANBUILDCAT) 2205191ded8SPaul Traina @set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \ 2215191ded8SPaul Traina while : ; do \ 2225191ded8SPaul Traina case $$# in \ 2235191ded8SPaul Traina 0) break;; \ 2245191ded8SPaul Traina [123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \ 2255191ded8SPaul Traina esac; \ 2265191ded8SPaul Traina name=$$1; shift; sect=$$1; shift; \ 2275191ded8SPaul Traina l=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \ 2285191ded8SPaul Traina name=$$1; shift; sect=$$1; shift; \ 2295191ded8SPaul Traina t=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \ 2305191ded8SPaul Traina ${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \ 2315191ded8SPaul Traina rm -f $${t} $${t}${MCOMPRESS_EXT}; \ 2325191ded8SPaul Traina ln $${l}${ZEXT} $${t}${ZEXT}; \ 2335191ded8SPaul Traina done 2345191ded8SPaul Traina.endif 235afe61c15SRodney W. Grimes.endif 23659e44d72SRuslan Ermilov 23759e44d72SRuslan Ermilovmanlint: 23859e44d72SRuslan Ermilov.if defined(MAN) && !empty(MAN) 23959e44d72SRuslan Ermilov.for page in ${MAN} 24059e44d72SRuslan Ermilovmanlint: ${page}lint 24159e44d72SRuslan Ermilov${page}lint: ${page} 24259e44d72SRuslan Ermilov.if defined(MANFILTER) 24380503035SRuslan Ermilov ${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} -ww -z 24459e44d72SRuslan Ermilov.else 24580503035SRuslan Ermilov ${MROFF_CMD} -ww -z ${.ALLSRC} 24659e44d72SRuslan Ermilov.endif 24759e44d72SRuslan Ermilov.endfor 24859e44d72SRuslan Ermilov.endif 249