freebsd-dev/share/mk/bsd.man.mk
Ruslan Ermilov 2bdaf7e81c Don't include bsd.own.mk from sys.mk, this makes it impossible
to use ``.if defined()'' inside bsd.own.mk to test for defines
in individual makefiles.  For example, setting DEBUG_FLAGS in
Makefile didn't take the desired effect on the STRIP assignment.

Added bsd.init.mk (like in NetBSD) that handles the inclusion
of ../Makefile.inc and bsd.own.mk from all bsd.*.mk files that
"build something".

Back out bsd.own.mk,v 1.15: moved OBJFORMAT initialization back
to sys.mk (several source tree makefiles want to check it early)
and removed MACHINE_ARCH initialization (it's hard to see from
looking at the commitlogs what the problem was at the time, but
now it serves no purpose).

Prohibit the direct inclusion of bsd.man.mk and bsd.libnames.mk.

Protect bsd.obj.mk from repetitive inclusion.  Prohibiting the
direct inclusion of bsd.obj.mk might be a good idea too.
2002-04-17 13:49:29 +00:00

247 lines
6.2 KiB
Makefile

# $FreeBSD$
#
# The include file <bsd.man.mk> handles installing manual pages and
# their links.
#
#
# +++ variables +++
#
# DESTDIR Change the tree where the man pages gets installed. [not set]
#
# MANDIR Base path for manual installation. [${SHAREDIR}/man/man]
#
# MANOWN Manual owner. [${SHAREOWN}]
#
# MANGRP Manual group. [${SHAREGRP}]
#
# MANMODE Manual mode. [${NOBINMODE}]
#
# MANSUBDIR Subdirectory under the manual page section, i.e. "/i386"
# or "/tahoe" for machine specific manual pages.
#
# MAN The manual pages to be installed. For sections see
# variable ${SECTIONS}
#
# MCOMPRESS_CMD Program to compress man pages. Output is to
# stdout. [${COMPRESS_CMD}]
#
# MLINKS List of manual page links (using a suffix). The
# linked-to file must come first, the linked file
# second, and there may be multiple pairs. The files
# are hard-linked.
#
# NOMANCOMPRESS If you do not want unformatted manual pages to be
# compressed when they are installed. [not set]
#
# NOMLINKS If you do not want install manual page links. [not set]
#
# MANFILTER command to pipe the raw man page through before compressing
# or installing. Can be used to do sed substitution.
#
# MANBUILDCAT create preformatted manual pages in addition to normal
# pages. [not set]
#
# MROFF_CMD command and flags to create preformatted pages
#
# +++ targets +++
#
# maninstall:
# Install the manual pages and their links.
#
.if !target(__<bsd.init.mk>__)
.error bsd.man.mk cannot be included directly.
.endif
MINSTALL= ${INSTALL} ${COPY} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
CATDIR= ${MANDIR:H:S/$/\/cat/}
CATEXT= .cat
MROFF_CMD?= groff -Tascii -mtty-char -man -t
MCOMPRESS_CMD?= ${COMPRESS_CMD}
MCOMPRESS_EXT?= ${COMPRESS_EXT}
SECTIONS= 1 1aout 2 3 4 5 6 7 8 9
.SUFFIXES: ${SECTIONS:S/^/./g}
# Backwards compatibility.
.if !defined(MAN)
.for sect in ${SECTIONS}
.if defined(MAN${sect}) && !empty(MAN${sect})
MAN+= ${MAN${sect}}
.endif
.endfor
.endif
all-man: _SUBDIR
.if defined(NOMANCOMPRESS)
# Make special arrangements to filter to a temporary file at build time
# for NOMANCOMPRESS.
.if defined(MANFILTER)
FILTEXTENSION= .filt
.else
FILTEXTENSION=
.endif
ZEXT=
.if defined(MANFILTER)
.if defined(MAN) && !empty(MAN)
CLEANFILES+= ${MAN:T:S/$/${FILTEXTENSION}/g}
CLEANFILES+= ${MAN:T:S/$/${CATEXT}${FILTEXTENSION}/g}
.for page in ${MAN}
.for target in ${page:T:S/$/${FILTEXTENSION}/g}
all-man: ${target}
${target}: ${page}
${MANFILTER} < ${.ALLSRC} > ${.TARGET}
.endfor
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for target in ${page:T:S/$/${CATEXT}${FILTEXTENSION}/g}
all-man: ${target}
${target}: ${page}
${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} > ${.TARGET}
.endfor
.endif
.endfor
.endif
.else
.if defined(MAN) && !empty(MAN)
CLEANFILES+= ${MAN:T:S/$/${CATEXT}/g}
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for page in ${MAN}
.for target in ${page:T:S/$/${CATEXT}/g}
all-man: ${target}
${target}: ${page}
${MROFF_CMD} ${.ALLSRC} > ${.TARGET}
.endfor
.endfor
.endif
.endif
.endif
.else
ZEXT= ${MCOMPRESS_EXT}
.if defined(MAN) && !empty(MAN)
CLEANFILES+= ${MAN:T:S/$/${MCOMPRESS_EXT}/g}
CLEANFILES+= ${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g}
.for page in ${MAN}
.for target in ${page:T:S/$/${MCOMPRESS_EXT}/}
all-man: ${target}
${target}: ${page}
.if defined(MANFILTER)
${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
.else
${MCOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
.endif
.endfor
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for target in ${page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/}
all-man: ${target}
${target}: ${page}
.if defined(MANFILTER)
${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} | ${MCOMPRESS_CMD} > ${.TARGET}
.else
${MROFF_CMD} ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
.endif
.endfor
.endif
.endfor
.endif
.endif
maninstall:
.if defined(MAN) && !empty(MAN)
maninstall: ${MAN}
.if defined(NOMANCOMPRESS)
.if defined(MANFILTER)
.for page in ${MAN}
${MINSTALL} ${page:T:S/$/${FILTEXTENSION}/g} \
${DESTDIR}${MANDIR}${page:E}${MANSUBDIR}/${page}
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
${MINSTALL} ${page:T:S/$/${CATEXT}${FILTEXTENSION}/g} \
${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page}
.endif
.endfor
.else
@set `echo ${.ALLSRC} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
while : ; do \
case $$# in \
0) break;; \
1) echo "warn: missing extension: $$1"; break;; \
esac; \
page=$$1; shift; sect=$$1; shift; \
d=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}; \
${ECHO} ${MINSTALL} $${page} $${d}; \
${MINSTALL} $${page} $${d}; \
done
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for page in ${MAN}
${MINSTALL} ${page:T:S/$/${CATEXT}/} \
${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page:T}
.endfor
.endif
.endif
.else
.for page in ${MAN}
${MINSTALL} ${page:T:S/$/${MCOMPRESS_EXT}/g} \
${DESTDIR}${MANDIR}${page:E}${MANSUBDIR}
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
${MINSTALL} ${page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} \
${DESTDIR}${CATDIR}${page:E}${MANSUBDIR}/${page:T:S/$/${MCOMPRESS_EXT}/}
.endif
.endfor
.endif
.endif
.if !defined(NOMLINKS) && defined(MLINKS) && !empty(MLINKS)
@set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
while : ; do \
case $$# in \
0) break;; \
[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
esac; \
name=$$1; shift; sect=$$1; shift; \
l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
name=$$1; shift; sect=$$1; shift; \
t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
rm -f $${t} $${t}${MCOMPRESS_EXT}; \
ln $${l}${ZEXT} $${t}${ZEXT}; \
done
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
@set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
while : ; do \
case $$# in \
0) break;; \
[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
esac; \
name=$$1; shift; sect=$$1; shift; \
l=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
name=$$1; shift; sect=$$1; shift; \
t=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
rm -f $${t} $${t}${MCOMPRESS_EXT}; \
ln $${l}${ZEXT} $${t}${ZEXT}; \
done
.endif
.endif
manlint:
.if defined(MAN) && !empty(MAN)
.for page in ${MAN}
manlint: ${page}lint
${page}lint: ${page}
.if defined(MANFILTER)
${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} -ww -z
.else
${MROFF_CMD} -ww -z ${.ALLSRC}
.endif
.endfor
.endif