1 1.46 rin # $NetBSD: bsd.info.mk,v 1.46 2024/08/18 03:49:23 rin Exp $ 2 1.1 tv 3 1.23 tv .include <bsd.init.mk> 4 1.23 tv 5 1.23 tv ##### Basic targets 6 1.23 tv realinstall: infoinstall 7 1.1 tv 8 1.23 tv ##### Default values 9 1.23 tv INFOFLAGS?= 10 1.1 tv 11 1.23 tv INFOFILES?= 12 1.23 tv 13 1.23 tv ##### Build rules 14 1.23 tv .if ${MKINFO} != "no" 15 1.23 tv 16 1.46 rin .if defined(TEXINFO) 17 1.23 tv INFOFILES= ${TEXINFO:C/\.te?xi(nfo)?$/.info/} 18 1.23 tv 19 1.23 tv realall: ${INFOFILES} 20 1.23 tv .NOPATH: ${INFOFILES} 21 1.15 mycroft 22 1.5 tv .SUFFIXES: .txi .texi .texinfo .info 23 1.1 tv 24 1.5 tv .txi.info .texi.info .texinfo.info: 25 1.36 lukem ${_MKTARGET_CREATE} 26 1.39 joerg ${TOOL_MAKEINFO} ${INFOFLAGS} --no-split --no-version-header -o ${.TARGET} ${.IMPSRC} 27 1.46 rin .endif # defined(TEXINFO) 28 1.1 tv 29 1.23 tv .endif # ${MKINFO} != "no" 30 1.1 tv 31 1.23 tv ##### Install rules 32 1.23 tv infoinstall:: # ensure existence 33 1.37 lukem .PHONY: infoinstall 34 1.37 lukem 35 1.15 mycroft .if ${MKINFO} != "no" 36 1.1 tv 37 1.26 pk INFODIRFILE=${DESTDIR}${INFODIR}/dir 38 1.26 pk 39 1.26 pk # serialize access to ${INFODIRFILE}; needed for parallel makes 40 1.15 mycroft __infoinstall: .USE 41 1.36 lukem ${_MKTARGET_INSTALL} 42 1.23 tv ${INSTALL_FILE} \ 43 1.18 mycroft -o ${INFOOWN_${.ALLSRC:T}:U${INFOOWN}} \ 44 1.18 mycroft -g ${INFOGRP_${.ALLSRC:T}:U${INFOGRP}} \ 45 1.18 mycroft -m ${INFOMODE_${.ALLSRC:T}:U${INFOMODE}} \ 46 1.38 jwise ${.ALLSRC} ${.TARGET} 47 1.43 christos @[ -f ${INFODIRFILE} ] || touch ${INFODIRFILE}; \ 48 1.26 pk while ! ln ${INFODIRFILE} ${INFODIRFILE}.lock 2> /dev/null; \ 49 1.26 pk do sleep 1; done; \ 50 1.45 hgutch ! [ -s ${INFODIRFILE} ] && rm -f ${INFODIRFILE} || \ 51 1.29 lukem ${TOOL_INSTALL_INFO} -d ${INFODIRFILE} -r ${.TARGET} 2> /dev/null; \ 52 1.29 lukem ${TOOL_INSTALL_INFO} -d ${INFODIRFILE} ${.TARGET}; \ 53 1.41 christos ${TOOL_SORTINFO} < ${INFODIRFILE} > ${INFODIRFILE}.tmp; \ 54 1.42 christos ${MV} ${INFODIRFILE}.tmp ${INFODIRFILE}; \ 55 1.26 pk rm -f ${INFODIRFILE}.lock 56 1.26 pk 57 1.1 tv 58 1.19 sommerfe .for F in ${INFOFILES:O:u} 59 1.23 tv _FDIR:= ${INFODIR_${F}:U${INFODIR}} # dir overrides 60 1.23 tv _FNAME:= ${INFONAME_${F}:U${INFONAME:U${F:T}}} # name overrides 61 1.23 tv _F:= ${DESTDIR}${_FDIR}/${_FNAME} # installed path 62 1.23 tv 63 1.31 lukem .if ${MKUPDATE} == "no" 64 1.25 mycroft ${_F}! ${F} __infoinstall # install rule 65 1.25 mycroft .if !defined(BUILD) && !make(all) && !make(${F}) 66 1.25 mycroft ${_F}! .MADE # no build at install 67 1.25 mycroft .endif 68 1.25 mycroft .else 69 1.23 tv ${_F}: ${F} __infoinstall # install rule 70 1.15 mycroft .if !defined(BUILD) && !make(all) && !make(${F}) 71 1.23 tv ${_F}: .MADE # no build at install 72 1.15 mycroft .endif 73 1.25 mycroft .endif 74 1.25 mycroft 75 1.25 mycroft infoinstall:: ${_F} 76 1.25 mycroft .PRECIOUS: ${_F} # keep if install fails 77 1.15 mycroft .endfor 78 1.23 tv 79 1.23 tv .undef _FDIR 80 1.23 tv .undef _FNAME 81 1.23 tv .undef _F 82 1.23 tv .endif # ${MKINFO} != "no" 83 1.23 tv 84 1.23 tv ##### Clean rules 85 1.46 rin .if defined(TEXINFO) 86 1.40 apb CLEANDIRFILES+= ${INFOFILES} 87 1.46 rin .endif 88 1.1 tv 89 1.23 tv ##### Pull in related .mk logic 90 1.23 tv .include <bsd.obj.mk> 91 1.30 lukem .include <bsd.sys.mk> 92 1.40 apb .include <bsd.clean.mk> 93 1.23 tv 94 1.23 tv ${TARGETS}: # ensure existence 95