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