bsd.man.mk revision 83075
150476Speter# $FreeBSD: head/share/mk/bsd.man.mk 83075 2001-09-05 11:24:34Z ru $
215903Swosch#
315903Swosch# 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
2915903Swosch#		linked-to file must come first, the linked file 
3015903Swosch#		second, and there may be multiple pairs. The files 
3115903Swosch#		are hard-linked.
3215903Swosch#
3315903Swosch# NOMANCOMPRESS	If you do not want unformatted manual pages to be 
3415903Swosch#		compressed when they are installed. [not set]
3515903Swosch#
3620935Swosch# NOMLINKS	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
5211468SbdeMINSTALL=	${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
531638Srgrimes
5427659SpstCATDIR=		${MANDIR:H:S/$/\/cat/}
5527659SpstCATEXT=		.cat
5679613SruMROFF_CMD?=	groff -Tascii -mtty-char -man -t
5727659Spst
5823546SwoschMCOMPRESS_CMD?=	${COMPRESS_CMD}
5923546SwoschMCOMPRESS_EXT?=	${COMPRESS_EXT}
6011468Sbde
6174939SruSECTIONS=	1 1aout 2 3 4 5 6 7 8 9
6274939Sru.SUFFIXES:	${SECTIONS:S/^/./g}
6311468Sbde
6474939Sru# Backwards compatibility.
6574939Sru.if !defined(MAN)
6611623Sbde.for sect in ${SECTIONS}
6711623Sbde.if defined(MAN${sect}) && !empty(MAN${sect})
6874806SruMAN+=	${MAN${sect}}
6911623Sbde.endif
7011623Sbde.endfor
7174939Sru.endif
7211623Sbde
7374806Sruall-man:
7411468Sbde
7511468Sbde.if defined(NOMANCOMPRESS)
7611468Sbde
7718314Speter# Make special arrangements to filter to a temporary file at build time
7818314Speter# for NOMANCOMPRESS.
7918314Speter.if defined(MANFILTER)
8018314SpeterFILTEXTENSION=		.filt
8118314Speter.else
8218314SpeterFILTEXTENSION=
8318314Speter.endif
8418314Speter
851844SwollmanZEXT=
861638Srgrimes
8717511Speter.if defined(MANFILTER)
8874806Sru.if defined(MAN) && !empty(MAN)
8974806SruCLEANFILES+=	${MAN:T:S/$/${FILTEXTENSION}/g}
9074806SruCLEANFILES+=	${MAN:T:S/$/${CATEXT}${FILTEXTENSION}/g}
9174806Sru.for page in ${MAN}
9218314Speter.for target in ${page:T:S/$/${FILTEXTENSION}/g}
9317511Speterall-man: ${target}
9417511Speter${target}: ${page}
9517831Speter	${MANFILTER} < ${.ALLSRC} > ${.TARGET}
9617511Speter.endfor
9727673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
9827659Spst.for target in ${page:T:S/$/${CATEXT}${FILTEXTENSION}/g}
9927659Spstall-man: ${target}
10027659Spst${target}: ${page}
10127659Spst	${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} > ${.TARGET}
10217511Speter.endfor
10317511Speter.endif
10417511Speter.endfor
10517511Speter.endif
10627659Spst.else
10774806Sru.if defined(MAN) && !empty(MAN)
10874806SruCLEANFILES+=	${MAN:T:S/$/${CATEXT}/g}
10927673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
11074806Sru.for page in ${MAN}
11127659Spst.for target in ${page:T:S/$/${CATEXT}/g}
11227659Spstall-man: ${target}
11327659Spst${target}: ${page}
11427659Spst	${MROFF_CMD} ${.ALLSRC} > ${.TARGET}
11527659Spst.endfor
11627659Spst.endfor
11727659Spst.endif
11827659Spst.endif
11927659Spst.endif
12017511Speter
12111468Sbde.else
1221844Swollman
12323546SwoschZEXT=		${MCOMPRESS_EXT}
12411136Swollman
12574806Sru.if defined(MAN) && !empty(MAN)
12674806SruCLEANFILES+=	${MAN:T:S/$/${MCOMPRESS_EXT}/g}
12774806SruCLEANFILES+=	${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g}
12874806Sru.for page in ${MAN}
12923546Swosch.for target in ${page:T:S/$/${MCOMPRESS_EXT}/}
13011468Sbdeall-man: ${target}
13111468Sbde${target}: ${page}
13217831Speter.if defined(MANFILTER)
13323546Swosch	${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
13417511Speter.else
13523546Swosch	${MCOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
13617511Speter.endif
13711136Swollman.endfor
13827673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
13927659Spst.for target in ${page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/}
14027659Spstall-man: ${target}
14127659Spst${target}: ${page}
14227659Spst.if defined(MANFILTER)
14327659Spst	${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} | ${MCOMPRESS_CMD} > ${.TARGET}
14427659Spst.else
14527659Spst	${MROFF_CMD} ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
14627659Spst.endif
14711136Swollman.endfor
14811468Sbde.endif
14911136Swollman.endfor
15027659Spst.endif
15111136Swollman
1521638Srgrimes.endif
1531844Swollman
15411623Sbdemaninstall::
15574806Sru.if defined(MAN) && !empty(MAN)
15674806Srumaninstall:: ${MAN}
15711136Swollman.if defined(NOMANCOMPRESS)
15818314Speter.if defined(MANFILTER)
15974806Sru.for page in ${MAN}
16027659Spst	${MINSTALL} ${page:T:S/$/${FILTEXTENSION}/g} \
16174806Sru		${DESTDIR}${MANDIR}${page:E}${MANSUBDIR}/${page}
16227673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
16327659Spst	${MINSTALL} ${page:T:S/$/${CATEXT}${FILTEXTENSION}/g} \
16474806Sru		${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page}
16527659Spst.endif
16618314Speter.endfor
16718314Speter.else
16874806Sru	@set `echo ${.ALLSRC} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
16974806Sru	while : ; do \
17074806Sru		case $$# in \
17174806Sru			0) break;; \
17274806Sru			1) echo "warn: missing extension: $$1"; break;; \
17374806Sru		esac; \
17474806Sru		page=$$1; shift; sect=$$1; shift; \
17574806Sru		d=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}; \
17674806Sru		${ECHO} ${MINSTALL} $${page} $${d}; \
17774806Sru		${MINSTALL} $${page} $${d}; \
17874806Sru	done
17927673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
18074806Sru.for page in ${MAN}
18127659Spst	${MINSTALL} ${page:T:S/$/${CATEXT}/} \
18274806Sru		${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page:T}
18327659Spst.endfor
18418314Speter.endif
18527659Spst.endif
1861844Swollman.else
18774806Sru.for page in ${MAN}
18874806Sru	${MINSTALL} ${page:T:S/$/${MCOMPRESS_EXT}/g} \
18974806Sru		${DESTDIR}${MANDIR}${page:E}${MANSUBDIR}
19027673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
19127659Spst	${MINSTALL} ${page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} \
19274806Sru		${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page:T:S/$/${MCOMPRESS_EXT}/}
19374806Sru.endif
19427659Spst.endfor
1951844Swollman.endif
1961844Swollman.endif
19711468Sbde
19820935Swosch.if !defined(NOMLINKS) && defined(MLINKS) && !empty(MLINKS)
19915902Swosch	@set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
20015902Swosch	while : ; do \
20115902Swosch		case $$# in \
20215902Swosch			0) break;; \
20315902Swosch			[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
20415902Swosch		esac; \
20515902Swosch		name=$$1; shift; sect=$$1; shift; \
20615902Swosch		l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
20715902Swosch		name=$$1; shift; sect=$$1; shift; \
20815902Swosch		t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
2092353Sbde		${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
21023546Swosch		rm -f $${t} $${t}${MCOMPRESS_EXT}; \
2111844Swollman		ln $${l}${ZEXT} $${t}${ZEXT}; \
21215902Swosch	done
21327673Sbde.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
21427659Spst	@set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
21527659Spst	while : ; do \
21627659Spst		case $$# in \
21727659Spst			0) break;; \
21827659Spst			[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
21927659Spst		esac; \
22027659Spst		name=$$1; shift; sect=$$1; shift; \
22127659Spst		l=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
22227659Spst		name=$$1; shift; sect=$$1; shift; \
22327659Spst		t=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
22427659Spst		${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
22527659Spst		rm -f $${t} $${t}${MCOMPRESS_EXT}; \
22627659Spst		ln $${l}${ZEXT} $${t}${ZEXT}; \
22727659Spst	done
2281638Srgrimes.endif
22927659Spst.endif
23083075Sru
23183075Srumanlint:
23283075Sru.if defined(MAN) && !empty(MAN)
23383075Sru.for page in ${MAN}
23483075Srumanlint: ${page}lint
23583075Sru${page}lint: ${page}
23683075Sru.if defined(MANFILTER)
23783075Sru	${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} -ww >/dev/null
23883075Sru.else
23983075Sru	${MROFF_CMD} -ww ${.ALLSRC} >/dev/null
24083075Sru.endif
24183075Sru.endfor
24283075Sru.endif
243