]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/mk/bsd.info.mk
Remove spurious newline
[FreeBSD/FreeBSD.git] / share / mk / bsd.info.mk
1 # $FreeBSD$
2 #
3 # The include file <bsd.info.mk> handles installing GNU (tech)info files.
4 # Texinfo is a documentation system that uses a single source
5 # file to produce both on-line information and printed output.
6 #
7 #
8 # +++ variables +++
9 #
10 # CLEANFILES    Additional files to remove for the clean and cleandir targets.
11 #
12 # DESTDIR       Change the tree where the info files gets installed. [not set]
13 #
14 # DVIPS         A program which convert a TeX DVI file to PostScript [dvips]
15 #
16 # DVIPS2ASCII   A program to convert a PostScript file which was prior
17 #               converted from a TeX DVI file to ascii/latin1 [dvips2ascii]
18 #
19 # FORMATS       Indicates which output formats will be generated
20 #               (info, dvi, latin1, ps, html).  [info]
21 #
22 # ICOMPRESS_CMD Program to compress info files. Output is to
23 #               stdout. [${COMPRESS_CMD}]
24 #
25 # INFO          texinfo files, without suffix.  [set in Makefile]
26 #
27 # INFO2HTML     A program for converting GNU info files into HTML files
28 #               [info2html]
29 #
30 # INFODIR       Base path for GNU's hypertext system
31 #               called Info (see info(1)). [${SHAREDIR}/info]
32 #
33 # INFODIRFILE   Top level node/index for info files. [dir]
34 #
35 # INFOGRP       Info group. [${SHAREGRP}]
36 #
37 # INFOMODE      Info mode. [${NOBINMODE}]
38 #
39 # INFOOWN       Info owner. [${SHAREOWN}]
40 #
41 # INFOSECTION   Default section (if one could not be found in
42 #               the Info file). [Miscellaneous]
43 #
44 # INSTALLINFO   A program for installing directory entries from Info
45 #               file in the ${INFODIR}/${INFODIRFILE}. [install-info]
46 #
47 # INSTALLINFOFLAGS      Options for ${INSTALLINFO} command. [--quiet]
48 #
49 # INSTALLINFODIRS       ???
50 #
51 # MAKEINFO      A program for converting GNU Texinfo files into Info
52 #               file. [makeinfo]
53 #
54 # MAKEINFOFLAGS         Options for ${MAKEINFO} command. [--no-split]
55 #
56 # NO_INFOCOMPRESS       If you do not want info files be
57 #                       compressed when they are installed. [not set]
58 #
59 # TEX           A program for converting tex files into dvi files [tex]
60 #
61 #
62 # +++ targets +++
63 #
64 #       install:
65 #               Install the info files.
66 #
67 #
68 # bsd.obj.mk: cleandir and obj
69
70 .include <bsd.init.mk>
71
72 MAKEINFO?=      makeinfo
73 MAKEINFOFLAGS+= --no-split # simplify some things, e.g., compression
74 SRCDIR?=        ${.CURDIR}
75 INFODIRFILE?=   dir
76 INSTALLINFO?=   install-info
77 INSTALLINFOFLAGS+=--quiet
78 INFOSECTION?=   Miscellaneous
79 ICOMPRESS_CMD?= ${COMPRESS_CMD}
80 ICOMPRESS_EXT?= ${COMPRESS_EXT}
81 FORMATS?=       info
82 INFO2HTML?=     info2html
83 TEX?=           tex
84 DVIPS?=         dvips
85 DVIPS2ASCII?=   dvips2ascii
86
87 .SUFFIXES: ${ICOMPRESS_EXT} .info .texi .texinfo .dvi .ps .latin1 .html
88
89 .texi.info .texinfo.info:
90         ${MAKEINFO} ${MAKEINFOFLAGS} -I ${.CURDIR} -I ${SRCDIR} ${.IMPSRC} \
91                 -o ${.TARGET}
92
93 .texi.dvi .texinfo.dvi:
94         TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
95                 ${TEX} ${.IMPSRC} </dev/null
96 # Run again to resolve cross references.
97         TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
98                 ${TEX} ${.IMPSRC} </dev/null
99
100 .texinfo.latin1 .texi.latin1:
101         perl -npe 's/(^\s*\\input\s+texinfo\s+)/$$1\n@tex\n\\global\\hsize=120mm\n@end tex\n\n/' ${.IMPSRC} >> ${.IMPSRC:T:R}-la.texi
102         TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
103                 ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
104 # Run again to resolve cross references.
105         TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
106                 ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
107         ${DVIPS} -o /dev/stdout ${.IMPSRC:T:R}-la.dvi | \
108                 ${DVIPS2ASCII} > ${.TARGET}.new
109         mv -f ${.TARGET}.new ${.TARGET}
110
111 .dvi.ps:
112         ${DVIPS} -o ${.TARGET} ${.IMPSRC}
113
114 .info.html:
115         ${INFO2HTML} ${.IMPSRC}
116         ${INSTALL_LINK} ${.TARGET:R}.info.Top.html ${.TARGET}
117
118 .PATH: ${.CURDIR} ${SRCDIR}
119
120 .for _f in ${FORMATS}
121 IFILENS+=       ${INFO:S/$/.${_f}/}
122 .endfor
123
124 CLEANFILES+=    ${IFILENS}
125 .if !defined(NO_INFOCOMPRESS)
126 CLEANFILES+=    ${IFILENS:S/$/${ICOMPRESS_EXT}/}
127 IFILES= ${IFILENS:S/$/${ICOMPRESS_EXT}/:S/.html${ICOMPRESS_EXT}/.html/}
128 .else
129 IFILES= ${IFILENS}
130 .endif
131 .if !defined(_SKIP_BUILD)
132 all: ${IFILES}
133 .endif
134
135 .for x in ${IFILENS}
136 ${x:S/$/${ICOMPRESS_EXT}/}:     ${x}
137         ${ICOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
138 .endfor
139
140 .for x in ${INFO}
141 INSTALLINFODIRS+= ${x:S/$/-install/}
142 ${x:S/$/-install/}:
143 .if !empty(.MAKEFLAGS:M-j)
144         lockf -k ${DESTDIR}${INFODIR}/${INFODIRFILE} \
145         ${INSTALLINFO} ${INSTALLINFOFLAGS} \
146             --defsection=${INFOSECTION} \
147             --defentry=${INFOENTRY_${x}} \
148             ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
149 .else
150         ${INSTALLINFO} ${INSTALLINFOFLAGS} \
151             --defsection=${INFOSECTION} \
152             --defentry=${INFOENTRY_${x}} \
153             ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
154 .endif
155 .endfor
156
157 .PHONY: ${INSTALLINFODIRS}
158
159 .if defined(SRCS)
160 CLEANFILES+=    ${INFO}.texi
161 ${INFO}.texi: ${SRCS}
162         cat ${.ALLSRC} > ${.TARGET}
163 .endif
164
165 # tex garbage
166 .if !empty(FORMATS:Mps) || !empty(FORMATS:Mdvi) || !empty(FORMATS:Mlatin1)
167 .for _f in aux cp fn ky log out pg toc tp vr dvi
168 CLEANFILES+=    ${INFO:S/$/.${_f}/} ${INFO:S/$/-la.${_f}/}
169 .endfor
170 CLEANFILES+=    ${INFO:S/$/-la.texi/}
171 .endif
172
173 .if !empty(FORMATS:Mhtml)
174 CLEANFILES+=    ${INFO:S/$/.info.*.html/} ${INFO:S/$/.info/}
175 .endif
176
177 .if defined(INFO)
178 install: ${INSTALLINFODIRS}
179 .if !empty(IFILES:N*.html)
180         ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
181                 ${IFILES:N*.html} ${DESTDIR}${INFODIR}/
182 .endif
183 .if !empty(FORMATS:Mhtml)
184         ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
185                 ${INFO:S/$/.info.*.html/} ${DESTDIR}${INFODIR}/
186 .endif
187 .else
188 # The indirection in the following is to avoid the null install rule
189 # "install:" from being overridden by the implicit .sh rule if there
190 # happens to be a source file named install.sh.  This assumes that there
191 # is no source file named __null_install.sh.
192 install: __null_install
193 __null_install:
194 .endif
195
196 .include <bsd.obj.mk>