Home | History | Annotate | Line # | Download | only in mk
bsd.man.mk revision 1.93.2.1
      1  1.93.2.1       riz #	$NetBSD: bsd.man.mk,v 1.93.2.1 2005/05/07 14:55:20 riz Exp $
      2      1.26     mikel #	@(#)bsd.man.mk	8.1 (Berkeley) 6/8/93
      3       1.1       cgd 
      4      1.64        tv .include <bsd.init.mk>
      5      1.34   mycroft 
      6      1.64        tv ##### Basic targets
      7      1.91     lukem .PHONY:		catinstall maninstall catpages manpages
      8      1.32   mycroft realinstall:	${MANINSTALL}
      9      1.28   mycroft 
     10      1.64        tv ##### Default values
     11      1.66        tv .if ${USETOOLS} == "yes"
     12      1.69       jmc TMACDEPDIR?=	${TOOLDIR}/share/groff/tmac
     13      1.66        tv .else
     14      1.93       jmc TMACDEPDIR?=	/usr/share/tmac
     15      1.69       jmc .endif
     16      1.66        tv 
     17      1.56      phil HTMLDIR?=	${DESTDIR}/usr/share/man
     18      1.80       wiz CATDEPS?=	${TMACDEPDIR}/andoc.tmac \
     19      1.80       wiz 		${TMACDEPDIR}/doc.tmac \
     20      1.80       wiz 		${TMACDEPDIR}/mdoc/doc-common \
     21      1.80       wiz 		${TMACDEPDIR}/mdoc/doc-ditroff \
     22      1.80       wiz 		${TMACDEPDIR}/mdoc/doc-nroff \
     23      1.80       wiz 		${TMACDEPDIR}/mdoc/doc-syms
     24      1.80       wiz HTMLDEPS?=	${TMACDEPDIR}/doc2html.tmac
     25      1.28   mycroft MANTARGET?=	cat
     26      1.66        tv 
     27      1.64        tv MAN?=
     28      1.64        tv MLINKS?=
     29      1.64        tv _MNUMBERS=	1 2 3 4 5 6 7 8 9
     30      1.64        tv .SUFFIXES:	${_MNUMBERS:@N@.$N@}
     31      1.64        tv 
     32      1.82     lukem .if ${MKMANZ} == "no"
     33      1.82     lukem MANCOMPRESS?=
     34      1.82     lukem MANSUFFIX?=
     35      1.82     lukem .else
     36      1.82     lukem MANCOMPRESS?=	gzip -cf
     37      1.82     lukem MANSUFFIX?=	.gz
     38      1.82     lukem .endif
     39      1.64        tv 
     40      1.64        tv # make MANCOMPRESS a filter, so it can be inserted on an as-needed basis
     41      1.64        tv .if !empty(MANCOMPRESS)
     42      1.64        tv MANCOMPRESS:=	| ${MANCOMPRESS}
     43      1.20       cgd .endif
     44       1.1       cgd 
     45      1.25  christos __installpage: .USE
     46      1.60    simonb 	@cmp -s ${.ALLSRC} ${.TARGET} > /dev/null 2>&1 || \
     47      1.90     lukem 	    (${_MKSHMSG_INSTALL} ${.TARGET}; \
     48      1.87     lukem 	     ${_MKSHECHO} "${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
     49      1.79     perry 		${SYSPKGDOCTAG} ${.ALLSRC} ${.TARGET}" && \
     50      1.64        tv 	     ${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \
     51      1.79     perry 		${SYSPKGDOCTAG} ${.ALLSRC} ${.TARGET})
     52      1.25  christos 
     53      1.64        tv ##### Build and install rules (source form pages)
     54      1.25  christos 
     55      1.64        tv .if ${MKMAN} != "no"
     56      1.64        tv maninstall:	manlinks
     57      1.64        tv manpages::	# ensure target exists
     58      1.65     enami MANPAGES=	${MAN:C/.$/&${MANSUFFIX}/}
     59      1.64        tv 
     60      1.72        tv realall:	${MANPAGES}
     61      1.64        tv .if !empty(MANSUFFIX)
     62      1.64        tv .NOPATH:	${MANPAGES}
     63      1.64        tv .SUFFIXES:	${_MNUMBERS:@N@.$N${MANSUFFIX}@}
     64      1.64        tv 
     65      1.64        tv ${_MNUMBERS:@N@.$N.$N${MANSUFFIX}@}:			# build rule
     66      1.73       mrg 	cat ${.IMPSRC} ${MANCOMPRESS} > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
     67      1.64        tv .endif # !empty(MANSUFFIX)
     68      1.64        tv 
     69      1.64        tv .for F in ${MANPAGES:S/${MANSUFFIX}$//:O:u}
     70      1.64        tv _F:=		${DESTDIR}${MANDIR}/man${F:T:E}${MANSUBDIR}/${F}${MANSUFFIX}
     71      1.64        tv 
     72      1.83     lukem .if ${MKUPDATE} == "no"
     73      1.78   mycroft ${_F}!		${F}${MANSUFFIX} __installpage		# install rule
     74      1.78   mycroft .if !defined(BUILD) && !make(all) && !make(${F})
     75      1.78   mycroft ${_F}!		.MADE					# no build at install
     76      1.78   mycroft .endif
     77      1.78   mycroft .else
     78      1.64        tv ${_F}:		${F}${MANSUFFIX} __installpage		# install rule
     79      1.64        tv .if !defined(BUILD) && !make(all) && !make(${F})
     80      1.64        tv ${_F}:		.MADE					# no build at install
     81      1.53   mycroft .endif
     82      1.78   mycroft .endif
     83      1.78   mycroft 
     84      1.78   mycroft manpages::	${_F}
     85      1.78   mycroft .PRECIOUS:	${_F}					# keep if install fails
     86      1.64        tv .endfor
     87      1.52   mycroft 
     88      1.91     lukem manlinks: .PHONY manpages				# symlink install
     89      1.64        tv .if !empty(MLINKS)
     90      1.25  christos 	@set ${MLINKS}; \
     91      1.25  christos 	while test $$# -ge 2; do \
     92      1.64        tv 		name=$$1; shift; \
     93      1.64        tv 		dir=${DESTDIR}${MANDIR}/man$${name##*.}; \
     94      1.64        tv 		l=$${dir}${MANSUBDIR}/$${name}${MANSUFFIX}; \
     95      1.64        tv 		name=$$1; shift; \
     96      1.64        tv 		dir=${DESTDIR}${MANDIR}/man$${name##*.}; \
     97      1.64        tv 		t=$${dir}${MANSUBDIR}/$${name}${MANSUFFIX}; \
     98      1.55    itojun 		if test $$l -nt $$t -o ! -f $$t; then \
     99      1.90     lukem 			${_MKSHMSG_INSTALL} $$t; \
    100      1.89     lukem 			${_MKSHECHO} ${INSTALL_LINK} ${SYSPKGDOCTAG} $$l $$t; \
    101      1.79     perry 			${INSTALL_LINK} ${SYSPKGDOCTAG} $$l $$t; \
    102      1.55    itojun 		fi; \
    103      1.19    brezak 	done
    104      1.19    brezak .endif
    105      1.64        tv .endif # ${MKMAN} != "no"
    106      1.64        tv 
    107      1.64        tv ##### Build and install rules (plaintext pages)
    108      1.64        tv 
    109      1.64        tv .if (${MKCATPAGES} != "no") && (${MKMAN} != "no")
    110      1.64        tv catinstall:	catlinks
    111      1.64        tv catpages::	# ensure target exists
    112      1.64        tv CATPAGES=	${MAN:C/\.([1-9])$/.cat\1${MANSUFFIX}/}
    113      1.64        tv 
    114      1.64        tv realall:	${CATPAGES}
    115      1.64        tv .NOPATH:	${CATPAGES}
    116      1.64        tv .SUFFIXES:	${_MNUMBERS:@N@.cat$N${MANSUFFIX}@}
    117      1.75  christos .MADE:	${CATDEPS}
    118      1.76      ross .MADE:	${HTMLDEPS}
    119      1.64        tv 
    120      1.64        tv ${_MNUMBERS:@N@.$N.cat$N${MANSUFFIX}@}: ${CATDEPS}	# build rule
    121      1.88     lukem 	${_MKTARGET_FORMAT}
    122      1.64        tv .if defined(USETBL)
    123      1.81     lukem 	${TOOL_TBL} ${.IMPSRC} | ${TOOL_ROFF_ASCII} -mandoc ${MANCOMPRESS} \
    124      1.81     lukem 	    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
    125      1.64        tv .else
    126      1.81     lukem 	${TOOL_ROFF_ASCII} -mandoc ${.IMPSRC} ${MANCOMPRESS} \
    127      1.81     lukem 	    > ${.TARGET}.tmp && mv ${.TARGET}.tmp ${.TARGET}
    128      1.64        tv .endif
    129      1.64        tv 
    130      1.64        tv .for F in ${CATPAGES:S/${MANSUFFIX}$//:O:u}
    131      1.64        tv _F:=		${DESTDIR}${MANDIR}/${F:T:E}${MANSUBDIR}/${F:R}.0${MANSUFFIX}
    132      1.78   mycroft 
    133      1.83     lukem .if ${MKUPDATE} == "no"
    134      1.78   mycroft ${_F}!		${F}${MANSUFFIX} __installpage		# install rule
    135      1.78   mycroft .if !defined(BUILD) && !make(all) && !make(${F})
    136      1.78   mycroft ${_F}!		.MADE					# no build at install
    137      1.78   mycroft .endif
    138      1.78   mycroft .else
    139      1.64        tv ${_F}:		${F}${MANSUFFIX} __installpage		# install rule
    140      1.64        tv .if !defined(BUILD) && !make(all) && !make(${F})
    141      1.64        tv ${_F}:		.MADE					# no build at install
    142      1.43     lukem .endif
    143      1.78   mycroft .endif
    144      1.78   mycroft 
    145      1.78   mycroft catpages::	${_F}
    146      1.78   mycroft .PRECIOUS:	${_F}					# keep if install fails
    147      1.64        tv .endfor
    148      1.25  christos 
    149      1.91     lukem catlinks: .PHONY catpages				# symlink install
    150      1.64        tv .if !empty(MLINKS)
    151       1.1       cgd 	@set ${MLINKS}; \
    152       1.1       cgd 	while test $$# -ge 2; do \
    153      1.64        tv 		name=$$1; shift; \
    154      1.64        tv 		dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \
    155      1.64        tv 		l=$${dir}${MANSUBDIR}/$${name%.*}.0${MANSUFFIX}; \
    156      1.64        tv 		name=$$1; shift; \
    157      1.64        tv 		dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \
    158      1.64        tv 		t=$${dir}${MANSUBDIR}/$${name%.*}.0${MANSUFFIX}; \
    159      1.55    itojun 		if test $$l -nt $$t -o ! -f $$t; then \
    160      1.90     lukem 			${_MKSHMSG_INSTALL} $$t; \
    161      1.89     lukem 			${_MKSHECHO} ${INSTALL_LINK} ${SYSPKGDOCTAG} $$l $$t; \
    162      1.79     perry 			${INSTALL_LINK} ${SYSPKGDOCTAG} $$l $$t; \
    163      1.55    itojun 		fi; \
    164      1.20       cgd 	done
    165       1.8   mycroft .endif
    166      1.64        tv .endif # (${MKCATPAGES} != "no") && (${MKMAN} != "no")
    167      1.56      phil 
    168      1.64        tv ##### Build and install rules (HTML pages)
    169      1.56      phil 
    170      1.82     lukem .if ${MKHTML} != "no"					# {
    171      1.91     lukem installhtml:	.PHONY htmlpages
    172      1.64        tv htmlpages::	# ensure target exists
    173      1.64        tv HTMLPAGES=	${MAN:C/\.([1-9])$/.html\1/}
    174      1.64        tv 
    175      1.91     lukem html:		.PHONY ${HTMLPAGES}
    176      1.64        tv .NOPATH:	${HTMLPAGES}
    177      1.64        tv .SUFFIXES:	${_MNUMBERS:@N@.html$N@}
    178      1.64        tv 
    179      1.76      ross ${_MNUMBERS:@N@.$N.html$N@}: ${HTMLDEPS}			# build rule
    180      1.88     lukem 	${_MKTARGET_FORMAT}
    181      1.81     lukem 	${TOOL_ROFF_HTML} ${.IMPSRC} > ${.TARGET}.tmp && \
    182      1.81     lukem 	    mv ${.TARGET}.tmp ${.TARGET}
    183      1.64        tv 
    184      1.64        tv .for F in ${HTMLPAGES:O:u}
    185      1.77      ross # construct installed path
    186      1.77      ross _F:=		${HTMLDIR}/${F:T:E}${MANSUBDIR}/${F:R:S-/index$-/x&-}.html
    187      1.78   mycroft 
    188      1.83     lukem .if ${MKUPDATE} == "no"
    189      1.78   mycroft ${_F}!		${F} __installpage			# install rule
    190      1.78   mycroft .if !defined(BUILD) && !make(all) && !make(${F})
    191      1.78   mycroft ${_F}!		.MADE					# no build at install
    192      1.78   mycroft .endif
    193      1.78   mycroft .else
    194      1.64        tv ${_F}:		${F} __installpage			# install rule
    195      1.64        tv .if !defined(BUILD) && !make(all) && !make(${F})
    196      1.64        tv ${_F}:		.MADE					# no build at install
    197      1.64        tv .endif
    198      1.78   mycroft .endif
    199      1.78   mycroft 
    200      1.78   mycroft htmlpages::	${_F}
    201      1.78   mycroft .PRECIOUS:	${_F}					# keep if install fails
    202      1.56      phil .endfor
    203      1.56      phil 
    204      1.91     lukem cleanhtml: .PHONY
    205      1.56      phil 	rm -f ${HTMLPAGES}
    206      1.82     lukem .endif							# }
    207      1.31   mycroft 
    208      1.64        tv ##### Clean rules
    209      1.64        tv .undef _F
    210       1.8   mycroft 
    211      1.64        tv cleandir: cleanman
    212  1.93.2.1       riz .if !empty(CLEANFILES)
    213  1.93.2.1       riz 	rm -f ${CLEANFILES}
    214  1.93.2.1       riz .endif
    215  1.93.2.1       riz 
    216      1.91     lukem cleanman: .PHONY
    217      1.64        tv .if !empty(MAN) && (${MKMAN} != "no")
    218      1.64        tv .if (${MKCATPAGES} != "no")
    219      1.25  christos 	rm -f ${CATPAGES}
    220       1.1       cgd .endif
    221      1.64        tv .if !empty(MANSUFFIX)
    222      1.64        tv 	rm -f ${MANPAGES} ${CATPAGES:S/${MANSUFFIX}$//}
    223      1.64        tv .endif
    224      1.64        tv .endif
    225      1.64        tv # (XXX ${CATPAGES:S...} cleans up old .catN files where .catN.gz now used)
    226      1.64        tv 
    227      1.64        tv ##### Pull in related .mk logic
    228      1.64        tv .include <bsd.obj.mk>
    229      1.84     lukem .include <bsd.files.mk>
    230      1.67   thorpej .include <bsd.sys.mk>
    231      1.34   mycroft 
    232      1.64        tv ${TARGETS} catinstall maninstall: # ensure existence
    233