man.mk revision 246223
190075Sobrien# $Id: man.mk,v 1.20 2012/12/13 01:51:01 sjg Exp $ 290075Sobrien 390075Sobrien.if !target(__${.PARSEFILE}__) 490075Sobrien__${.PARSEFILE}__: 590075Sobrien 690075Sobrien.include <init.mk> 790075Sobrien 890075Sobrien# unlike bsd.man.mk we handle 3 approaches 990075Sobrien# 1. install unformated nroff (default) 1090075Sobrien# 2. install formatted pages 1190075Sobrien# 3. install formatted pages but with extension of .0 1290075Sobrien# sadly we cannot rely on a shell that supports ${foo#...} and ${foo%...} 1390075Sobrien# so we have to use sed(1). 1490075Sobrien 1590075Sobrien# set MANTARGET=cat for formatted pages 1690075SobrienMANTARGET?= man 1790075Sobrien# set this to .0 for same behavior as bsd.man.mk 1890075SobrienMCATEXT?= 1990075Sobrien 2090075SobrienNROFF?= nroff 2190075SobrienMANDIR?= /usr/share/man 2290075SobrienMANDOC?= man 2390075Sobrien 2490075Sobrien.SUFFIXES: .1 .2 .3 .4 .5 .6 .7 .8 .9 .cat1 .cat2 .cat3 .cat4 .cat5 .cat6 \ 2590075Sobrien .cat7 .cat8 .cat9 2690075Sobrien 2790075Sobrien.9.cat9 .8.cat8 .7.cat7 .6.cat6 .5.cat5 .4.cat4 .3.cat3 .2.cat2 .1.cat1: 2890075Sobrien @echo "${NROFF} -${MANDOC} ${.IMPSRC} > ${.TARGET:T}" 2990075Sobrien @${NROFF} -${MANDOC} ${.IMPSRC} > ${.TARGET:T} || ( rm -f ${.TARGET:T} ; false ) 3090075Sobrien 3190075Sobrien.if defined(MAN) && !empty(MAN) 3290075Sobrien 3390075Sobrien# we use cmt2doc.pl to extract manpages from source 3490075Sobrien# this is triggered by the setting of EXTRACT_MAN or MAN being set but 3590075Sobrien# not existsing. 3690075Sobrien 3790075Sobrien.if !exists(${MAN:[1]}) && !target(${MAN:[1]}) 3890075Sobrien.if defined(EXTRACT_MAN) && ${EXTRACT_MAN} == "no" 3990075SobrienMAN= 4090075Sobrien.else 4190075Sobrien.if exists(/usr/local/share/bin/cmt2doc.pl) 4290075SobrienCMT2DOC?= cmt2doc.pl 4390075SobrienCMT2DOC_OPTS?= ${CMT2DOC_ORGOPT} -pmS${.TARGET:E} 4490075Sobrien.endif 4590075Sobrien.ifdef CMT2DOC 4690075Sobrien.c.8 .c.5 .c.3 .c.4 .c.1 \ 4790075Sobrien .cc.8 .cc.5 .cc.3 .cc.4 .cc.1 \ 4890075Sobrien .h.8 .h.5 .h.3 .h.4 .h.1 \ 4990075Sobrien .sh.8 .sh.5 .sh.3 .sh.4 .sh.1 \ 5090075Sobrien .pl.8 .pl.5 .pl.3 .pl.4 .pl.1: 5190075Sobrien @echo "${CMT2DOC} ${.IMPSRC} > ${.TARGET:T}" 5290075Sobrien @${CMT2DOC} ${CMT2DOC_OPTS} ${.IMPSRC} > ${.TARGET:T} || ( rm -f ${.TARGET:T} ; false ) 5390075Sobrien.else 5490075SobrienMAN= 5590075Sobrien.endif 5690075Sobrien.endif 5790075Sobrien.endif 5890075Sobrien 5990075Sobrien_mandir=${DESTDIR}${MANDIR}/${MANTARGET}`echo $$page | sed -e 's/.*\.cat/./' -e 's/.*\.//'` 6090075Sobrien.if ${MANTARGET} == "cat" 6190075Sobrien_mfromdir?=. 6290075SobrienMANALL= ${MAN:S/.1$/.cat1/g:S/.2$/.cat2/g:S/.3$/.cat3/g:S/.4$/.cat4/g:S/.5$/.cat5/g:S/.6$/.cat6/g:S/.7$/.cat7/g:S/.8$/.cat8/g:S/.9$/.cat9/g} 6390075Sobrien.if ${MCATEXT} == "" 6490075Sobrien_minstpage=`echo $$page | sed 's/\.cat/./'` 6590075Sobrien.else 6690075Sobrien_minstpage=`echo $$page | sed 's/\.cat.*//'`${MCATEXT} 6790075Sobrien.endif 6890075Sobrien.endif 6990075Sobrien.if target(${MAN:[1]}) 7090075Sobrien_mfromdir?=. 7190075Sobrien.endif 7290075Sobrien_mfromdir?=${.CURDIR} 7390075SobrienMANALL?= ${MAN} 7490075Sobrien_minstpage?=$${page} 7590075Sobrien.endif 7690075Sobrien 7790075Sobrien.if !empty(MANOWN) 7890075SobrienMAN_INSTALL_OWN ?= -o ${MANOWN} -g ${MANGRP} 7990075SobrienMAN_CHOWN ?= chown 8090075Sobrien.else 8190075SobrienMAN_CHOWN = : 8290075Sobrien.endif 8390075Sobrien 8490075SobrienMINSTALL= ${INSTALL} ${COPY} ${MAN_INSTALL_OWN} -m ${MANMODE} 8590075Sobrien.if defined(MANZ) 8690075Sobrien# chown and chmod are done afterward automatically 8790075SobrienMCOMPRESS= gzip -cf 8890075SobrienMCOMPRESSSUFFIX= .gz 8990075Sobrien.endif 9090075Sobrien 9190075Sobrienmaninstall: 9290075Sobrien.if defined(MANALL) && !empty(MANALL) 9390075Sobrien @for page in ${MANALL:T}; do \ 9490075Sobrien test -s ${_mfromdir}/$$page || continue; \ 9590075Sobrien dir=${_mandir}; \ 9690075Sobrien test -d $$dir || ${INSTALL} -d ${MAN_INSTALL_OWN} -m 775 $$dir; \ 9790075Sobrien instpage=$${dir}${MANSUBDIR}/${_minstpage}${MCOMPRESSSUFFIX}; \ 9890075Sobrien if [ X"${MCOMPRESS}" = X ]; then \ 9990075Sobrien echo ${MINSTALL} ${_mfromdir}/$$page $$instpage; \ 10090075Sobrien ${MINSTALL} ${_mfromdir}/$$page $$instpage; \ 10190075Sobrien else \ 10290075Sobrien rm -f $$instpage; \ 10390075Sobrien echo ${MCOMPRESS} ${_mfromdir}/$$page \> $$instpage; \ 10490075Sobrien ${MCOMPRESS} ${_mfromdir}/$$page > $$instpage; \ 10590075Sobrien ${MAN_CHOWN} ${MANOWN}:${MANGRP} $$instpage; \ 10690075Sobrien chmod ${MANMODE} $$instpage; \ 10790075Sobrien fi \ 10890075Sobrien done 10990075Sobrien.if defined(MLINKS) && !empty(MLINKS) 11090075Sobrien @set ${MLINKS}; \ 11190075Sobrien while test $$# -ge 2; do \ 11290075Sobrien page=$$1; \ 11390075Sobrien shift; \ 11490075Sobrien dir=${_mandir}; \ 11590075Sobrien l=${_minstpage}${MCOMPRESSSUFFIX}; \ 11690075Sobrien page=$$1; \ 11790075Sobrien shift; \ 11890075Sobrien dir=${_mandir}; \ 11990075Sobrien t=$${dir}${MANSUBDIR}/${_minstpage}${MCOMPRESSSUFFIX}; \ 12090075Sobrien echo $$t -\> $$l; \ 12190075Sobrien rm -f $$t; \ 12290075Sobrien ln -s $$l $$t; \ 12390075Sobrien done 12490075Sobrien.endif 12590075Sobrien.endif 12690075Sobrien 12790075Sobrien.if defined(MANALL) && !empty(MANALL) 12890075Sobrienmanall: ${MANALL} 12990075Sobrienall: manall 13090075Sobrien.endif 13190075Sobrien 13290075Sobrien.if defined(CLEANMAN) && !empty(CLEANMAN) 13390075Sobriencleandir: cleanman 13490075Sobriencleanman: 13590075Sobrien rm -f ${CLEANMAN} 13690075Sobrien.endif 13790075Sobrien.endif 13890075Sobrien