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