1246149Ssjg# $Id: man.mk,v 1.20 2012/12/13 01:51:01 sjg Exp $
2246149Ssjg
3246149Ssjg.if !target(__${.PARSEFILE}__)
4246149Ssjg__${.PARSEFILE}__:
5246149Ssjg
6246149Ssjg.include <init.mk>
7246149Ssjg
8246149Ssjg# unlike bsd.man.mk we handle 3 approaches
9246149Ssjg# 1. install unformated nroff (default)
10246149Ssjg# 2. install formatted pages
11246149Ssjg# 3. install formatted pages but with extension of .0
12246149Ssjg# sadly we cannot rely on a shell that supports ${foo#...} and ${foo%...}
13246149Ssjg# so we have to use sed(1).
14246149Ssjg
15246149Ssjg# set MANTARGET=cat for formatted pages
16246149SsjgMANTARGET?=	man
17246149Ssjg# set this to .0 for same behavior as bsd.man.mk
18246149SsjgMCATEXT?=
19246149Ssjg
20246149SsjgNROFF?=		nroff
21246149SsjgMANDIR?=	/usr/share/man
22246149SsjgMANDOC?= man
23246149Ssjg
24246149Ssjg.SUFFIXES: .1 .2 .3 .4 .5 .6 .7 .8 .9 .cat1 .cat2 .cat3 .cat4 .cat5 .cat6 \
25246149Ssjg	.cat7 .cat8 .cat9
26246149Ssjg
27246149Ssjg.9.cat9 .8.cat8 .7.cat7 .6.cat6 .5.cat5 .4.cat4 .3.cat3 .2.cat2 .1.cat1:
28246149Ssjg	@echo "${NROFF} -${MANDOC} ${.IMPSRC} > ${.TARGET:T}"
29246149Ssjg	@${NROFF} -${MANDOC} ${.IMPSRC} > ${.TARGET:T} || ( rm -f ${.TARGET:T} ; false )
30246149Ssjg
31246149Ssjg.if defined(MAN) && !empty(MAN)
32246149Ssjg
33246149Ssjg# we use cmt2doc.pl to extract manpages from source
34246149Ssjg# this is triggered by the setting of EXTRACT_MAN or MAN being set but
35246149Ssjg# not existsing.
36246149Ssjg
37246149Ssjg.if !exists(${MAN:[1]}) && !target(${MAN:[1]})
38246149Ssjg.if defined(EXTRACT_MAN) && ${EXTRACT_MAN} == "no"
39246149SsjgMAN=
40246149Ssjg.else
41246149Ssjg.if exists(/usr/local/share/bin/cmt2doc.pl)
42246149SsjgCMT2DOC?= cmt2doc.pl
43246149SsjgCMT2DOC_OPTS?=  ${CMT2DOC_ORGOPT} -pmS${.TARGET:E}
44246149Ssjg.endif
45246149Ssjg.ifdef CMT2DOC
46246149Ssjg.c.8 .c.5 .c.3 .c.4 .c.1 \
47246149Ssjg	.cc.8 .cc.5 .cc.3 .cc.4 .cc.1 \
48246149Ssjg	.h.8 .h.5 .h.3 .h.4 .h.1 \
49246149Ssjg	.sh.8 .sh.5 .sh.3 .sh.4 .sh.1 \
50246149Ssjg	.pl.8 .pl.5 .pl.3 .pl.4 .pl.1:
51246149Ssjg	@echo "${CMT2DOC} ${.IMPSRC} > ${.TARGET:T}"
52246149Ssjg	@${CMT2DOC} ${CMT2DOC_OPTS} ${.IMPSRC} > ${.TARGET:T} || ( rm -f ${.TARGET:T} ; false )
53246149Ssjg.else
54246149SsjgMAN=
55246149Ssjg.endif
56246149Ssjg.endif
57246149Ssjg.endif
58246149Ssjg
59246149Ssjg_mandir=${DESTDIR}${MANDIR}/${MANTARGET}`echo $$page | sed -e 's/.*\.cat/./' -e 's/.*\.//'`
60246149Ssjg.if ${MANTARGET} == "cat"
61246149Ssjg_mfromdir?=.
62246149SsjgMANALL=	${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}
63246149Ssjg.if ${MCATEXT} == ""
64246149Ssjg_minstpage=`echo $$page | sed 's/\.cat/./'`
65246149Ssjg.else
66246149Ssjg_minstpage=`echo $$page | sed 's/\.cat.*//'`${MCATEXT}
67246149Ssjg.endif
68246149Ssjg.endif
69246149Ssjg.if target(${MAN:[1]})
70246149Ssjg_mfromdir?=.
71246149Ssjg.endif
72246149Ssjg_mfromdir?=${.CURDIR}
73246149SsjgMANALL?= ${MAN}
74246149Ssjg_minstpage?=$${page}
75246149Ssjg.endif
76246149Ssjg
77246149Ssjg.if !empty(MANOWN)
78246149SsjgMAN_INSTALL_OWN ?= -o ${MANOWN} -g ${MANGRP}
79246149SsjgMAN_CHOWN ?= chown
80246149Ssjg.else
81246149SsjgMAN_CHOWN = :
82246149Ssjg.endif
83246149Ssjg
84246149SsjgMINSTALL=	${INSTALL} ${COPY} ${MAN_INSTALL_OWN} -m ${MANMODE}
85246149Ssjg.if defined(MANZ)
86246149Ssjg# chown and chmod are done afterward automatically
87246149SsjgMCOMPRESS=	gzip -cf
88246149SsjgMCOMPRESSSUFFIX= .gz
89246149Ssjg.endif
90246149Ssjg
91246149Ssjgmaninstall:
92246149Ssjg.if defined(MANALL) && !empty(MANALL)
93246149Ssjg	@for page in ${MANALL:T}; do \
94246149Ssjg		test -s ${_mfromdir}/$$page || continue; \
95246149Ssjg		dir=${_mandir}; \
96246149Ssjg		test -d $$dir || ${INSTALL} -d ${MAN_INSTALL_OWN} -m 775 $$dir; \
97246149Ssjg		instpage=$${dir}${MANSUBDIR}/${_minstpage}${MCOMPRESSSUFFIX}; \
98246149Ssjg		if [ X"${MCOMPRESS}" = X ]; then \
99246149Ssjg			echo ${MINSTALL} ${_mfromdir}/$$page $$instpage; \
100246149Ssjg			${MINSTALL} ${_mfromdir}/$$page $$instpage; \
101246149Ssjg		else \
102246149Ssjg			rm -f $$instpage; \
103246149Ssjg			echo ${MCOMPRESS} ${_mfromdir}/$$page \> $$instpage; \
104246149Ssjg			${MCOMPRESS} ${_mfromdir}/$$page > $$instpage; \
105246149Ssjg			${MAN_CHOWN} ${MANOWN}:${MANGRP} $$instpage; \
106246149Ssjg			chmod ${MANMODE} $$instpage; \
107246149Ssjg		fi \
108246149Ssjg	done
109246149Ssjg.if defined(MLINKS) && !empty(MLINKS)
110246149Ssjg	@set ${MLINKS}; \
111246149Ssjg	while test $$# -ge 2; do \
112246149Ssjg		page=$$1; \
113246149Ssjg		shift; \
114246149Ssjg		dir=${_mandir}; \
115246149Ssjg		l=${_minstpage}${MCOMPRESSSUFFIX}; \
116246149Ssjg		page=$$1; \
117246149Ssjg		shift; \
118246149Ssjg		dir=${_mandir}; \
119246149Ssjg		t=$${dir}${MANSUBDIR}/${_minstpage}${MCOMPRESSSUFFIX}; \
120246149Ssjg		echo $$t -\> $$l; \
121246149Ssjg		rm -f $$t; \
122246149Ssjg		ln -s $$l $$t; \
123246149Ssjg	done
124246149Ssjg.endif
125246149Ssjg.endif
126246149Ssjg
127246149Ssjg.if defined(MANALL) && !empty(MANALL)
128246149Ssjgmanall: ${MANALL}
129246149Ssjgall: manall
130246149Ssjg.endif
131246149Ssjg
132246149Ssjg.if defined(CLEANMAN) && !empty(CLEANMAN)
133246149Ssjgcleandir: cleanman
134246149Ssjgcleanman:
135246149Ssjg	rm -f ${CLEANMAN}
136246149Ssjg.endif
137246149Ssjg.endif
138