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