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