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