mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-22 11:14:18 +01:00
d2a824c29d
MacOS has case insensitive filesystems by default. So trying to link between foo.X and FOO.X causes an error of some sort since we unlink the old foo file destroying the newly installed foo due to the insensitive nature of the FS. Assume that this is true on darwin/macos, though it is only try by default there. Perhaps install should grow smarts to know when this is the case, though that looked much trickier. There didn't seem to be a flag to check. This would be better, imho, since we could still write the METALOG data correctly (images created from these metalogs are imperfect due to this relatively issue...). Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D44347
261 lines
7.0 KiB
Makefile
261 lines
7.0 KiB
Makefile
#
|
|
# 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.
|
|
#
|
|
# NO_MLINKS 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]
|
|
#
|
|
# MANDOC_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
|
|
|
|
.if ${MK_MANSPLITPKG} == "no"
|
|
MINSTALL?= ${INSTALL} ${TAG_ARGS} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
|
|
.else
|
|
MINSTALL?= ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},man} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
|
|
.endif
|
|
|
|
CATDIR= ${MANDIR:H:S/$/\/cat/}
|
|
CATEXT= .cat
|
|
MANDOC_CMD?= mandoc -Tascii
|
|
|
|
MCOMPRESS_CMD?= ${COMPRESS_CMD}
|
|
MCOMPRESS_EXT?= ${COMPRESS_EXT}
|
|
|
|
SECTIONS= 1 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:
|
|
|
|
.if ${MK_MANCOMPRESS} == "no"
|
|
|
|
# Make special arrangements to filter to a temporary file at build time
|
|
# for MK_MANCOMPRESS == no.
|
|
.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} | ${MANDOC_CMD} > ${.TARGET}
|
|
.endfor
|
|
.endif
|
|
.endfor
|
|
.endif # !empty(MAN)
|
|
.else # !defined(MANFILTER)
|
|
.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}
|
|
${MANDOC_CMD} ${.ALLSRC} > ${.TARGET}
|
|
.endfor
|
|
.endfor
|
|
.else
|
|
all-man: ${MAN}
|
|
.endif
|
|
.endif
|
|
.endif # defined(MANFILTER)
|
|
|
|
.else # ${MK_MANCOMPRESS} == "yes"
|
|
|
|
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} | ${MANDOC_CMD} | ${MCOMPRESS_CMD} > ${.TARGET}
|
|
.else
|
|
${MANDOC_CMD} ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
|
|
.endif
|
|
.endfor
|
|
.endif
|
|
.endfor
|
|
.endif
|
|
|
|
.endif # ${MK_MANCOMPRESS} == "no"
|
|
|
|
.if !defined(NO_MLINKS) && defined(MLINKS) && !empty(MLINKS)
|
|
.for _oname _osect _dname _dsect in ${MLINKS:C/\.([^.]*)$/.\1 \1/}
|
|
_MANLINKS+= ${MANDIR}${_osect}${MANSUBDIR}/${_oname} \
|
|
${MANDIR}${_dsect}${MANSUBDIR}/${_dname}
|
|
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
|
|
_MANLINKS+= ${CATDIR}${_osect}${MANSUBDIR}/${_oname} \
|
|
${CATDIR}${_dsect}${MANSUBDIR}/${_dname}
|
|
.endif
|
|
.endfor
|
|
.endif
|
|
|
|
.if defined(MAN) && !empty(MAN)
|
|
.if ${MK_STAGING_MAN} == "yes"
|
|
STAGE_TARGETS+= stage_files
|
|
_mansets:= ${MAN:E:O:u:M*[1-9]:@s@man$s@}
|
|
STAGE_SETS+= ${_mansets}
|
|
.for _page in ${MAN}
|
|
stage_files.man${_page:T:E}: ${_page}
|
|
.if target(${_page}${MCOMPRESS_EXT})
|
|
stage_files.man${_page:T:E}: ${_page}${MCOMPRESS_EXT}
|
|
.endif
|
|
STAGE_DIR.man${_page:T:E}?= ${STAGE_OBJTOP}${MANDIR}${_page:T:E}${MANSUBDIR}
|
|
.endfor
|
|
.if !defined(NO_MLINKS) && !empty(MLINKS)
|
|
STAGE_SETS+= mlinks
|
|
STAGE_TARGETS+= stage_links
|
|
STAGE_LINKS.mlinks:= ${MLINKS:M*.[1-9]:@f@${f:S,^,${MANDIR}${f:E}${MANSUBDIR}/,}@}
|
|
stage_links.mlinks: ${_mansets:@s@stage_files.$s@}
|
|
.endif
|
|
.endif
|
|
.endif
|
|
|
|
maninstall:
|
|
.if defined(MAN) && !empty(MAN)
|
|
maninstall: ${MAN}
|
|
.if ${MK_MANCOMPRESS} == "no"
|
|
.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 # !defined(MANFILTER)
|
|
@set ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}; \
|
|
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 # defined(MANFILTER)
|
|
.else # ${MK_MANCOMPRESS} == "yes"
|
|
.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 # ${MK_MANCOMPRESS} == "no"
|
|
.endif
|
|
.for l t in ${_MANLINKS}
|
|
# On MacOS, assume case folding FS, and don't install links from foo.x to FOO.x.
|
|
.if ${.MAKE.OS} != "Darwin" || ${l:tu} != ${t:tu}
|
|
.if ${MK_MANSPLITPKG} == "no"
|
|
rm -f ${DESTDIR}${t} ${DESTDIR}${t}${MCOMPRESS_EXT}; \
|
|
${INSTALL_MANLINK} ${TAG_ARGS} ${DESTDIR}${l}${ZEXT} ${DESTDIR}${t}${ZEXT}
|
|
.else
|
|
rm -f ${DESTDIR}${t} ${DESTDIR}${t}${MCOMPRESS_EXT}; \
|
|
${INSTALL_MANLINK} ${TAG_ARGS:D${TAG_ARGS},man} ${DESTDIR}${l}${ZEXT} ${DESTDIR}${t}${ZEXT}
|
|
.endif
|
|
.endif
|
|
.endfor
|
|
|
|
manlint:
|
|
.if defined(MAN) && !empty(MAN)
|
|
.for __page in ${MAN}
|
|
manlint: ${__page}lint
|
|
${__page}lint: ${__page}
|
|
.if defined(MANFILTER)
|
|
${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} -Tlint
|
|
.else
|
|
${MANDOC_CMD} -Tlint ${.ALLSRC}
|
|
.endif
|
|
.endfor
|
|
.endif
|