1 1.64 tv # $NetBSD: bsd.man.mk,v 1.64 2001/11/02 05:21:51 tv 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.37 thorpej TMACDIR?= ${DESTDIR}/usr/share/tmac 13 1.56 phil HTMLDIR?= ${DESTDIR}/usr/share/man 14 1.37 thorpej CATDEPS?= ${TMACDIR}/tmac.andoc \ 15 1.37 thorpej ${TMACDIR}/tmac.doc \ 16 1.37 thorpej ${TMACDIR}/tmac.doc-ditroff \ 17 1.37 thorpej ${TMACDIR}/tmac.doc-common \ 18 1.37 thorpej ${TMACDIR}/tmac.doc-nroff \ 19 1.37 thorpej ${TMACDIR}/tmac.doc-syms 20 1.28 mycroft MANTARGET?= cat 21 1.46 mycroft NROFF?= nroff -Tascii 22 1.57 phil GROFF?= groff -Tascii 23 1.64 tv GROFF_HTML?= groff -Tlatin1 -mdoc2html -P-b -P-o -P-u 24 1.33 phil TBL?= tbl 25 1.12 jtc 26 1.64 tv MAN?= 27 1.64 tv MLINKS?= 28 1.64 tv _MNUMBERS= 1 2 3 4 5 6 7 8 9 29 1.64 tv .SUFFIXES: ${_MNUMBERS:@N@.$N@} 30 1.64 tv 31 1.64 tv MANCOMPRESS?= ${MANZ:Dgzip -cf} 32 1.64 tv MANSUFFIX?= ${MANZ:D.gz} 33 1.64 tv 34 1.64 tv # make MANCOMPRESS a filter, so it can be inserted on an as-needed basis 35 1.64 tv .if !empty(MANCOMPRESS) 36 1.64 tv MANCOMPRESS:= | ${MANCOMPRESS} 37 1.20 cgd .endif 38 1.1 cgd 39 1.25 christos __installpage: .USE 40 1.60 simonb @cmp -s ${.ALLSRC} ${.TARGET} > /dev/null 2>&1 || \ 41 1.64 tv (echo "${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ 42 1.64 tv ${.ALLSRC} ${.TARGET}" && \ 43 1.64 tv ${INSTALL_FILE} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} \ 44 1.64 tv ${.ALLSRC} ${.TARGET}) 45 1.25 christos 46 1.64 tv ##### Build and install rules (source form pages) 47 1.25 christos 48 1.64 tv .if ${MKMAN} != "no" 49 1.64 tv maninstall: manlinks 50 1.64 tv manpages:: # ensure target exists 51 1.64 tv MANPAGES= ${MAN:C/$/${MANSUFFIX}/} 52 1.64 tv 53 1.64 tv .if !empty(MANSUFFIX) 54 1.64 tv realall: ${MANPAGES} 55 1.64 tv .NOPATH: ${MANPAGES} 56 1.64 tv .SUFFIXES: ${_MNUMBERS:@N@.$N${MANSUFFIX}@} 57 1.64 tv 58 1.64 tv ${_MNUMBERS:@N@.$N.$N${MANSUFFIX}@}: # build rule 59 1.64 tv cat ${.IMPSRC} ${MANCOMPRESS} > ${.TARGET} 60 1.64 tv .endif # !empty(MANSUFFIX) 61 1.64 tv 62 1.64 tv .for F in ${MANPAGES:S/${MANSUFFIX}$//:O:u} 63 1.64 tv _F:= ${DESTDIR}${MANDIR}/man${F:T:E}${MANSUBDIR}/${F}${MANSUFFIX} 64 1.64 tv 65 1.64 tv ${_F}: ${F}${MANSUFFIX} __installpage # install rule 66 1.64 tv manpages:: ${_F} 67 1.64 tv .PRECIOUS: ${_F} # keep if install fails 68 1.64 tv .PHONY: ${UPDATE:U${_F}} # clobber unless UPDATE 69 1.64 tv .if !defined(BUILD) && !make(all) && !make(${F}) 70 1.64 tv ${_F}: .MADE # no build at install 71 1.53 mycroft .endif 72 1.64 tv .endfor 73 1.52 mycroft 74 1.64 tv manlinks: manpages # symlink install 75 1.64 tv .if !empty(MLINKS) 76 1.25 christos @set ${MLINKS}; \ 77 1.25 christos while test $$# -ge 2; do \ 78 1.64 tv name=$$1; shift; \ 79 1.64 tv dir=${DESTDIR}${MANDIR}/man$${name##*.}; \ 80 1.64 tv l=$${dir}${MANSUBDIR}/$${name}${MANSUFFIX}; \ 81 1.64 tv name=$$1; shift; \ 82 1.64 tv dir=${DESTDIR}${MANDIR}/man$${name##*.}; \ 83 1.64 tv t=$${dir}${MANSUBDIR}/$${name}${MANSUFFIX}; \ 84 1.55 itojun if test $$l -nt $$t -o ! -f $$t; then \ 85 1.55 itojun echo $$t -\> $$l; \ 86 1.55 itojun ln -f $$l $$t; \ 87 1.55 itojun fi; \ 88 1.19 brezak done 89 1.19 brezak .endif 90 1.64 tv .endif # ${MKMAN} != "no" 91 1.64 tv 92 1.64 tv ##### Build and install rules (plaintext pages) 93 1.64 tv 94 1.64 tv .if (${MKCATPAGES} != "no") && (${MKMAN} != "no") 95 1.64 tv catinstall: catlinks 96 1.64 tv catpages:: # ensure target exists 97 1.64 tv CATPAGES= ${MAN:C/\.([1-9])$/.cat\1${MANSUFFIX}/} 98 1.64 tv 99 1.64 tv realall: ${CATPAGES} 100 1.64 tv .NOPATH: ${CATPAGES} 101 1.64 tv .SUFFIXES: ${_MNUMBERS:@N@.cat$N${MANSUFFIX}@} 102 1.64 tv 103 1.64 tv ${_MNUMBERS:@N@.$N.cat$N${MANSUFFIX}@}: ${CATDEPS} # build rule 104 1.64 tv .if defined(USETBL) 105 1.64 tv ${TBL} ${.IMPSRC} | ${NROFF} -mandoc ${MANCOMPRESS} > ${.TARGET} 106 1.64 tv .else 107 1.64 tv ${NROFF} -mandoc ${.IMPSRC} ${MANCOMPRESS} > ${.TARGET} 108 1.64 tv .endif 109 1.64 tv 110 1.64 tv .for F in ${CATPAGES:S/${MANSUFFIX}$//:O:u} 111 1.64 tv _F:= ${DESTDIR}${MANDIR}/${F:T:E}${MANSUBDIR}/${F:R}.0${MANSUFFIX} 112 1.64 tv ${_F}: ${F}${MANSUFFIX} __installpage # install rule 113 1.64 tv catpages:: ${_F} 114 1.64 tv .PRECIOUS: ${_F} # keep if install fails 115 1.64 tv .PHONY: ${UPDATE:U${_F}} # noclobber install 116 1.64 tv .if !defined(BUILD) && !make(all) && !make(${F}) 117 1.64 tv ${_F}: .MADE # no build at install 118 1.43 lukem .endif 119 1.64 tv .endfor 120 1.25 christos 121 1.64 tv catlinks: catpages # symlink install 122 1.64 tv .if !empty(MLINKS) 123 1.1 cgd @set ${MLINKS}; \ 124 1.1 cgd while test $$# -ge 2; do \ 125 1.64 tv name=$$1; shift; \ 126 1.64 tv dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \ 127 1.64 tv l=$${dir}${MANSUBDIR}/$${name%.*}.0${MANSUFFIX}; \ 128 1.64 tv name=$$1; shift; \ 129 1.64 tv dir=${DESTDIR}${MANDIR}/cat$${name##*.}; \ 130 1.64 tv t=$${dir}${MANSUBDIR}/$${name%.*}.0${MANSUFFIX}; \ 131 1.55 itojun if test $$l -nt $$t -o ! -f $$t; then \ 132 1.55 itojun echo $$t -\> $$l; \ 133 1.55 itojun ln -f $$l $$t; \ 134 1.55 itojun fi; \ 135 1.20 cgd done 136 1.8 mycroft .endif 137 1.64 tv .endif # (${MKCATPAGES} != "no") && (${MKMAN} != "no") 138 1.56 phil 139 1.64 tv ##### Build and install rules (HTML pages) 140 1.56 phil 141 1.64 tv .if !defined(NOHTML) 142 1.64 tv installhtml: htmlpages 143 1.64 tv htmlpages:: # ensure target exists 144 1.64 tv HTMLPAGES= ${MAN:C/\.([1-9])$/.html\1/} 145 1.64 tv 146 1.64 tv html: ${HTMLPAGES} 147 1.64 tv .NOPATH: ${HTMLPAGES} 148 1.64 tv .SUFFIXES: ${_MNUMBERS:@N@.html$N@} 149 1.64 tv 150 1.64 tv ${_MNUMBERS:@N@.$N.html$N@}: ${CATDEPS} # build rule 151 1.64 tv ${GROFF_HTML} ${.IMPSRC} > ${.TARGET} 152 1.64 tv 153 1.64 tv .for F in ${HTMLPAGES:O:u} 154 1.64 tv _F:= ${HTMLDIR}/${F:T:E}/${F:R}.html # installed path 155 1.64 tv ${_F}: ${F} __installpage # install rule 156 1.64 tv htmlpages:: ${_F} 157 1.64 tv .PRECIOUS: ${_F} # keep if install fails 158 1.64 tv .PHONY: ${UPDATE:U${_F}} # noclobber install 159 1.64 tv .if !defined(BUILD) && !make(all) && !make(${F}) 160 1.64 tv ${_F}: .MADE # no build at install 161 1.64 tv .endif 162 1.56 phil .endfor 163 1.56 phil 164 1.56 phil cleanhtml: 165 1.56 phil rm -f ${HTMLPAGES} 166 1.64 tv .endif # !defined(NOHTML) 167 1.31 mycroft 168 1.64 tv ##### Clean rules 169 1.64 tv .undef _F 170 1.8 mycroft 171 1.64 tv cleandir: cleanman 172 1.8 mycroft cleanman: 173 1.64 tv .if !empty(MAN) && (${MKMAN} != "no") 174 1.64 tv .if (${MKCATPAGES} != "no") 175 1.25 christos rm -f ${CATPAGES} 176 1.1 cgd .endif 177 1.64 tv .if !empty(MANSUFFIX) 178 1.64 tv rm -f ${MANPAGES} ${CATPAGES:S/${MANSUFFIX}$//} 179 1.64 tv .endif 180 1.64 tv .endif 181 1.64 tv # (XXX ${CATPAGES:S...} cleans up old .catN files where .catN.gz now used) 182 1.64 tv 183 1.64 tv ##### Pull in related .mk logic 184 1.64 tv .include <bsd.obj.mk> 185 1.34 mycroft 186 1.64 tv ${TARGETS} catinstall maninstall: # ensure existence 187