Commit | Line | Data |
---|---|---|
bbece175 | 1 | ### @configure_input@ |
4009494e | 2 | |
ba318903 | 3 | # Copyright (C) 1994, 1996-2014 Free Software Foundation, Inc. |
4009494e GM |
4 | |
5 | # This file is part of GNU Emacs. | |
6 | ||
97c0352c | 7 | # GNU Emacs is free software: you can redistribute it and/or modify |
4009494e | 8 | # it under the terms of the GNU General Public License as published by |
97c0352c GM |
9 | # the Free Software Foundation, either version 3 of the License, or |
10 | # (at your option) any later version. | |
4009494e GM |
11 | |
12 | # GNU Emacs is distributed in the hope that it will be useful, | |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | # GNU General Public License for more details. | |
16 | ||
17 | # You should have received a copy of the GNU General Public License | |
97c0352c | 18 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
4009494e | 19 | |
50b13cde | 20 | SHELL = @SHELL@ |
c21180f3 | 21 | |
1470c88c GM |
22 | # Where to find the source code. $(srcdir) will be the doc/misc subdirectory |
23 | # of the source tree. This is set by configure's `--srcdir' option. | |
4009494e | 24 | srcdir=@srcdir@ |
4009494e | 25 | |
09af5c3e GM |
26 | version=@version@ |
27 | ||
c21180f3 | 28 | ## Where the output files go. |
1470c88c GM |
29 | ## Note that all the Info targets build the Info files in srcdir. |
30 | ## There is no provision for Info files to exist in the build directory. | |
31 | ## In a tarfile of Emacs, the Info files should be up to date. | |
ac1a0ce1 | 32 | buildinfodir = $(srcdir)/../../info |
1470c88c | 33 | |
f7a31f11 | 34 | ## Directory with emacsver.texi. |
f7a31f11 | 35 | emacsdir = $(srcdir)/../emacs |
4009494e | 36 | |
8496d8d7 GM |
37 | prefix = @prefix@ |
38 | datarootdir = @datarootdir@ | |
39 | datadir = @datadir@ | |
40 | PACKAGE_TARNAME = @PACKAGE_TARNAME@ | |
41 | docdir = @docdir@ | |
42 | dvidir = @dvidir@ | |
43 | htmldir = @htmldir@ | |
44 | pdfdir = @pdfdir@ | |
45 | psdir = @psdir@ | |
46 | ||
3fe7cdc8 GM |
47 | MKDIR_P = @MKDIR_P@ |
48 | ||
8496d8d7 GM |
49 | GZIP_PROG = @GZIP_PROG@ |
50 | ||
51 | HTML_OPTS = --no-split --html | |
52 | ||
8045b906 | 53 | # Options used only when making info output. |
1470c88c | 54 | # (Note that idlwave, info used --nosplit even without the .info extension.) |
40abffe4 | 55 | INFO_OPTS= --no-split |
8045b906 | 56 | |
8496d8d7 GM |
57 | INSTALL = @INSTALL@ |
58 | INSTALL_DATA = @INSTALL_DATA@ | |
59 | ||
4009494e GM |
60 | # The makeinfo program is part of the Texinfo distribution. |
61 | # Use --force so that it generates output even if there are errors. | |
1470c88c | 62 | # (TODO? Why is this appropriate?) |
45eb2a5d WL |
63 | MAKEINFO = @MAKEINFO@ |
64 | MAKEINFO_OPTS = --force -I$(emacsdir) | |
c21180f3 | 65 | |
1857cd3f | 66 | ## On MS Windows, efaq-w32; otherwise blank. |
0acfedd3 | 67 | DOCMISC_W32 = @DOCMISC_W32@ |
1857cd3f GM |
68 | |
69 | ## Info files to build and install on all platforms. | |
70 | INFO_COMMON = ada-mode auth autotype bovine calc ccmode cl \ | |
7d326a29 | 71 | dbus dired-x ebrowse ede ediff edt eieio \ |
548a1b28 | 72 | emacs-mime epa erc ert eshell eudc efaq eww \ |
57cff712 | 73 | flymake forms gnus emacs-gnutls htmlfontify idlwave ido info.info \ |
ed4bc201 | 74 | mairix-el message mh-e newsticker nxml-mode octave-mode \ |
7d326a29 | 75 | org pcl-cvs pgg rcirc remember reftex sasl \ |
016d3f7d | 76 | sc semantic ses sieve smtpmail speedbar srecode todo-mode tramp \ |
c31528bf | 77 | url vhdl-mode vip viper widget wisent woman |
c21180f3 | 78 | |
1857cd3f | 79 | ## Info files to install on current platform. |
4abee665 | 80 | INFO_INSTALL = $(INFO_COMMON) $(DOCMISC_W32) |
1857cd3f GM |
81 | |
82 | ## Info files to build on current platform. | |
83 | ## This is all of them, even though they might not all get installed, | |
84 | ## because the info files are pre-built in release tarfiles. | |
85 | INFO_TARGETS = $(INFO_COMMON) efaq-w32 | |
86 | ||
0acfedd3 SM |
87 | # There are some naming differences between the info targets and the other |
88 | # targets, so let's resolve them here. | |
89 | TARGETS_1 = $(INFO_INSTALL:ccmode=cc-mode) | |
90 | TARGETS = $(TARGETS_1:info.info=info) | |
c21180f3 | 91 | |
0acfedd3 SM |
92 | DVI_TARGETS = $(TARGETS:=.dvi) |
93 | HTML_TARGETS = $(TARGETS:=.html) | |
94 | PDF_TARGETS = $(TARGETS:=.pdf) | |
95 | PS_TARGETS = $(TARGETS:=.ps) | |
8496d8d7 | 96 | |
c21180f3 | 97 | TEXI2DVI = texi2dvi |
698bfef7 | 98 | TEXI2PDF = texi2pdf |
8496d8d7 | 99 | DVIPS = dvips |
4009494e | 100 | |
45eb2a5d WL |
101 | ENVADD = TEXINPUTS="$(srcdir):$(emacsdir):$(TEXINPUTS)" \ |
102 | MAKEINFO="$(MAKEINFO) $(MAKEINFO_OPTS)" | |
4009494e | 103 | |
ddc41264 GM |
104 | gfdl = ${srcdir}/doclicense.texi |
105 | ||
1470c88c | 106 | .PHONY: info dvi html pdf ps echo-info $(INFO_TARGETS) |
9583393f GM |
107 | ## Prevent implicit rule triggering for foo.info. |
108 | .SUFFIXES: | |
9aa071df | 109 | |
b8e83630 GM |
110 | ## Disable implicit rules. |
111 | %.texi: ; | |
112 | ||
956cceb9 GM |
113 | # Default. |
114 | info: $(INFO_TARGETS) | |
115 | ||
9aa071df | 116 | ## Used by top-level Makefile. |
7d326a29 | 117 | ## Base file names of output info files. |
9aa071df | 118 | echo-info: |
1857cd3f | 119 | @echo "$(INFO_INSTALL) " | \ |
40abffe4 | 120 | sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */.info /g" |
ea274122 | 121 | |
4009494e GM |
122 | dvi: $(DVI_TARGETS) |
123 | ||
8496d8d7 GM |
124 | html: $(HTML_TARGETS) |
125 | ||
698bfef7 | 126 | pdf: $(PDF_TARGETS) |
c21180f3 | 127 | |
8496d8d7 GM |
128 | ps: $(PS_TARGETS) |
129 | ||
1470c88c GM |
130 | ${buildinfodir}: |
131 | ${MKDIR_P} $@ | |
132 | ||
133 | ### The general case. | |
134 | ||
135 | EXTRA_OPTS = | |
136 | ||
137 | ${buildinfodir}/%.info: ${srcdir}/%.texi ${gfdl} | ${buildinfodir} | |
138 | $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) $(EXTRA_OPTS) -o $@ $< | |
139 | ||
140 | ## The short aliases, eg efaq = $(buildinfodir)/efaq.info. | |
141 | define info_template | |
142 | $(1): $$(buildinfodir)/$(1).info | |
143 | endef | |
144 | ||
145 | ## "info" is already taken. | |
146 | info.info: $(buildinfodir)/info.info | |
147 | ||
148 | $(foreach ifile,$(filter-out info.info,$(INFO_TARGETS)),$(eval $(call info_template,$(ifile)))) | |
149 | ||
150 | ||
151 | %.dvi: ${srcdir}/%.texi ${gfdl} | |
152 | $(ENVADD) $(TEXI2DVI) $< | |
153 | ||
154 | %.pdf: ${srcdir}/%.texi ${gfdl} | |
155 | $(ENVADD) $(TEXI2PDF) $< | |
156 | ||
157 | %.html: ${srcdir}/%.texi ${gfdl} | |
158 | $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) $(EXTRA_OPTS) -o $@ $< | |
159 | ||
160 | %.ps: %.dvi | |
161 | $(DVIPS) -o $@ $< | |
162 | ||
163 | ||
164 | ### The exceptions. | |
165 | ||
166 | ## Extra dependencies. | |
167 | ||
168 | need_emacsver = calc cl dired-x efaq efaq-w32 erc ido reftex woman | |
169 | need_emacsver_prefix = $(addprefix ${buildinfodir}/,${need_emacsver}) | |
170 | ||
171 | $(need_emacsver_prefix:=.info) $(need_emacsver:=.dvi) $(need_emacsver:=.pdf) $(need_emacsver:=.html) : ${emacsdir}/emacsver.texi | |
172 | ||
173 | $(buildinfodir)/gnus.info gnus.html: ${srcdir}/gnus-faq.texi | |
174 | ||
175 | $(buildinfodir)/semantic.info semantic.dvi semantic.pdf semantic.html: ${srcdir}/sem-user.texi | |
176 | ||
177 | ||
178 | ## Please can we just rename cc-mode.texi to ccmode.texi... | |
179 | ${buildinfodir}/ccmode.info: ${srcdir}/cc-mode.texi ${gfdl} | |
180 | $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $< | |
181 | ||
182 | ## efaq, efaq_w32 do not depend on gfdl. | |
183 | ## Maybe we can use .SECONDEXPANSION for this. | |
184 | ${buildinfodir}/efaq%.info: ${srcdir}/efaq%.texi | |
185 | $(MAKEINFO) $(MAKEINFO_OPTS) $(INFO_OPTS) -o $@ $< | |
186 | ||
187 | efaq%.dvi: ${srcdir}/efaq%.texi | |
188 | $(ENVADD) $(TEXI2DVI) $< | |
189 | ||
190 | efaq%.pdf: ${srcdir}/efaq%.texi | |
191 | $(ENVADD) $(TEXI2PDF) $< | |
192 | ||
193 | efaq%.html: ${srcdir}/efaq%.texi | |
194 | $(MAKEINFO) $(MAKEINFO_OPTS) $(HTML_OPTS) -o $@ $< | |
195 | ||
196 | ${buildinfodir}/emacs-mime.info emacs-mime.html: EXTRA_OPTS = --enable-encoding | |
197 | ||
808190e6 | 198 | gnus_deps = ${srcdir}/gnus.texi ${srcdir}/gnus-faq.texi ${gfdl} |
808190e6 | 199 | gnus.dvi: $(gnus_deps) |
1470c88c GM |
200 | sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmpdvi.texi |
201 | $(ENVADD) $(TEXI2DVI) gnustmpdvi.texi | |
202 | cp gnustmpdvi.dvi $@ | |
203 | rm gnustmpdvi.* | |
204 | ||
808190e6 | 205 | gnus.pdf: $(gnus_deps) |
1470c88c GM |
206 | sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmppdf.texi |
207 | $(ENVADD) $(TEXI2PDF) gnustmppdf.texi | |
208 | cp gnustmppdf.pdf $@ | |
209 | rm gnustmppdf.* | |
210 | ||
211 | ${buildinfodir}/tramp.info tramp.html: EXTRA_OPTS = -D emacs | |
212 | ${buildinfodir}/tramp.info tramp.html: ${srcdir}/trampver.texi | |
213 | ||
4009494e | 214 | |
0e6929ec | 215 | .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean |
ea274122 | 216 | |
4009494e | 217 | mostlyclean: |
9598ef0b | 218 | rm -f *.aux *.log *.toc *.c[mp] *.c[mp]s *.fn *.fns \ |
beb57c77 | 219 | *.ky *.kys *.op *.ops *.p[gj] *.p[gj]s *.sc *.scs *.ss \ |
9598ef0b | 220 | *.t[gp] *.t[gp]s *.vr *.vrs |
1470c88c | 221 | rm -f gnustmp* |
4009494e GM |
222 | |
223 | clean: mostlyclean | |
8496d8d7 | 224 | rm -f $(DVI_TARGETS) $(HTML_TARGETS) $(PDF_TARGETS) $(PS_TARGETS) |
1857cd3f | 225 | rm -f efaq-w32.dvi efaq-w32.html efaq-w32.pdf efaq-w32.ps |
09af5c3e | 226 | rm -f emacs-misc-${version}.tar* |
4009494e GM |
227 | |
228 | distclean: clean | |
26e4aa7d | 229 | rm -f Makefile |
4009494e | 230 | |
2fecccba | 231 | ## buildinfodir is relative to srcdir. |
09af5c3e | 232 | infoclean: |
eb36672f | 233 | for file in $(INFO_TARGETS); do \ |
40abffe4 | 234 | file=`echo $${file} | sed 's/\.info$$//'`.info; \ |
eb36672f PE |
235 | rm -f \ |
236 | $(buildinfodir)/$${file} \ | |
237 | $(buildinfodir)/$${file}-[1-9] \ | |
238 | $(buildinfodir)/$${file}-[1-9][0-9]; \ | |
4c83f6e1 | 239 | done |
4009494e | 240 | |
0e6929ec | 241 | bootstrap-clean maintainer-clean: distclean infoclean |
09af5c3e GM |
242 | |
243 | dist: | |
244 | rm -rf emacs-misc-${version} | |
245 | mkdir emacs-misc-${version} | |
246 | cp ${srcdir}/*.texi ${srcdir}/texinfo.tex \ | |
247 | $(emacsdir)/emacsver.texi ${srcdir}/ChangeLog* \ | |
248 | emacs-misc-${version}/ | |
249 | sed -e 's/@sr[c]dir@/./' \ | |
250 | -e 's/^\(emacsdir *=\).*/\1 ./' \ | |
251 | -e 's/^\(buildinfodir *=\).*/\1 ./' \ | |
252 | -e 's/^\(clean:.*\)/\1 infoclean/' \ | |
253 | -e "s/@ver[s]ion@/${version}/" \ | |
254 | -e 's/@MAKE[I]NFO@/makeinfo/' -e 's/@MK[D]IR_P@/mkdir -p/' \ | |
09af5c3e GM |
255 | ${srcdir}/Makefile.in > emacs-misc-${version}/Makefile |
256 | @if grep '@[a-zA-Z_]*@' emacs-misc-${version}/Makefile; then \ | |
257 | echo "Unexpanded configure variables in Makefile?" 1>&2; exit 1; \ | |
258 | fi | |
259 | tar -cf emacs-misc-${version}.tar emacs-misc-${version} | |
260 | rm -rf emacs-misc-${version} | |
261 | ||
8496d8d7 GM |
262 | |
263 | .PHONY: install-dvi install-html install-pdf install-ps install-doc | |
264 | ||
265 | install-dvi: dvi | |
48f73cfb GM |
266 | umask 022; $(MKDIR_P) "$(DESTDIR)$(dvidir)" |
267 | $(INSTALL_DATA) $(DVI_TARGETS) "$(DESTDIR)$(dvidir)" | |
8496d8d7 | 268 | install-html: html |
48f73cfb GM |
269 | umask 022; $(MKDIR_P) "$(DESTDIR)$(htmldir)" |
270 | $(INSTALL_DATA) $(HTML_TARGETS) "$(DESTDIR)$(htmldir)" | |
8496d8d7 | 271 | install-pdf: pdf |
48f73cfb GM |
272 | umask 022;$(MKDIR_P) "$(DESTDIR)$(pdfdir)" |
273 | $(INSTALL_DATA) $(PDF_TARGETS) "$(DESTDIR)$(pdfdir)" | |
8496d8d7 | 274 | install-ps: ps |
48f73cfb | 275 | umask 022; $(MKDIR_P) "$(DESTDIR)$(psdir)" |
8496d8d7 | 276 | for file in $(PS_TARGETS); do \ |
48f73cfb | 277 | $(INSTALL_DATA) $${file} "$(DESTDIR)$(psdir)"; \ |
8496d8d7 | 278 | [ -n "${GZIP_PROG}" ] || continue; \ |
48f73cfb GM |
279 | rm -f "$(DESTDIR)$(psdir)/$${file}.gz"; \ |
280 | ${GZIP_PROG} -9n "$(DESTDIR)$(psdir)/$${file}"; \ | |
8496d8d7 GM |
281 | done |
282 | ||
283 | ## Top-level Makefile installs the info pages. | |
284 | install-doc: install-dvi install-html install-pdf install-ps | |
285 | ||
286 | ||
287 | ||
288 | .PHONY: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps uninstall-doc | |
289 | ||
290 | uninstall-dvi: | |
291 | for file in $(DVI_TARGETS); do \ | |
48f73cfb | 292 | rm -f "$(DESTDIR)$(dvidir)/$${file}"; \ |
8496d8d7 GM |
293 | done |
294 | uninstall-html: | |
295 | for file in $(HTML_TARGETS); do \ | |
48f73cfb | 296 | rm -f "$(DESTDIR)$(htmldir)/$${file}"; \ |
8496d8d7 GM |
297 | done |
298 | uninstall-ps: | |
299 | ext= ; [ -n "${GZIP_PROG}" ] && ext=.gz; \ | |
300 | for file in $(PS_TARGETS); do \ | |
48f73cfb | 301 | rm -f "$(DESTDIR)$(psdir)/$${file}$${ext}"; \ |
8496d8d7 GM |
302 | done |
303 | uninstall-pdf: | |
304 | for file in $(PDF_TARGETS); do \ | |
48f73cfb | 305 | rm -f "$(DESTDIR)$(pdfdir)/$${file}"; \ |
8496d8d7 GM |
306 | done |
307 | ||
308 | uninstall-doc: uninstall-dvi uninstall-html uninstall-pdf uninstall-ps | |
309 | ||
310 | ||
c21180f3 | 311 | ### Makefile ends here |