1#### Makefile for the Emacs Manual and other documentation.
2
3# Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
4#   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
5
6# This file is part of GNU Emacs.
7
8# GNU Emacs is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12
13# GNU Emacs is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16# GNU General Public License for more details.
17
18# You should have received a copy of the GNU General Public License
19# along with GNU Emacs; see the file COPYING.  If not, write to
20# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21# Boston, MA 02110-1301, USA.
22
23# Where to find the source code.  $(srcdir) will be the man
24# subdirectory of the source tree.  This is
25# set by the configure script's `--srcdir' option.
26srcdir=@srcdir@
27top_srcdir=@top_srcdir@
28
29# Tell make where to find source files; this is needed for the makefiles.
30VPATH=@srcdir@
31
32
33# The makeinfo program is part of the Texinfo distribution.
34# Use --force so that it generates output even if there are errors.
35MAKEINFO = makeinfo --force
36INFO_TARGETS = ../info/emacs ../info/ccmode ../info/cl \
37	        ../info/dired-x ../info/ediff ../info/forms ../info/gnus \
38		../info/message ../info/sieve ../info/pgg ../info/emacs-mime \
39		../info/info ../info/mh-e ../info/reftex \
40		../info/sc ../info/vip ../info/viper ../info/widget \
41		../info/efaq ../info/ada-mode ../info/autotype ../info/calc \
42		../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \
43		../info/woman ../info/eshell ../info/org ../info/url \
44		../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \
45		../info/flymake ../info/newsticker ../info/rcirc ../info/erc
46DVI_TARGETS = 	emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
47		 ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
48                 gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
49		 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \
50		 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
51		 pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
52		 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
53                 newsticker.dvi emacs-xtra.dvi rcirc.dvi erc.dvi
54INFOSOURCES = info.texi
55
56# The following rule does not work with all versions of `make'.
57.SUFFIXES: .texi .dvi
58.texi.dvi:
59	texi2dvi $<
60
61TEXI2DVI = texi2dvi
62ENVADD = TEXINPUTS="$(srcdir):$(TEXINPUTS)" MAKEINFO="$(MAKEINFO) -I$(srcdir)"
63
64EMACS_XTRA=\
65	$(srcdir)/arevert-xtra.texi \
66	$(srcdir)/cal-xtra.texi \
67	$(srcdir)/dired-xtra.texi \
68	$(srcdir)/picture-xtra.texi \
69	$(srcdir)/emerge-xtra.texi \
70	$(srcdir)/vc-xtra.texi \
71	$(srcdir)/vc1-xtra.texi \
72	$(srcdir)/vc2-xtra.texi \
73	$(srcdir)/fortran-xtra.texi \
74	$(srcdir)/msdog-xtra.texi
75
76EMACSSOURCES= \
77	${srcdir}/emacs.texi \
78	${srcdir}/doclicense.texi \
79	${srcdir}/screen.texi \
80	${srcdir}/commands.texi \
81	${srcdir}/entering.texi \
82	${srcdir}/basic.texi \
83	${srcdir}/mini.texi \
84	${srcdir}/m-x.texi \
85	${srcdir}/help.texi \
86	${srcdir}/mark.texi \
87	${srcdir}/killing.texi \
88	${srcdir}/regs.texi \
89	${srcdir}/display.texi \
90	${srcdir}/search.texi \
91	${srcdir}/fixit.texi \
92	${srcdir}/files.texi \
93	${srcdir}/buffers.texi \
94	${srcdir}/windows.texi \
95	${srcdir}/frames.texi \
96	${srcdir}/mule.texi \
97	${srcdir}/major.texi \
98	${srcdir}/indent.texi \
99	${srcdir}/text.texi \
100	${srcdir}/programs.texi \
101	${srcdir}/building.texi \
102	${srcdir}/maintaining.texi \
103	${srcdir}/abbrevs.texi \
104	${srcdir}/sending.texi \
105	${srcdir}/rmail.texi \
106	${srcdir}/dired.texi \
107	${srcdir}/calendar.texi \
108	${srcdir}/misc.texi \
109	${srcdir}/custom.texi \
110	${srcdir}/trouble.texi \
111	${srcdir}/cmdargs.texi \
112	${srcdir}/xresources.texi \
113	${srcdir}/anti.texi \
114	${srcdir}/macos.texi \
115	${srcdir}/msdog.texi \
116	${srcdir}/gnu.texi \
117	${srcdir}/glossary.texi \
118	${srcdir}/ack.texi \
119	${srcdir}/kmacro.texi \
120	$(EMACS_XTRA)
121
122info: $(top_srcdir)/info $(INFO_TARGETS)
123
124$(top_srcdir)/info:
125	mkdir $@
126
127dvi: $(DVI_TARGETS)
128
129# Note that all the Info targets build the Info files
130# in srcdir.  There is no provision for Info files
131# to exist in the build directory.
132# In a distribution of Emacs, the Info files should be up to date.
133
134# The following target uses an explicit -o switch to work around
135# the @setfilename directive in info.texi, which is required for
136# the Texinfo distribution.
137
138../info/info: ${INFOSOURCES}
139	cd $(srcdir); $(MAKEINFO) --no-split info.texi -o $@
140
141info.dvi: ${INFOSOURCES}
142	$(ENVADD) $(TEXI2DVI) ${srcdir}/info.texi
143
144../info/emacs: ${EMACSSOURCES}
145	cd $(srcdir); $(MAKEINFO) emacs.texi
146
147emacs.dvi: ${EMACSSOURCES}
148	$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs.texi
149
150# This target is here so you could easily get the list of the *.texi
151# files which belong to the Emacs manual (as opposed to the separate
152# manuals for CL, CC Mode, Ebrowse, etc.).  With this target, you can
153# say things like "grep foo `make emacsman`".
154emacsman:
155	@echo $(EMACSSOURCES)
156
157../info/ccmode: cc-mode.texi
158	cd $(srcdir); $(MAKEINFO) cc-mode.texi
159cc-mode.dvi: cc-mode.texi
160	$(ENVADD) $(TEXI2DVI) ${srcdir}/cc-mode.texi
161
162../info/ada-mode: ada-mode.texi
163	cd $(srcdir); $(MAKEINFO) ada-mode.texi
164ada-mode.dvi: ada-mode.texi
165	$(ENVADD) $(TEXI2DVI) ${srcdir}/ada-mode.texi
166
167../info/pcl-cvs: pcl-cvs.texi
168	cd $(srcdir); $(MAKEINFO) pcl-cvs.texi
169pcl-cvs.dvi: pcl-cvs.texi
170	$(ENVADD) $(TEXI2DVI) ${srcdir}/pcl-cvs.texi
171
172../info/eshell: eshell.texi
173	cd $(srcdir); $(MAKEINFO) eshell.texi
174eshell.dvi: eshell.texi
175	$(ENVADD) $(TEXI2DVI) ${srcdir}/eshell.texi
176
177../info/cl: cl.texi
178	cd $(srcdir); $(MAKEINFO) cl.texi
179cl.dvi: cl.texi
180	$(ENVADD) $(TEXI2DVI) ${srcdir}/cl.texi
181
182../info/dired-x: dired-x.texi
183	cd $(srcdir); $(MAKEINFO) dired-x.texi
184dired-x.dvi: dired-x.texi
185	$(ENVADD) $(TEXI2DVI) ${srcdir}/dired-x.texi
186
187../info/ediff: ediff.texi
188	cd $(srcdir); $(MAKEINFO) ediff.texi
189ediff.dvi: ediff.texi
190	$(ENVADD) $(TEXI2DVI) ${srcdir}/ediff.texi
191
192emacs-xtra.dvi: emacs-xtra.texi $(EMACS_XTRA)
193	$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-xtra.texi
194
195../info/forms: forms.texi
196	cd $(srcdir); $(MAKEINFO) forms.texi
197forms.dvi: forms.texi
198	$(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi
199
200# gnus/message/emacs-mime/sieve/pgg are part of Gnus:
201../info/gnus: gnus.texi gnus-faq.texi
202	cd $(srcdir); $(MAKEINFO) gnus.texi
203gnus.dvi: gnus.texi gnus-faq.texi
204	sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
205	$(ENVADD) $(TEXI2DVI) gnustmp.texi
206	cp gnustmp.dvi $*.dvi
207	rm gnustmp.*
208
209../info/message: message.texi
210	cd $(srcdir); $(MAKEINFO) message.texi
211message.dvi: message.texi
212	$(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi
213
214../info/sieve: sieve.texi
215	cd $(srcdir); $(MAKEINFO) sieve.texi
216sieve.dvi: sieve.texi
217	$(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
218
219../info/emacs-mime: emacs-mime.texi
220	cd $(srcdir); $(MAKEINFO) emacs-mime.texi
221emacs-mime.dvi: emacs-mime.texi
222	$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
223
224../info/pgg: pgg.texi
225	cd $(srcdir); $(MAKEINFO) pgg.texi
226pgg.dvi: pgg.texi
227	$(ENVADD) $(TEXI2DVI) ${srcdir}/pgg.texi
228
229../info/mh-e: mh-e.texi
230	cd $(srcdir); $(MAKEINFO) mh-e.texi
231mh-e.dvi: mh-e.texi
232	$(ENVADD) $(TEXI2DVI) ${srcdir}/mh-e.texi
233
234../info/reftex: reftex.texi
235	cd $(srcdir); $(MAKEINFO) reftex.texi
236reftex.dvi: reftex.texi
237	$(ENVADD) $(TEXI2DVI) ${srcdir}/reftex.texi
238
239../info/sc: sc.texi
240	cd $(srcdir); $(MAKEINFO) sc.texi
241sc.dvi: sc.texi
242	$(ENVADD) $(TEXI2DVI) ${srcdir}/sc.texi
243
244../info/vip: vip.texi
245	cd $(srcdir); $(MAKEINFO) vip.texi
246vip.dvi: vip.texi
247	$(ENVADD) $(TEXI2DVI) ${srcdir}/vip.texi
248
249../info/viper: viper.texi
250	cd $(srcdir); $(MAKEINFO) viper.texi
251viper.dvi: viper.texi
252	$(ENVADD) $(TEXI2DVI) ${srcdir}/viper.texi
253
254../info/widget: widget.texi
255	cd $(srcdir); $(MAKEINFO) widget.texi
256widget.dvi: widget.texi
257	$(ENVADD) $(TEXI2DVI) ${srcdir}/widget.texi
258
259../info/efaq: faq.texi
260	cd $(srcdir); $(MAKEINFO) faq.texi
261faq.dvi: faq.texi
262	$(ENVADD) $(TEXI2DVI) ${srcdir}/faq.texi
263
264../etc/GNU: gnu1.texi gnu.texi
265	cd $(srcdir) && makeinfo --no-headers -o ../etc/GNU gnu1.texi
266
267../info/autotype: autotype.texi
268	cd $(srcdir); $(MAKEINFO) autotype.texi
269autotype.dvi: autotype.texi
270	$(ENVADD) $(TEXI2DVI) ${srcdir}/autotype.texi
271
272../info/calc: calc.texi
273	cd $(srcdir); $(MAKEINFO) calc.texi
274
275calc.dvi: calc.texi
276	$(ENVADD) $(TEXI2DVI) ${srcdir}/calc.texi
277
278# This is produced with --no-split to avoid making files whose
279# names clash on DOS 8+3 filesystems
280../info/idlwave: idlwave.texi
281	cd $(srcdir); $(MAKEINFO) --no-split idlwave.texi
282idlwave.dvi: idlwave.texi
283	$(ENVADD) $(TEXI2DVI) ${srcdir}/idlwave.texi
284
285../info/eudc: eudc.texi
286	cd $(srcdir); $(MAKEINFO) eudc.texi
287eudc.dvi: eudc.texi
288	$(ENVADD) $(TEXI2DVI) ${srcdir}/eudc.texi
289
290../info/ebrowse: ebrowse.texi
291	cd $(srcdir); $(MAKEINFO) ebrowse.texi
292ebrowse.dvi: ebrowse.texi
293	$(ENVADD) $(TEXI2DVI) ${srcdir}/ebrowse.texi
294
295../info/woman: woman.texi
296	cd $(srcdir); $(MAKEINFO) woman.texi
297woman.dvi: woman.texi
298	$(ENVADD) $(TEXI2DVI) ${srcdir}/woman.texi
299
300../info/org: org.texi
301	cd $(srcdir); $(MAKEINFO) org.texi
302org.dvi: org.texi
303	$(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
304
305../info/url: url.texi
306	cd $(srcdir); $(MAKEINFO) url.texi
307url.dvi: url.texi
308	$(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
309
310../info/speedbar: speedbar.texi
311	cd $(srcdir); $(MAKEINFO) speedbar.texi
312speedbar.dvi: speedbar.texi
313	$(ENVADD) $(TEXI2DVI) ${srcdir}/speedbar.texi
314
315../info/tramp: tramp.texi trampver.texi
316	cd $(srcdir); $(MAKEINFO) -D emacs tramp.texi
317tramp.dvi: tramp.texi trampver.texi
318	$(ENVADD) $(TEXI2DVI) ${srcdir}/tramp.texi
319
320../info/ses: ses.texi
321	cd $(srcdir); $(MAKEINFO) ses.texi
322ses.dvi: ses.texi
323	$(ENVADD) $(TEXI2DVI) ${srcdir}/ses.texi
324
325../info/smtpmail: smtpmail.texi
326	cd $(srcdir); $(MAKEINFO) smtpmail.texi
327smtpmail.dvi: smtpmail.texi
328	$(ENVADD) $(TEXI2DVI) ${srcdir}/smtpmail.texi
329
330../info/flymake: flymake.texi
331	cd $(srcdir); $(MAKEINFO) flymake.texi
332flymake.dvi: flymake.texi
333	$(ENVADD) $(TEXI2DVI) ${srcdir}/flymake.texi
334
335../info/newsticker: newsticker.texi
336	cd $(srcdir); $(MAKEINFO) newsticker.texi
337newsticker.dvi: newsticker.texi
338	$(ENVADD) $(TEXI2DVI) ${srcdir}/newsticker.texi
339
340../info/rcirc: rcirc.texi
341	cd $(srcdir); $(MAKEINFO) rcirc.texi
342rcirc.dvi: rcirc.texi
343	$(ENVADD) $(TEXI2DVI) ${srcdir}/rcirc.texi
344
345../info/erc: erc.texi
346	cd $(srcdir); $(MAKEINFO) erc.texi
347erc.dvi: erc.texi
348	$(ENVADD) $(TEXI2DVI) ${srcdir}/erc.texi
349
350mostlyclean:
351	rm -f *.log *.cp *.fn *.ky *.pg *.vr core *.tp *.core gnustmp.*
352
353clean: mostlyclean
354	rm -f *.dvi
355
356distclean: clean
357
358maintainer-clean: distclean
359	rm -f *.aux *.cps *.fns *.kys *.pgs *.vrs *.toc
360	for file in $(INFO_TARGETS); do rm -f $${file}*; done
361
362
363# Formerly this directory had texindex.c and getopt.c in it
364# and this makefile built them to make texindex.
365# That caused trouble because this is run entirely in the source directory.
366# Since we expect to get texi2dvi from elsewhere,
367# it is ok to expect texindex from elsewhere also.
368