bsd.info.mk revision 95368
1139735Simp# $FreeBSD: head/share/mk/bsd.info.mk 95368 2002-04-24 13:29:34Z ru $
2129198Scognet#
3129198Scognet# The include file <bsd.info.mk> handles installing GNU (tech)info files.
4129198Scognet# Texinfo is a documentation system that uses a single source
5129198Scognet# file to produce both on-line information and printed output.
6129198Scognet#
7129198Scognet#
8129198Scognet# +++ variables +++
9129198Scognet#
10129198Scognet# CLEANFILES	Additional files to remove for the clean and cleandir targets.
11129198Scognet#
12129198Scognet# DESTDIR	Change the tree where the info files gets installed. [not set]
13129198Scognet#
14129198Scognet# DVIPS		A program which convert a TeX DVI file to PostScript [dvips]
15129198Scognet#
16129198Scognet# DVIPS2ASCII	A program to convert a PostScript file which was prior
17129198Scognet#		converted from a TeX DVI file to ascii/latin1 [dvips2ascii]
18129198Scognet#
19266312Sian# FORMATS 	Indicates which output formats will be generated
20129198Scognet#               (info, dvi, latin1, ps, html).  [info]
21129198Scognet#
22129198Scognet# ICOMPRESS_CMD	Program to compress info files. Output is to
23129198Scognet#		stdout. [${COMPRESS_CMD}]
24129198Scognet#
25129198Scognet# INFO		texinfo files, without suffix.  [set in Makefile] 
26129198Scognet#
27129198Scognet# INFO2HTML	A program for converting GNU info files into HTML files
28129198Scognet#		[info2html]
29129198Scognet#
30129198Scognet# INFODIR	Base path for GNU's hypertext system
31129198Scognet#		called Info (see info(1)). [${SHAREDIR}/info]
32129198Scognet#
33129198Scognet# INFODIRFILE	Top level node/index for info files. [dir]
34129198Scognet#
35129198Scognet# INFOGRP	Info group. [${SHAREGRP}]
36129198Scognet#
37129198Scognet# INFOMODE	Info mode. [${NOBINMODE}]
38129198Scognet#
39129198Scognet# INFOOWN	Info owner. [${SHAREOWN}]
40129198Scognet#
41129198Scognet# INFOSECTION	Default section (if one could not be found in
42129198Scognet#		the Info file). [Miscellaneous]
43129198Scognet#
44129198Scognet# INSTALLINFO	A program for installing directory entries from Info
45129198Scognet#		file in the ${INFODIR}/${INFODIRFILE}. [install-info]
46129198Scognet#
47129198Scognet# INSTALLINFOFLAGS	Options for ${INSTALLINFO} command. [--quiet]
48135658Scognet#
49129198Scognet# INSTALLINFODIRS	???
50129198Scognet#
51129198Scognet# MAKEINFO	A program for converting GNU Texinfo files into Info
52129198Scognet#		file. [makeinfo]
53129198Scognet#
54129198Scognet# MAKEINFOFLAGS		Options for ${MAKEINFO} command. [--no-split]
55129198Scognet#
56135658Scognet# NOINFO	Do not make or install info files. [not set]
57129198Scognet#
58129198Scognet# NOINFOCOMPRESS	If you do not want info files be
59129198Scognet#			compressed when they are installed. [not set]
60129198Scognet#
61129198Scognet# TEX		A program for converting tex files into dvi files [tex]
62129198Scognet#
63129198Scognet#
64129198Scognet# +++ targets +++
65129198Scognet#
66129198Scognet#	install:
67129198Scognet#		Install the info files.
68129198Scognet#
69135658Scognet#
70129198Scognet# bsd.obj.mk: cleandir and obj
71129198Scognet
72129198Scognet.include <bsd.init.mk>
73129198Scognet
74129198ScognetMAKEINFO?=	makeinfo
75130028StjrMAKEINFOFLAGS+=	--no-split # simplify some things, e.g., compression
76130028StjrSRCDIR?=	${.CURDIR}
77129198ScognetINFODIRFILE?=   dir
78129198ScognetINSTALLINFO?=   install-info
79129198ScognetINSTALLINFOFLAGS+=--quiet
80129198ScognetINFOSECTION?=   Miscellaneous
81129198ScognetICOMPRESS_CMD?=	${COMPRESS_CMD}
82129198ScognetICOMPRESS_EXT?=	${COMPRESS_EXT}
83129198ScognetFORMATS?=	info
84129198ScognetINFO2HTML?=	info2html
85129198ScognetTEX?=		tex
86129198ScognetDVIPS?=		dvips
87129198ScognetDVIPS2ASCII?=	dvips2ascii
88129198Scognet
89135658Scognet.SUFFIXES: ${ICOMPRESS_EXT} .info .texi .texinfo .dvi .ps .latin1 .html
90135658Scognet
91129198Scognet.texi.info .texinfo.info:
92129198Scognet	${MAKEINFO} ${MAKEINFOFLAGS} -I ${.CURDIR} -I ${SRCDIR} ${.IMPSRC} \
93218195Smdf		-o ${.TARGET}
94129198Scognet
95129198Scognet.texi.dvi .texinfo.dvi:
96129198Scognet	TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
97129198Scognet		${TEX} ${.IMPSRC} </dev/null
98176886Scognet# Run again to reolve cross references.
99176886Scognet	TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
100129198Scognet		${TEX} ${.IMPSRC} </dev/null
101176886Scognet
102129198Scognet.texinfo.latin1 .texi.latin1:
103129198Scognet	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
104129198Scognet	TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
105129198Scognet		${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
106129198Scognet# Run again to reolve cross references.
107129198Scognet	TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
108129198Scognet		${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
109129198Scognet	${DVIPS} -o /dev/stdout ${.IMPSRC:T:R}-la.dvi | \
110129198Scognet		${DVIPS2ASCII} > ${.TARGET}.new
111129198Scognet	mv -f ${.TARGET}.new ${.TARGET}
112135658Scognet
113129198Scognet.dvi.ps:
114129198Scognet	${DVIPS} -o ${.TARGET} ${.IMPSRC} 	
115129198Scognet
116129198Scognet.info.html:
117129198Scognet	${INFO2HTML} ${.IMPSRC}
118129198Scognet	ln -f ${.TARGET:R}.info.Top.html ${.TARGET} 
119129198Scognet
120129198Scognet.PATH: ${.CURDIR} ${SRCDIR}
121130028Stjr
122130023Stjr.for _f in ${FORMATS}
123129198ScognetIFILENS+=	${INFO:S/$/.${_f}/}
124129198Scognet.endfor
125
126.if !defined(NOINFO)
127CLEANFILES+=	${IFILENS}
128.if !defined(NOINFOCOMPRESS)
129CLEANFILES+=	${IFILENS:S/$/${ICOMPRESS_EXT}/}
130IFILES=	${IFILENS:S/$/${ICOMPRESS_EXT}/:S/.html${ICOMPRESS_EXT}/.html/}
131all: ${IFILES}
132.else
133IFILES=	${IFILENS}
134all: ${IFILES}
135.endif
136.else
137all:
138.endif
139
140.for x in ${IFILENS}
141${x:S/$/${ICOMPRESS_EXT}/}:	${x}
142	${ICOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
143.endfor
144
145.for x in ${INFO}
146INSTALLINFODIRS+= ${x:S/$/-install/}
147${x:S/$/-install/}: ${DESTDIR}${INFODIR}/${INFODIRFILE}
148	${INSTALLINFO} ${INSTALLINFOFLAGS} \
149	    --defsection=${INFOSECTION} \
150	    --defentry=${INFOENTRY_${x}} \
151	    ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
152.endfor
153
154.PHONY: ${INSTALLINFODIRS}
155
156.if defined(SRCS)
157CLEANFILES+=	${INFO}.texi
158${INFO}.texi: ${SRCS}
159	cat ${.ALLSRC} > ${.TARGET}
160.endif
161
162# tex garbage
163.if ${FORMATS:Mps} || ${FORMATS:Mdvi} || ${FORMATS:Mlatin1}
164.for _f in aux cp fn ky log out pg toc tp vr dvi
165CLEANFILES+=	${INFO:S/$/.${_f}/} ${INFO:S/$/-la.${_f}/}
166.endfor
167CLEANFILES+=	${INFO:S/$/-la.texi/}
168.endif
169
170.if ${FORMATS:Mhtml}
171CLEANFILES+=	${INFO:S/$/.info.*.html/} ${INFO:S/$/.info/}
172.endif
173
174.if !defined(NOINFO) && defined(INFO)
175install: ${INSTALLINFODIRS}
176.if ${IFILES:N*.html}
177	${INSTALL} ${COPY} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
178		${IFILES:N*.html} ${DESTDIR}${INFODIR}
179.endif
180.if ${FORMATS:Mhtml}
181	${INSTALL} ${COPY} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
182		${INFO:S/$/.info.*.html/} ${DESTDIR}${INFODIR}
183.endif
184.else
185# The indirection in the following is to avoid the null install rule
186# "install:" from being overridden by the implicit .sh rule if there
187# happens to be a source file named install.sh.  This assumes that there
188# is no source file named __null_install.sh.
189install: __null_install
190__null_install:
191.endif
192
193.include <bsd.obj.mk>
194