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