bsd.man.mk revision 1.119.2.2       1  1.119.2.2  jmcneill #	$NetBSD: bsd.man.mk,v 1.119.2.2 2017/07/14 17:30:32 jmcneill Exp $
      2  1.119.2.2  jmcneill #	@(#)bsd.man.mk	8.1 (Berkeley) 6/8/93
      3  1.119.2.2  jmcneill 
      4  1.119.2.2  jmcneill .include <bsd.init.mk>
      5  1.119.2.2  jmcneill 
      6  1.119.2.2  jmcneill ##### Basic targets
      7  1.119.2.2  jmcneill .PHONY:		catinstall maninstall catpages manpages catlinks manlinks
      8  1.119.2.2  jmcneill .PHONY:		htmlinstall htmlpages htmllinks
      9  1.119.2.2  jmcneill .PHONY:		lintmanpages
     10  1.119.2.2  jmcneill realinstall:	${MANINSTALL}
     11  1.119.2.2  jmcneill 
     12  1.119.2.2  jmcneill # If our install destination is case-preserving, but case-insensitive
     13  1.119.2.2  jmcneill # then we do filesystem comparisons in lower case to make sure that
     14  1.119.2.2  jmcneill # we always refresh the target when needed. In general we don't
     15  1.119.2.2  jmcneill # want to do this, otherwise things like _exit.2 -> _Exit.2 get
     16  1.119.2.2  jmcneill # installed on each build even when they don't need to. Note that
     17  1.119.2.2  jmcneill # the CASE_INSENSITIVE_DEST macro is currently not defined anywhere,
     18  1.119.2.2  jmcneill # and the expansion does not really work because of make(1).
     19  1.119.2.2  jmcneill .if defined(CASE_INSENSITIVE_DEST)
     20  1.119.2.2  jmcneill _FLATTEN?=tl:
     21  1.119.2.2  jmcneill .endif
     22  1.119.2.2  jmcneill 
     23  1.119.2.2  jmcneill ##### Default values
     24  1.119.2.2  jmcneill .if ${USETOOLS} == "yes"
     25  1.119.2.2  jmcneill TMACDEPDIR?=	${TOOLDIR}/share/groff/tmac
     26  1.119.2.2  jmcneill .else
     27  1.119.2.2  jmcneill TMACDEPDIR?=	/usr/share/tmac
     28  1.119.2.2  jmcneill .endif
     29  1.119.2.2  jmcneill 
     30  1.119.2.2  jmcneill HTMLDIR?=	${DESTDIR}${MANDIR}
     31  1.119.2.2  jmcneill .if ${MKMANDOC} == yes && !defined(NOMANDOC)
     32  1.119.2.2  jmcneill CATDEPS?=
     33  1.119.2.2  jmcneill .else
     34  1.119.2.2  jmcneill CATDEPS?=	${TMACDEPDIR}/andoc.tmac \
     35  1.119.2.2  jmcneill 		${TMACDEPDIR}/doc.tmac \
     36  1.119.2.2  jmcneill 		${TMACDEPDIR}/mdoc/doc-common \
     37  1.119.2.2  jmcneill 		${TMACDEPDIR}/mdoc/doc-ditroff \
     38  1.119.2.2  jmcneill 		${TMACDEPDIR}/mdoc/doc-nroff \
     39  1.119.2.2  jmcneill 		${TMACDEPDIR}/mdoc/doc-syms
     40  1.119.2.2  jmcneill .endif
     41  1.119.2.2  jmcneill MANTARGET?=	cat
     42  1.119.2.2  jmcneill 
     43  1.119.2.2  jmcneill MAN?=
     44  1.119.2.2  jmcneill MLINKS?=
     45  1.119.2.2  jmcneill _MSECTIONS=	1 2 3 4 5 6 7 8 9
     46  1.119.2.2  jmcneill _MSECTIONS+=	3lua 9lua
     47  1.119.2.2  jmcneill _MSECTIONREGEX=	${_MSECTIONS:ts|} # e.g. 1|2|3|...
     48  1.119.2.2  jmcneill .SUFFIXES:	${_MSECTIONS:@N@.$N@}
     49  1.119.2.2  jmcneill 
     50  1.119.2.2  jmcneill .if ${MKMANZ} == "no"
     51  1.119.2.2  jmcneill MANCOMPRESS?=
     52  1.119.2.2  jmcneill MANSUFFIX?=
     53  1.119.2.2  jmcneill .else
     54  1.119.2.2  jmcneill MANCOMPRESS?=	${TOOL_GZIP_N} -cf
     55  1.119.2.2  jmcneill MANSUFFIX?=	.gz
     56  1.119.2.2  jmcneill .endif
     57  1.119.2.2  jmcneill 
     58  1.119.2.2  jmcneill # make MANCOMPRESS a filter, so it can be inserted on an as-needed basis
     59  1.119.2.2  jmcneill .if !empty(MANCOMPRESS)
     60  1.119.2.2  jmcneill MANCOMPRESS:=	| ${MANCOMPRESS}
     61  1.119.2.2  jmcneill .endif
     62  1.119.2.2  jmcneill 
     63  1.119.2.2  jmcneill __installpage: .USE
     64  1.119.2.2  jmcneill 	@cmp -s ${.ALLSRC} ${.TARGET} > /dev/null 2>&1 || \
     65  1.119.2.2  jmcneill 	    (${_MKSHMSG_INSTALL} ${.TARGET}; \
     66  1.119.2.2  jmcneill 	     ${_MKSHECHO} "${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
     67  1.119.2.2  jmcneill 		${.ALLSRC} ${.TARGET}" && \
     68  1.119.2.2  jmcneill 	     ${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
     69  1.119.2.2  jmcneill 		${.ALLSRC} ${.TARGET})
     70  1.119.2.2  jmcneill 
     71  1.119.2.2  jmcneill # XXX consider including bsd.links.mk and using __linkinstall instead
     72  1.119.2.2  jmcneill __linkinstallpage: .USE
     73  1.119.2.2  jmcneill 	${_MKSHMSG_INSTALL} ${.TARGET}; \
     74  1.119.2.2  jmcneill 	${_MKSHECHO} "${INSTALL_LINK} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
     75  1.119.2.2  jmcneill 	    ${.ALLSRC} ${.TARGET}" && \
     76  1.119.2.2  jmcneill 	${INSTALL_LINK} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
     77  1.119.2.2  jmcneill 	    ${.ALLSRC} ${.TARGET}
     78  1.119.2.2  jmcneill 
     79  1.119.2.2  jmcneill ##### Build and install rules (source form pages)
     80  1.119.2.2  jmcneill 
     81  1.119.2.2  jmcneill .if ${MKMAN} != "no"
     82  1.119.2.2  jmcneill maninstall:	manpages manlinks
     83  1.119.2.2  jmcneill manpages::	# ensure target exists
     84  1.119.2.2  jmcneill MANPAGES=	${MAN:C/.$/&${MANSUFFIX}/}
     85  1.119.2.2  jmcneill 
     86  1.119.2.2  jmcneill realall:	${MANPAGES}
     87  1.119.2.2  jmcneill .if !empty(MANSUFFIX)
     88  1.119.2.2  jmcneill .NOPATH:	${MANPAGES}
     89  1.119.2.2  jmcneill .SUFFIXES:	${_MSECTIONS:@N@.$N${MANSUFFIX}@}
     90  1.119.2.2  jmcneill 
     91  1.119.2.2  jmcneill ${_MSECTIONS:@N@.$N.$N${MANSUFFIX}@}:			# build rule
     92  1.119.2.2  jmcneill 	${_MKTARGET_FORMAT}
     93  1.119.2.2  jmcneill 	cat ${.IMPSRC} ${MANCOMPRESS} > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
     94  1.119.2.2  jmcneill .endif # !empty(MANSUFFIX)
     95  1.119.2.2  jmcneill 
     96  1.119.2.2  jmcneill .for F in ${MANPAGES:S/${MANSUFFIX}$//:O:u}
     97  1.119.2.2  jmcneill _F:=		${DESTDIR}${MANDIR}/man${F:T:E}${MANSUBDIR}/${F}${MANSUFFIX}
     98  1.119.2.2  jmcneill 
     99  1.119.2.2  jmcneill .if ${MKUPDATE} == "no"
    100  1.119.2.2  jmcneill ${_F}!		${F}${MANSUFFIX} __installpage		# install rule
    101  1.119.2.2  jmcneill .if !defined(BUILD) && !make(all) && !make(${F})
    102  1.119.2.2  jmcneill ${_F}!		.MADE					# no build at install
    103  1.119.2.2  jmcneill .endif
    104  1.119.2.2  jmcneill .else
    105  1.119.2.2  jmcneill ${_F}:		${F}${MANSUFFIX} __installpage		# install rule
    106  1.119.2.2  jmcneill .if !defined(BUILD) && !make(all) && !make(${F})
    107  1.119.2.2  jmcneill ${_F}:		.MADE					# no build at install
    108  1.119.2.2  jmcneill .endif
    109  1.119.2.2  jmcneill .endif
    110  1.119.2.2  jmcneill 
    111  1.119.2.2  jmcneill manpages::	${_F}
    112  1.119.2.2  jmcneill .PRECIOUS:	${_F}					# keep if install fails
    113  1.119.2.2  jmcneill .endfor
    114  1.119.2.2  jmcneill 
    115  1.119.2.2  jmcneill manlinks::						# link install
    116  1.119.2.2  jmcneill 
    117  1.119.2.2  jmcneill .for _src _dst in ${MLINKS}
    118  1.119.2.2  jmcneill _l:=${DESTDIR}${MANDIR}/man${_src:T:E}${MANSUBDIR}/${_src}${MANSUFFIX}
    119  1.119.2.2  jmcneill _t:=${DESTDIR}${MANDIR}/man${_dst:T:E}${MANSUBDIR}/${_dst}${MANSUFFIX}
    120  1.119.2.2  jmcneill 
    121  1.119.2.2  jmcneill # Handle case conflicts carefully, when _dst occurs
    122  1.119.2.2  jmcneill # more than once after case flattening
    123  1.119.2.2  jmcneill .if ${MKUPDATE} == "no" || ${MLINKS:${_FLATTEN}M${_dst:${_FLATTEN}Q}:[\#]} > 1
    124  1.119.2.2  jmcneill ${_t}!		${_l} __linkinstallpage
    125  1.119.2.2  jmcneill .else
    126  1.119.2.2  jmcneill ${_t}:		${_l} __linkinstallpage
    127  1.119.2.2  jmcneill .endif
    128  1.119.2.2  jmcneill 
    129  1.119.2.2  jmcneill manlinks::	${_t}
    130  1.119.2.2  jmcneill .PRECIOUS:	${_t}
    131  1.119.2.2  jmcneill .endfor
    132  1.119.2.2  jmcneill .endif # ${MKMAN} != "no"
    133  1.119.2.2  jmcneill 
    134  1.119.2.2  jmcneill ##### Build and install rules (plaintext pages)
    135  1.119.2.2  jmcneill 
    136  1.119.2.2  jmcneill .if (${MKCATPAGES} != "no") && (${MKMAN} != "no")
    137  1.119.2.2  jmcneill catinstall:	catpages catlinks
    138  1.119.2.2  jmcneill catpages::	# ensure target exists
    139  1.119.2.2  jmcneill CATPAGES=	${MAN:C/\.(${_MSECTIONREGEX})\$/.cat\1${MANSUFFIX}/}
    140  1.119.2.2  jmcneill 
    141  1.119.2.2  jmcneill realall:	${CATPAGES}
    142  1.119.2.2  jmcneill .NOPATH:	${CATPAGES}
    143  1.119.2.2  jmcneill .SUFFIXES:	${_MSECTIONS:@N@.cat$N${MANSUFFIX}@}
    144  1.119.2.2  jmcneill .MADE:	${CATDEPS}
    145  1.119.2.2  jmcneill 
    146  1.119.2.2  jmcneill ${_MSECTIONS:@N@.$N.cat$N${MANSUFFIX}@}: ${CATDEPS}	# build rule
    147  1.119.2.2  jmcneill 	${_MKTARGET_FORMAT}
    148  1.119.2.2  jmcneill .if ${MKMANDOC} == yes && !defined(NOMANDOC)
    149  1.119.2.2  jmcneill 	if test ""${NOMANDOC.${.IMPSRC:T}:tl:Q} != "yes"; then \
    150  1.119.2.2  jmcneill 		${TOOL_MANDOC_ASCII} ${.IMPSRC} ${MANCOMPRESS} \
    151  1.119.2.2  jmcneill 		    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}; \
    152  1.119.2.2  jmcneill 	else \
    153  1.119.2.2  jmcneill 		${TOOL_ROFF_ASCII} -mandoc ${.IMPSRC} ${MANCOMPRESS} \
    154  1.119.2.2  jmcneill 		    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}; \
    155  1.119.2.2  jmcneill 	fi
    156  1.119.2.2  jmcneill .elif defined(USETBL)
    157  1.119.2.2  jmcneill 	${TOOL_TBL} ${.IMPSRC} | ${TOOL_ROFF_ASCII} -mandoc ${MANCOMPRESS} \
    158  1.119.2.2  jmcneill 	    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
    159  1.119.2.2  jmcneill .else
    160  1.119.2.2  jmcneill 	${TOOL_ROFF_ASCII} -mandoc ${.IMPSRC} ${MANCOMPRESS} \
    161  1.119.2.2  jmcneill 	    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
    162  1.119.2.2  jmcneill .endif
    163  1.119.2.2  jmcneill 
    164  1.119.2.2  jmcneill .for F in ${CATPAGES:S/${MANSUFFIX}$//:O:u}
    165  1.119.2.2  jmcneill _F:=		${DESTDIR}${MANDIR}/${F:T:E}${MANSUBDIR}/${F:R}.0${MANSUFFIX}
    166  1.119.2.2  jmcneill 
    167  1.119.2.2  jmcneill .if ${MKUPDATE} == "no"
    168  1.119.2.2  jmcneill ${_F}!		${F}${MANSUFFIX} __installpage		# install rule
    169  1.119.2.2  jmcneill .if !defined(BUILD) && !make(all) && !make(${F})
    170  1.119.2.2  jmcneill ${_F}!		.MADE					# no build at install
    171  1.119.2.2  jmcneill .endif
    172  1.119.2.2  jmcneill .else
    173  1.119.2.2  jmcneill ${_F}:		${F}${MANSUFFIX} __installpage		# install rule
    174  1.119.2.2  jmcneill .if !defined(BUILD) && !make(all) && !make(${F})
    175  1.119.2.2  jmcneill ${_F}:		.MADE					# no build at install
    176  1.119.2.2  jmcneill .endif
    177  1.119.2.2  jmcneill .endif
    178  1.119.2.2  jmcneill 
    179  1.119.2.2  jmcneill catpages::	${_F}
    180  1.119.2.2  jmcneill .PRECIOUS:	${_F}					# keep if install fails
    181  1.119.2.2  jmcneill .endfor
    182  1.119.2.2  jmcneill 
    183  1.119.2.2  jmcneill catlinks::						# link install
    184  1.119.2.2  jmcneill 
    185  1.119.2.2  jmcneill .for _src _dst in ${MLINKS}
    186  1.119.2.2  jmcneill _l:=${DESTDIR}${MANDIR}/cat${_src:T:E}${MANSUBDIR}/${_src:R}.0${MANSUFFIX}
    187  1.119.2.2  jmcneill _t:=${DESTDIR}${MANDIR}/cat${_dst:T:E}${MANSUBDIR}/${_dst:R}.0${MANSUFFIX}
    188  1.119.2.2  jmcneill 
    189  1.119.2.2  jmcneill # Handle case conflicts carefully, when _dst occurs
    190  1.119.2.2  jmcneill # more than once after case flattening
    191  1.119.2.2  jmcneill .if ${MKUPDATE} == "no" || ${MLINKS:${_FLATTEN}M${_dst:${_FLATTEN}Q}:[\#]} > 1
    192  1.119.2.2  jmcneill ${_t}!		${_l} __linkinstallpage
    193  1.119.2.2  jmcneill .else
    194  1.119.2.2  jmcneill ${_t}:		${_l} __linkinstallpage
    195  1.119.2.2  jmcneill .endif
    196  1.119.2.2  jmcneill 
    197  1.119.2.2  jmcneill catlinks::	${_t}
    198  1.119.2.2  jmcneill .PRECIOUS:	${_t}
    199  1.119.2.2  jmcneill .endfor
    200  1.119.2.2  jmcneill .endif # (${MKCATPAGES} != "no") && (${MKMAN} != "no")
    201  1.119.2.2  jmcneill 
    202  1.119.2.2  jmcneill ##### Build and install rules (HTML pages)
    203  1.119.2.2  jmcneill 
    204  1.119.2.2  jmcneill .if (${MKHTML} != "no") && (${MKMAN} != "no")		# {
    205  1.119.2.2  jmcneill htmlinstall:	htmlpages htmllinks
    206  1.119.2.2  jmcneill htmlpages::	# ensure target exists
    207  1.119.2.2  jmcneill HTMLPAGES=	${MAN:C/\.(${_MSECTIONREGEX})\$/.html\1/}
    208  1.119.2.2  jmcneill 
    209  1.119.2.2  jmcneill HTMLLINKS=	${MANSUBDIR:?../:}../html%S/%N.html
    210  1.119.2.2  jmcneill HTMLSTYLE=	${MANSUBDIR:?../:}../style.css
    211  1.119.2.2  jmcneill 
    212  1.119.2.2  jmcneill realall:	${HTMLPAGES}
    213  1.119.2.2  jmcneill .NOPATH:	${HTMLPAGES}
    214  1.119.2.2  jmcneill .SUFFIXES:	${_MSECTIONS:@N@.html$N@}
    215  1.119.2.2  jmcneill 
    216  1.119.2.2  jmcneill ${_MSECTIONS:@N@.$N.html$N@}: 				# build rule
    217  1.119.2.2  jmcneill 	${_MKTARGET_FORMAT}
    218  1.119.2.2  jmcneill .if ${MKMANDOC} == yes && !defined(NOMANDOC)
    219  1.119.2.2  jmcneill 	if test ""${NOMANDOC.${.IMPSRC:T}:tl:Q} != "yes"; then \
    220  1.119.2.2  jmcneill 	    ${TOOL_MANDOC_HTML} -Oman=${HTMLLINKS},style=${HTMLSTYLE} \
    221  1.119.2.2  jmcneill 		${.IMPSRC} > ${.TARGET}.tmp && \
    222  1.119.2.2  jmcneill 		mv ${.TARGET}.tmp ${.TARGET}; \
    223  1.119.2.2  jmcneill 	else \
    224  1.119.2.2  jmcneill 		${TOOL_ROFF_HTML} ${.IMPSRC} ${MANCOMPRESS} \
    225  1.119.2.2  jmcneill 		    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}; \
    226  1.119.2.2  jmcneill 	fi
    227  1.119.2.2  jmcneill .elif defined(USETBL)
    228  1.119.2.2  jmcneill 	${TOOL_TBL} ${.IMPSRC} | ${TOOL_ROFF_HTML} ${MANCOMPRESS} \
    229  1.119.2.2  jmcneill 	    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
    230  1.119.2.2  jmcneill .else
    231  1.119.2.2  jmcneill 	${TOOL_ROFF_HTML} ${.IMPSRC} ${MANCOMPRESS} \
    232  1.119.2.2  jmcneill 	    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
    233  1.119.2.2  jmcneill .endif
    234  1.119.2.2  jmcneill 
    235  1.119.2.2  jmcneill .for F in ${HTMLPAGES:O:u}
    236  1.119.2.2  jmcneill # construct installed path
    237  1.119.2.2  jmcneill _F:=		${HTMLDIR}/${F:T:E}${MANSUBDIR}/${F:R:S-/index$-/x&-}.html
    238  1.119.2.2  jmcneill 
    239  1.119.2.2  jmcneill .if ${MKUPDATE} == "no"
    240  1.119.2.2  jmcneill ${_F}!		${F} __installpage			# install rule
    241  1.119.2.2  jmcneill .if !defined(BUILD) && !make(all) && !make(${F})
    242  1.119.2.2  jmcneill ${_F}!		.MADE					# no build at install
    243  1.119.2.2  jmcneill .endif
    244  1.119.2.2  jmcneill .else
    245  1.119.2.2  jmcneill ${_F}:		${F} __installpage			# install rule
    246  1.119.2.2  jmcneill .if !defined(BUILD) && !make(all) && !make(${F})
    247  1.119.2.2  jmcneill ${_F}:		.MADE					# no build at install
    248  1.119.2.2  jmcneill .endif
    249  1.119.2.2  jmcneill .endif
    250  1.119.2.2  jmcneill 
    251  1.119.2.2  jmcneill htmlpages::	${_F}
    252  1.119.2.2  jmcneill .PRECIOUS:	${_F}					# keep if install fails
    253  1.119.2.2  jmcneill .endfor
    254  1.119.2.2  jmcneill 
    255  1.119.2.2  jmcneill htmllinks::						# link install
    256  1.119.2.2  jmcneill 
    257  1.119.2.2  jmcneill .for _src _dst in ${MLINKS}
    258  1.119.2.2  jmcneill _l:=${HTMLDIR}/html${_src:T:E}${MANSUBDIR}/${_src:R:S-/index$-/x&-}.html
    259  1.119.2.2  jmcneill _t:=${HTMLDIR}/html${_dst:T:E}${MANSUBDIR}/${_dst:R:S-/index$-/x&-}.html
    260  1.119.2.2  jmcneill 
    261  1.119.2.2  jmcneill # Handle case conflicts carefully, when _dst occurs
    262  1.119.2.2  jmcneill # more than once after case flattening
    263  1.119.2.2  jmcneill .if ${MKUPDATE} == "no" || ${MLINKS:${_FLATTEN}M${_dst:${_FLATTEN}Q}:[\#]} > 1
    264  1.119.2.2  jmcneill ${_t}!		${_l} __linkinstallpage
    265  1.119.2.2  jmcneill .else
    266  1.119.2.2  jmcneill ${_t}:		${_l} __linkinstallpage
    267  1.119.2.2  jmcneill .endif
    268  1.119.2.2  jmcneill 
    269  1.119.2.2  jmcneill htmllinks::	${_t}
    270  1.119.2.2  jmcneill .PRECIOUS:	${_t}
    271  1.119.2.2  jmcneill .endfor
    272  1.119.2.2  jmcneill 
    273  1.119.2.2  jmcneill .endif							# }
    274  1.119.2.2  jmcneill 
    275  1.119.2.2  jmcneill ##### Clean rules
    276  1.119.2.2  jmcneill .undef _F
    277  1.119.2.2  jmcneill 
    278  1.119.2.2  jmcneill .if !empty(MAN) && (${MKMAN} != "no")
    279  1.119.2.2  jmcneill .if (${MKCATPAGES} != "no")
    280  1.119.2.2  jmcneill CLEANDIRFILES+= ${CATPAGES}
    281  1.119.2.2  jmcneill .endif
    282  1.119.2.2  jmcneill .if !empty(MANSUFFIX)
    283  1.119.2.2  jmcneill CLEANDIRFILES+= ${MANPAGES} ${CATPAGES:S/${MANSUFFIX}$//}
    284  1.119.2.2  jmcneill .endif
    285  1.119.2.2  jmcneill .if ${MKHTML} != "no"
    286  1.119.2.2  jmcneill CLEANDIRFILES+= ${HTMLPAGES}
    287  1.119.2.2  jmcneill .endif
    288  1.119.2.2  jmcneill .endif
    289  1.119.2.2  jmcneill # (XXX ${CATPAGES:S...} cleans up old .catN files where .catN.gz now used)
    290  1.119.2.2  jmcneill 
    291  1.119.2.2  jmcneill .if !empty(MANPAGES)
    292  1.119.2.2  jmcneill lintmanpages: ${MANPAGES}
    293  1.119.2.2  jmcneill 	${TOOL_MANDOC_LINT} -Tlint -fstrict -Wall,stop ${.ALLSRC}
    294  1.119.2.2  jmcneill .endif
    295  1.119.2.2  jmcneill 
    296  1.119.2.2  jmcneill ##### describe
    297  1.119.2.2  jmcneill describe:
    298  1.119.2.2  jmcneill .for _M in ${MANPAGES}
    299  1.119.2.2  jmcneill 	@echo $$(basename ${_M}) - \
    300  1.119.2.2  jmcneill 		$$(${TOOL_SED} < ${${_M}:P} -n -e '/^\.Nd /{;s/^....//;p;}')
    301  1.119.2.2  jmcneill .endfor
    302  1.119.2.2  jmcneill 
    303  1.119.2.2  jmcneill 
    304  1.119.2.2  jmcneill ##### Pull in related .mk logic
    305  1.119.2.2  jmcneill .include <bsd.obj.mk>
    306  1.119.2.2  jmcneill .include <bsd.files.mk>
    307  1.119.2.2  jmcneill .include <bsd.sys.mk>
    308  1.119.2.2  jmcneill .include <bsd.clean.mk>
    309  1.119.2.2  jmcneill 
    310  1.119.2.2  jmcneill ${TARGETS} catinstall maninstall htmlinstall: # ensure existence
    311