150476Speter# $FreeBSD$
215903Swosch#
3139761Skrion# The include file <bsd.man.mk> handles installing manual pages and
431074Swosch# their links.
515903Swosch#
615903Swosch#
715903Swosch# +++ variables +++
815903Swosch#
915903Swosch# DESTDIR	Change the tree where the man pages gets installed. [not set]
1015903Swosch#
1115903Swosch# MANDIR	Base path for manual installation. [${SHAREDIR}/man/man]
1215903Swosch#
1315903Swosch# MANOWN	Manual owner. [${SHAREOWN}]
1415903Swosch#
1515903Swosch# MANGRP	Manual group. [${SHAREGRP}]
1615903Swosch#
1715903Swosch# MANMODE	Manual mode. [${NOBINMODE}]
1815903Swosch#
1915903Swosch# MANSUBDIR	Subdirectory under the manual page section, i.e. "/i386"
2015903Swosch#		or "/tahoe" for machine specific manual pages.
2115903Swosch#
2274806Sru# MAN		The manual pages to be installed. For sections see
2315903Swosch#		variable ${SECTIONS}
2415903Swosch#
2523546Swosch# MCOMPRESS_CMD	Program to compress man pages. Output is to
2623546Swosch#		stdout. [${COMPRESS_CMD}]
2715903Swosch#
2815903Swosch# MLINKS	List of manual page links (using a suffix). The
29139761Skrion#		linked-to file must come first, the linked file
30139761Skrion#		second, and there may be multiple pairs. The files
3115903Swosch#		are hard-linked.
3215903Swosch#
33139761Skrion# NO_MANCOMPRESS	If you do not want unformatted manual pages to be
3415903Swosch#		compressed when they are installed. [not set]
3515903Swosch#
36139109Sru# NO_MLINKS	If you do not want install manual page links. [not set]
3720935Swosch#
3860749Shoek# MANFILTER	command to pipe the raw man page through before compressing
3917511Speter#		or installing.  Can be used to do sed substitution.
4015903Swosch#
4127659Spst# MANBUILDCAT	create preformatted manual pages in addition to normal
4227659Spst#		pages. [not set]
4327659Spst#
4427659Spst# MROFF_CMD	command and flags to create preformatted pages
4527659Spst#
4615903Swosch# +++ targets +++
4715903Swosch#
4815903Swosch#	maninstall:
4915903Swosch#		Install the manual pages and their links.
5015903Swosch#
511638Srgrimes
5294940Sru.if !target(__<bsd.init.mk>__)
5394940Sru.error bsd.man.mk cannot be included directly.
5494940Sru.endif
5594940Sru
56102173SruMINSTALL?=	${INSTALL} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
571638Srgrimes
5827659SpstCATDIR=		${MANDIR:H:S/$/\/cat/}
5927659SpstCATEXT=		.cat
60105388SruMROFF_CMD?=	groff -Tascii -mtty-char -man -t
6127659Spst
6223546SwoschMCOMPRESS_CMD?=	${COMPRESS_CMD}
6323546SwoschMCOMPRESS_EXT?=	${COMPRESS_EXT}
6411468Sbde
65245515SbrooksSECTIONS=	1 2 3 4 5 6 7 8 9
6674939Sru.SUFFIXES:	${SECTIONS:S/^/./g}
6711468Sbde
6874939Sru# Backwards compatibility.
6974939Sru.if !defined(MAN)
70167486Sru.for __sect in ${SECTIONS}
71167486Sru.if defined(MAN${__sect}) && !empty(MAN${__sect})
72167486SruMAN+=	${MAN${__sect}}
7311623Sbde.endif
7411623Sbde.endfor
7574939Sru.endif
7611623Sbde
7796164Sru_manpages:
7896164Sruall-man: _manpages
7911468Sbde
80139103Sru.if defined(NO_MANCOMPRESS)
8111468Sbde
8218314Speter# Make special arrangements to filter to a temporary file at build time
83139103Sru# for NO_MANCOMPRESS.
8418314Speter.if defined(MANFILTER)
8518314SpeterFILTEXTENSION=		.filt
8618314Speter.else
8718314SpeterFILTEXTENSION=
8818314Speter.endif
8918314Speter
901844SwollmanZEXT=
911638Srgrimes
9217511Speter.if defined(MANFILTER)
9374806Sru.if defined(MAN) && !empty(MAN)
9474806SruCLEANFILES+=	${MAN:T:S/$/${FILTEXTENSION}/g}
9574806SruCLEANFILES+=	${MAN:T:S/$/${CATEXT}${FILTEXTENSION}/g}
96167486Sru.for __page in ${MAN}
97167486Sru.for __target in ${__page:T:S/$/${FILTEXTENSION}/g}
98167486Sru_manpages: ${__target}
99167486Sru${__target}: ${__page}
10017831Speter	${MANFILTER} < ${.ALLSRC} > ${.TARGET}
10117511Speter.endfor
10227673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
103167486Sru.for __target in ${__page:T:S/$/${CATEXT}${FILTEXTENSION}/g}
104167486Sru_manpages: ${__target}
105167486Sru${__target}: ${__page}
10627659Spst	${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} > ${.TARGET}
10717511Speter.endfor
10817511Speter.endif
10917511Speter.endfor
11017511Speter.endif
11127659Spst.else
11274806Sru.if defined(MAN) && !empty(MAN)
11374806SruCLEANFILES+=	${MAN:T:S/$/${CATEXT}/g}
11427673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
115167486Sru.for __page in ${MAN}
116167486Sru.for __target in ${__page:T:S/$/${CATEXT}/g}
117167486Sru_manpages: ${__target}
118167486Sru${__target}: ${__page}
11927659Spst	${MROFF_CMD} ${.ALLSRC} > ${.TARGET}
12027659Spst.endfor
12127659Spst.endfor
12296524Sru.else
12396524Sru_manpages: ${MAN}
12427659Spst.endif
12527659Spst.endif
12627659Spst.endif
12717511Speter
12811468Sbde.else
1291844Swollman
13023546SwoschZEXT=		${MCOMPRESS_EXT}
13111136Swollman
13274806Sru.if defined(MAN) && !empty(MAN)
13374806SruCLEANFILES+=	${MAN:T:S/$/${MCOMPRESS_EXT}/g}
13474806SruCLEANFILES+=	${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g}
135167486Sru.for __page in ${MAN}
136167486Sru.for __target in ${__page:T:S/$/${MCOMPRESS_EXT}/}
137167486Sru_manpages: ${__target}
138167486Sru${__target}: ${__page}
13917831Speter.if defined(MANFILTER)
14023546Swosch	${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
14117511Speter.else
14223546Swosch	${MCOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
14317511Speter.endif
14411136Swollman.endfor
14527673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
146167486Sru.for __target in ${__page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/}
147167486Sru_manpages: ${__target}
148167486Sru${__target}: ${__page}
14927659Spst.if defined(MANFILTER)
15027659Spst	${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} | ${MCOMPRESS_CMD} > ${.TARGET}
15127659Spst.else
15227659Spst	${MROFF_CMD} ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
15327659Spst.endif
15411136Swollman.endfor
15511468Sbde.endif
15611136Swollman.endfor
15727659Spst.endif
15811136Swollman
1591638Srgrimes.endif
1601844Swollman
16196164Srumaninstall: _maninstall
16296164Sru_maninstall:
16374806Sru.if defined(MAN) && !empty(MAN)
16496164Sru_maninstall: ${MAN}
165139103Sru.if defined(NO_MANCOMPRESS)
16618314Speter.if defined(MANFILTER)
167167486Sru.for __page in ${MAN}
168167486Sru	${MINSTALL} ${__page:T:S/$/${FILTEXTENSION}/g} \
169167486Sru		${DESTDIR}${MANDIR}${__page:E}${MANSUBDIR}/${__page}
17027673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
171167486Sru	${MINSTALL} ${__page:T:S/$/${CATEXT}${FILTEXTENSION}/g} \
172167486Sru		${DESTDIR}${CATDIR}${__page:E}${MANSUBDIR}/${__page}
17327659Spst.endif
17418314Speter.endfor
17518314Speter.else
176119838Sru	@set ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}; \
17774806Sru	while : ; do \
17874806Sru		case $$# in \
17974806Sru			0) break;; \
18074806Sru			1) echo "warn: missing extension: $$1"; break;; \
18174806Sru		esac; \
18274806Sru		page=$$1; shift; sect=$$1; shift; \
18374806Sru		d=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}; \
18474806Sru		${ECHO} ${MINSTALL} $${page} $${d}; \
18574806Sru		${MINSTALL} $${page} $${d}; \
18674806Sru	done
18727673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
188167486Sru.for __page in ${MAN}
189167486Sru	${MINSTALL} ${__page:T:S/$/${CATEXT}/} \
190167486Sru		${DESTDIR}${CATDIR}${__page:E}${MANSUBDIR}/${__page:T}
19127659Spst.endfor
19218314Speter.endif
19327659Spst.endif
1941844Swollman.else
195167486Sru.for __page in ${MAN}
196167486Sru	${MINSTALL} ${__page:T:S/$/${MCOMPRESS_EXT}/g} \
197167486Sru		${DESTDIR}${MANDIR}${__page:E}${MANSUBDIR}
19827673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
199167486Sru	${MINSTALL} ${__page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} \
200167486Sru		${DESTDIR}${CATDIR}${__page:E}${MANSUBDIR}/${__page:T:S/$/${MCOMPRESS_EXT}/}
20174806Sru.endif
20227659Spst.endfor
2031844Swollman.endif
2041844Swollman.endif
20511468Sbde
206139109Sru.if !defined(NO_MLINKS) && defined(MLINKS) && !empty(MLINKS)
207119838Sru	@set ${MLINKS:C/\.([^.]*)$/.\1 \1/}; \
20815902Swosch	while : ; do \
20915902Swosch		case $$# in \
21015902Swosch			0) break;; \
21115902Swosch			[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
21215902Swosch		esac; \
21315902Swosch		name=$$1; shift; sect=$$1; shift; \
21415902Swosch		l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
21515902Swosch		name=$$1; shift; sect=$$1; shift; \
21615902Swosch		t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
2172353Sbde		${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
21823546Swosch		rm -f $${t} $${t}${MCOMPRESS_EXT}; \
219245752Sbrooks		${INSTALL_LINK} $${l}${ZEXT} $${t}${ZEXT}; \
22015902Swosch	done
22127673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
222119838Sru	@set ${MLINKS:C/\.([^.]*)$/.\1 \1/}; \
22327659Spst	while : ; do \
22427659Spst		case $$# in \
22527659Spst			0) break;; \
22627659Spst			[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
22727659Spst		esac; \
22827659Spst		name=$$1; shift; sect=$$1; shift; \
22927659Spst		l=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
23027659Spst		name=$$1; shift; sect=$$1; shift; \
23127659Spst		t=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
23227659Spst		${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
23327659Spst		rm -f $${t} $${t}${MCOMPRESS_EXT}; \
234245752Sbrooks		${INSTALL_LINK} $${l}${ZEXT} $${t}${ZEXT}; \
23527659Spst	done
2361638Srgrimes.endif
23727659Spst.endif
23883075Sru
23983075Srumanlint:
24083075Sru.if defined(MAN) && !empty(MAN)
241167486Sru.for __page in ${MAN}
242167486Srumanlint: ${__page}lint
243167486Sru${__page}lint: ${__page}
24483075Sru.if defined(MANFILTER)
24583080Sru	${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} -ww -z
24683075Sru.else
24783080Sru	${MROFF_CMD} -ww -z ${.ALLSRC}
24883075Sru.endif
24983075Sru.endfor
25083075Sru.endif
251