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