Home | History | Annotate | Line # | Download | only in mk
      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
      6 realinstall:	infoinstall
      7 
      8 ##### Default values
      9 INFOFLAGS?=
     10 
     11 INFOFILES?=
     12 
     13 ##### Build rules
     14 .if ${MKINFO} != "no"
     15 
     16 .if defined(TEXINFO)
     17 INFOFILES=	${TEXINFO:C/\.te?xi(nfo)?$/.info/}
     18 
     19 realall:	${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
     32 infoinstall::	# ensure existence
     33 .PHONY:		infoinstall
     34 
     35 .if ${MKINFO} != "no"
     36 
     37 INFODIRFILE=${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 
     75 infoinstall::	${_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)
     86 CLEANDIRFILES+=	${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