Commit | Line | Data |
---|---|---|
c7685c8d | 1 | # Maintenance productions for the Lisp directory |
73b0cd50 | 2 | # Copyright (C) 2000-2011 Free Software Foundation, Inc. |
b3ae7a0a GM |
3 | |
4 | # This file is part of GNU Emacs. | |
5 | ||
eb3fa2cf | 6 | # GNU Emacs is free software: you can redistribute it and/or modify |
b3ae7a0a | 7 | # it under the terms of the GNU General Public License as published by |
eb3fa2cf GM |
8 | # the Free Software Foundation, either version 3 of the License, or |
9 | # (at your option) any later version. | |
b3ae7a0a GM |
10 | |
11 | # GNU Emacs is distributed in the hope that it will be useful, | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | # GNU General Public License for more details. | |
15 | ||
16 | # You should have received a copy of the GNU General Public License | |
eb3fa2cf | 17 | # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
7ec641b8 | 18 | |
261f3289 EZ |
19 | SHELL = /bin/sh |
20 | ||
82c3d67a AS |
21 | srcdir = @srcdir@ |
22 | top_srcdir = @top_srcdir@ | |
23 | abs_top_builddir = @abs_top_builddir@ | |
24 | lisp = $(srcdir) | |
25 | VPATH = $(srcdir) | |
dce6b995 | 26 | |
7ec641b8 GM |
27 | # You can specify a different executable on the make command line, |
28 | # e.g. "make EMACS=../src/emacs ...". | |
29 | ||
3613edce SM |
30 | # We sometimes change directory before running Emacs (typically when |
31 | # building out-of-tree, we chdir to the source directory), so we need | |
5b5922f5 | 32 | # to use an absolute file name. |
82c3d67a | 33 | EMACS = ${abs_top_builddir}/src/emacs |
7ec641b8 | 34 | |
198a7a97 | 35 | # Command line flags for Emacs. |
7ec641b8 | 36 | |
66b7b0fe | 37 | EMACSOPT = -batch --no-site-file --no-site-lisp |
7ec641b8 | 38 | |
fc5e09b3 | 39 | # Extra flags to pass to the byte compiler |
0118d12c | 40 | BYTE_COMPILE_EXTRA_FLAGS = |
fc5e09b3 DN |
41 | # For example to not display the undefined function warnings you can use this: |
42 | # BYTE_COMPILE_EXTRA_FLAGS = --eval '(setq byte-compile-warnings (quote (not unresolved)))' | |
43 | # The example above is just for developers, it should not be used by default. | |
44 | ||
05012a71 GM |
45 | lisptagsfiles1 = $(lisp)/*.el |
46 | lisptagsfiles2 = $(lisp)/*/*.el | |
2c4cd0b0 | 47 | lisptagsfiles3 = $(lisp)/*/*/*.el |
5da62d41 | 48 | lisptagsfiles4 = $(lisp)/*/*/*/*.el |
3975988b | 49 | ETAGS = ../lib-src/etags |
c7685c8d | 50 | |
2537fa5d | 51 | # Automatically generated autoload files, apart from lisp/loaddefs.el. |
e9906608 GM |
52 | # Note this includes only those files that need special rules to |
53 | # build; ie it does not need to include things created via | |
54 | # generated-autoload-file (eg calc/calc-loaddefs.el). | |
2537fa5d | 55 | LOADDEFS = $(lisp)/calendar/cal-loaddefs.el \ |
099659f9 GM |
56 | $(lisp)/calendar/diary-loaddefs.el \ |
57 | $(lisp)/calendar/hol-loaddefs.el \ | |
0f34aa77 MA |
58 | $(lisp)/mh-e/mh-loaddefs.el \ |
59 | $(lisp)/net/tramp-loaddefs.el | |
2537fa5d | 60 | |
6b61353c KH |
61 | # Elisp files auto-generated. |
62 | AUTOGENEL = loaddefs.el \ | |
2537fa5d | 63 | $(LOADDEFS) \ |
6b61353c KH |
64 | cus-load.el \ |
65 | finder-inf.el \ | |
66 | subdirs.el \ | |
6b6a6f9e | 67 | calc/calc-loaddefs.el \ |
5da62d41 GM |
68 | eshell/esh-groups.el \ |
69 | cedet/semantic/loaddefs.el \ | |
70 | cedet/ede/loaddefs.el \ | |
71 | cedet/srecode/loaddefs.el | |
6b61353c | 72 | |
b9598260 SM |
73 | # Value of max-lisp-eval-depth when compiling initially. |
74 | # During bootstrapping the byte-compiler is run interpreted when compiling | |
75 | # itself, and uses more stack than usual. | |
76 | # | |
a9de04fa | 77 | BIG_STACK_DEPTH = 1200 |
b9598260 SM |
78 | BIG_STACK_OPTS = --eval "(setq max-lisp-eval-depth $(BIG_STACK_DEPTH))" |
79 | ||
2ec42da9 SM |
80 | BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) $(BYTE_COMPILE_EXTRA_FLAGS) |
81 | ||
170a9e70 | 82 | # Files to compile before others during a bootstrap. This is done to |
768efd84 | 83 | # speed up the bootstrap process. |
d849789b | 84 | |
dce6b995 | 85 | COMPILE_FIRST = \ |
768efd84 SM |
86 | $(lisp)/emacs-lisp/bytecomp.elc \ |
87 | $(lisp)/emacs-lisp/byte-opt.elc \ | |
0c747cb1 | 88 | $(lisp)/emacs-lisp/macroexp.elc \ |
876c194c | 89 | $(lisp)/emacs-lisp/cconv.elc \ |
b4945b95 | 90 | $(lisp)/emacs-lisp/autoload.elc |
d849789b | 91 | |
7ec641b8 GM |
92 | # The actual Emacs command run in the targets below. |
93 | ||
3b53a65b | 94 | emacs = EMACSLOADPATH=$(lisp) LC_ALL=C $(EMACS) $(EMACSOPT) |
7ec641b8 | 95 | |
80c382e5 | 96 | # Common command to find subdirectories |
3613edce | 97 | setwins=subdirs=`(find . -type d -print)`; \ |
f83a4f35 | 98 | for file in $$subdirs; do \ |
02be533b | 99 | case $$file in */.* | */.*/* | */=* ) ;; \ |
3613edce | 100 | *) wins="$$wins $$file" ;; \ |
f83a4f35 | 101 | esac; \ |
80c382e5 | 102 | done |
8464af45 | 103 | |
10498e1c | 104 | # Find all subdirectories except `obsolete' and `term'. |
3613edce | 105 | setwins_almost=subdirs=`(find . -type d -print)`; \ |
865e97c1 | 106 | for file in $$subdirs; do \ |
02be533b | 107 | case $$file in */.* | */.*/* | */=* | */obsolete | */term ) ;; \ |
3613edce | 108 | *) wins="$$wins $$file" ;; \ |
865e97c1 GM |
109 | esac; \ |
110 | done | |
80c382e5 | 111 | |
15120dec | 112 | # Find all subdirectories in which we might want to create subdirs.el |
3613edce | 113 | setwins_for_subdirs=subdirs=`(find . -type d -print)`; \ |
15120dec | 114 | for file in $$subdirs; do \ |
02be533b | 115 | case $$file in */.* | */.*/* | */=* | */cedet* ) ;; \ |
3613edce | 116 | *) wins="$$wins $$file" ;; \ |
15120dec CY |
117 | esac; \ |
118 | done | |
119 | ||
49f6eb95 SM |
120 | # `compile-main' tends to be slower than `recompile' but can be parallelized |
121 | # with "make -j" and results in more deterministic compilation warnings. | |
7fae72ef | 122 | # cus-load and finder-inf are not explicitly requested by anything, so |
fc46d219 | 123 | # we add them here to make sure they get built. |
fd471993 | 124 | all: compile-main $(lisp)/cus-load.el $(lisp)/finder-inf.el |
49f6eb95 | 125 | |
80c382e5 SM |
126 | doit: |
127 | ||
2fe51632 | 128 | # custom-deps and finder-data both used to scan _all_ the *.el files. |
7fae72ef GM |
129 | # This could lead to problems in parallel builds if automatically |
130 | # generated *.el files (eg loaddefs etc) were being changed at the same time. | |
2fe51632 GM |
131 | # One solution was to add autoloads as a prerequisite: |
132 | # http://lists.gnu.org/archive/html/emacs-pretest-bug/2007-01/msg00469.html | |
133 | # http://lists.gnu.org/archive/html/bug-gnu-emacs/2007-12/msg00171.html | |
7fae72ef | 134 | # However, this meant that running these targets modified loaddefs.el, |
2fe51632 GM |
135 | # every time (due to time-stamping). Calling these rules from |
136 | # bootstrap-after would modify loaddefs after src/emacs, resulting | |
137 | # in make install remaking src/emacs for no real reason: | |
138 | # http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00311.html | |
7fae72ef GM |
139 | # Nowadays these commands don't scan automatically generated files, |
140 | # since they will never contain any useful information | |
141 | # (see finder-no-scan-regexp and custom-dependencies-no-scan-regexp). | |
fc46d219 SM |
142 | $(lisp)/cus-load.el: |
143 | $(MAKE) $(MFLAGS) custom-deps | |
144 | custom-deps: doit | |
82c3d67a | 145 | cd $(lisp); $(setwins_almost); \ |
4746aeeb | 146 | echo Directories: $$wins; \ |
b2928357 | 147 | $(emacs) -l cus-dep --eval '(setq generated-custom-dependencies-file "$(lisp)/cus-load.el")' -f custom-make-dependencies $$wins |
009368b9 | 148 | |
fc46d219 SM |
149 | $(lisp)/finder-inf.el: |
150 | $(MAKE) $(MFLAGS) finder-data | |
151 | finder-data: doit | |
82c3d67a | 152 | cd $(lisp); $(setwins_almost); \ |
4746aeeb | 153 | echo Directories: $$wins; \ |
b2928357 | 154 | $(emacs) -l finder --eval '(setq generated-finder-keywords-file "$(lisp)/finder-inf.el")' -f finder-compile-keywords-make-dist $$wins |
009368b9 | 155 | |
a5cd8bed SM |
156 | # The chmod +w is to handle env var CVSREAD=1. Files named |
157 | # are identified by being the value of `generated-autoload-file'. | |
ee2e93e2 | 158 | autoloads: $(LOADDEFS) doit |
a5cd8bed | 159 | chmod +w $(lisp)/ps-print.el $(lisp)/emulation/tpu-edt.el \ |
15067158 | 160 | $(lisp)/emacs-lisp/cl-loaddefs.el $(lisp)/mail/rmail.el \ |
002b46b7 GM |
161 | $(lisp)/dired.el $(lisp)/ibuffer.el $(lisp)/htmlfontify.el \ |
162 | $(lisp)/emacs-lisp/eieio.el | |
82c3d67a | 163 | cd $(lisp); $(setwins_almost); \ |
4746aeeb | 164 | echo Directories: $$wins; \ |
ee2e93e2 | 165 | $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins |
f83a4f35 | 166 | |
b4945b95 | 167 | # This is required by the bootstrap-emacs target in ../src/Makefile, so |
fc46d219 | 168 | # we know that if we have an emacs executable, we also have a subdirs.el. |
cd1b15b8 | 169 | $(lisp)/subdirs.el: |
cc953d27 | 170 | $(MAKE) $(MFLAGS) update-subdirs |
98b918b6 | 171 | update-subdirs: doit |
3613edce | 172 | cd $(lisp); $(setwins_for_subdirs); \ |
98b918b6 | 173 | for file in $$wins; do \ |
82c3d67a | 174 | $(top_srcdir)/update-subdirs $$file; \ |
98b918b6 RS |
175 | done; |
176 | ||
600bc46c | 177 | updates: update-subdirs autoloads finder-data custom-deps |
c48c3772 | 178 | |
38c1ba62 EZ |
179 | # This is useful after "bzr up". |
180 | bzr-update: recompile autoloads finder-data custom-deps | |
181 | ||
182 | # For backwards compatibility: | |
183 | cvs-update: bzr-update | |
c48c3772 | 184 | |
fbb43902 GM |
185 | # Update the AUTHORS file. |
186 | ||
187 | update-authors: | |
82c3d67a | 188 | $(emacs) -l authors -f batch-update-authors $(top_srcdir)/etc/AUTHORS $(top_srcdir) |
fbb43902 | 189 | |
5da62d41 GM |
190 | TAGS TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) |
191 | els=`echo $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) | sed -e "s,$(lisp)/[^ ]*loaddefs[^ ]*,," -e "s,$(lisp)/ldefs-boot[^ ]*,,"`; \ | |
05012a71 | 192 | ${ETAGS} -o $@ $$els |
7ec641b8 | 193 | |
768efd84 SM |
194 | # The src/Makefile.in has its own set of dependencies and when they decide |
195 | # that one Lisp file needs to be re-compiled, we had better recompile it as | |
196 | # well, otherwise every subsequent make will again call us, until we finally | |
197 | # end up deciding that yes, the file deserves recompilation. | |
198 | # One option is to try and reproduce exactly the same dependencies here as | |
199 | # we have in src/Makefile.in, but it turns out to be painful | |
200 | # (e.g. src/Makefile.in may have a dependency for ../lisp/foo.elc where we | |
201 | # only know of $(lisp)/foo.elc). So instead we provide a direct way for | |
202 | # src/Makefile.in to rebuild a particular Lisp file, no questions asked. | |
12464992 GM |
203 | # Use byte-compile-refresh-preloaded to try and work around some of |
204 | # the most common problems of not bootstrapping from a clean state. | |
768efd84 SM |
205 | compile-onefile: |
206 | @echo Compiling $(THEFILE) | |
384ca163 SM |
207 | @# Use byte-compile-refresh-preloaded to try and work around some of |
208 | @# the most common bootstrapping problems. | |
7200d79c SM |
209 | @$(emacs) $(BYTE_COMPILE_FLAGS) \ |
210 | -l bytecomp -f byte-compile-refresh-preloaded \ | |
f43cb649 | 211 | -f batch-byte-compile $(THEFILE) |
768efd84 | 212 | |
ef7f89b2 GM |
213 | # Files MUST be compiled one by one. If we compile several files in a |
214 | # row (i.e., in the same instance of Emacs) we can't make sure that | |
938cbd34 LK |
215 | # the compilation environment is clean. We also set the load-path of |
216 | # the Emacs used for compilation to the current directory and its | |
217 | # subdirectories, to make sure require's and load's in the files being | |
218 | # compiled find the right files. | |
29ad9e56 | 219 | |
ef7f89b2 GM |
220 | .SUFFIXES: .elc .el |
221 | ||
222 | # An old-fashioned suffix rule, which, according to the GNU Make manual, | |
223 | # cannot have prerequisites. | |
ef7f89b2 GM |
224 | .el.elc: |
225 | @echo Compiling $< | |
d032d5e7 SM |
226 | @# The BIG_STACK_OPTS are only needed to byte-compile the byte-compiler |
227 | @# files, which is normally done in compile-first, but may also be | |
228 | @# recompiled via this rule. | |
2ec42da9 | 229 | @$(emacs) $(BYTE_COMPILE_FLAGS) \ |
f43cb649 | 230 | -f batch-byte-compile $< |
ef7f89b2 | 231 | |
111a9dff | 232 | .PHONY: compile-first compile-main compile compile-always |
ef7f89b2 | 233 | |
768efd84 | 234 | compile-first: $(COMPILE_FIRST) |
61b92c33 | 235 | |
111a9dff SM |
236 | # In `compile-main' we could directly do |
237 | # ... | xargs $(MAKE) $(MFLAGS) EMACS="$(EMACS)" | |
238 | # and it works, but it generates a lot of messages like | |
239 | # make[2]: « gnus/gnus-mlspl.elc » is up to date. | |
240 | # so instead, we use "xargs echo" to split the list of file into manageable | |
241 | # chunks and then use an intermediate `compile-targets' target so the | |
242 | # actual targets (the .elc files) are not mentioned as targets on the | |
243 | # make command line. | |
244 | ||
245 | ||
246 | .PHONY: compile-targets | |
247 | # TARGETS is set dynamically in the recursive call from `compile-main'. | |
248 | compile-targets: $(TARGETS) | |
249 | ||
250 | # Compile all the Elisp files that need it. Beware: it approximates | |
251 | # `no-byte-compile', so watch out for false-positives! | |
64cb11cc | 252 | compile-main: compile-clean |
835e2c65 | 253 | @(cd $(lisp); $(setwins); \ |
111a9dff SM |
254 | els=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.el |g'`; \ |
255 | for el in $$els; do \ | |
256 | test -f $$el || continue; \ | |
257 | test ! -f $${el}c && GREP_OPTIONS= grep '^;.*no-byte-compile: t' $$el > /dev/null && continue; \ | |
258 | echo "$${el}c"; \ | |
835e2c65 | 259 | done | xargs echo) | \ |
111a9dff SM |
260 | while read chunk; do \ |
261 | $(MAKE) $(MFLAGS) compile-targets EMACS="$(EMACS)" TARGETS="$$chunk"; \ | |
262 | done | |
ef7f89b2 | 263 | |
64cb11cc SM |
264 | .PHONY: compile-clean |
265 | # Erase left-over .elc files that do not have a corresponding .el file. | |
266 | compile-clean: | |
267 | @cd $(lisp); $(setwins); \ | |
268 | elcs=`echo "$$wins " | sed -e 's|/\./|/|g' -e 's|/\. | |g' -e 's| |/*.elc |g'`; \ | |
290fe464 | 269 | for el in `echo $$elcs | sed -e 's/\.elc/\.el/g'`; do \ |
64cb11cc SM |
270 | if test -f "$$el" -o \! -f "$${el}c"; then :; else \ |
271 | echo rm "$${el}c"; \ | |
272 | rm "$${el}c"; \ | |
273 | fi \ | |
274 | done | |
275 | ||
ef7f89b2 GM |
276 | # Compile all Lisp files, but don't recompile those that are up to |
277 | # date. Some .el files don't get compiled because they set the | |
278 | # local variable no-byte-compile. | |
279 | # Calling make recursively because suffix rule cannot have prerequisites. | |
2c01ac6a GM |
280 | # Explicitly pass EMACS (sometimes ../src/bootstrap-emacs) to those |
281 | # sub-makes that run rules that use it, for the sake of some non-GNU makes. | |
fd471993 | 282 | compile: $(LOADDEFS) autoloads compile-first |
82c3d67a | 283 | $(MAKE) $(MFLAGS) compile-main EMACS=$(EMACS) |
2fe51632 | 284 | |
938cbd34 LK |
285 | # Compile all Lisp files. This is like `compile' but compiles files |
286 | # unconditionally. Some files don't actually get compiled because they | |
287 | # set the local variable no-byte-compile. | |
ef7f89b2 | 288 | compile-always: doit |
5da62d41 | 289 | cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc |
2c01ac6a | 290 | $(MAKE) $(MFLAGS) compile EMACS=$(EMACS) |
938cbd34 | 291 | |
fd471993 CY |
292 | compile-calc: |
293 | for el in $(lisp)/calc/*.el; do \ | |
294 | echo Compiling $$el; \ | |
7200d79c | 295 | $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile $$el || exit 1;\ |
fd471993 CY |
296 | done |
297 | ||
a9b67cf4 GM |
298 | # Backup compiled Lisp files in elc.tar.gz. If that file already |
299 | # exists, make a backup of it. | |
300 | ||
301 | backup-compiled-files: | |
dce6b995 | 302 | -mv $(lisp)/elc.tar.gz $(lisp)/elc.tar.gz~ |
5da62d41 | 303 | -tar czf $(lisp)/elc.tar.gz $(lisp)/*.elc $(lisp)/*/*.elc $(lisp)/*/*/*.elc $(lisp)/*/*/*/*.elc |
a9b67cf4 GM |
304 | |
305 | # Compile Lisp files, but save old compiled files first. | |
306 | ||
61b92c33 | 307 | compile-after-backup: backup-compiled-files compile-always |
a9b67cf4 | 308 | |
773cb1a4 NR |
309 | # Recompile all Lisp files which are newer than their .elc files and compile |
310 | # new ones. | |
111a9dff | 311 | # This has the same effect as compile-main. recompile has some advantages: |
df19c2fb GM |
312 | # i) It is faster (on a single processor), since it only has to start |
313 | # Emacs once. It was 33% faster on a test with a random 10% of the .el | |
314 | # files needing recompilation. | |
315 | # ii) The explicit cc-mode dependency. | |
316 | # recompile's disadvantages are: | |
317 | # i) Not parallelizable. | |
318 | # ii) Compiling multiple files in the same instance of Emacs is wrong, | |
319 | # since the environment of later files is affected by definitions in | |
320 | # earlier ones. | |
f7a043c3 | 321 | recompile: doit $(LOADDEFS) compile-first $(lisp)/progmodes/cc-mode.elc |
2ec42da9 SM |
322 | $(emacs) $(BYTE_COMPILE_FLAGS) \ |
323 | --eval "(batch-byte-recompile-directory 0)" $(lisp) | |
7ec641b8 | 324 | |
1eee3de4 | 325 | # Update MH-E internal autoloads. These are not to be confused with |
2537fa5d | 326 | # the autoloads for the MH-E entry points, which are already in loaddefs.el. |
e9906608 GM |
327 | MH_E_DIR = $(lisp)/mh-e |
328 | ## MH_E_SRC avoids a circular dependency warning for mh-loaddefs.el. | |
329 | MH_E_SRC = $(MH_E_DIR)/mh-acros.el $(MH_E_DIR)/mh-alias.el \ | |
330 | $(MH_E_DIR)/mh-buffers.el $(MH_E_DIR)/mh-compat.el \ | |
331 | $(MH_E_DIR)/mh-comp.el $(MH_E_DIR)/mh-e.el \ | |
332 | $(MH_E_DIR)/mh-folder.el $(MH_E_DIR)/mh-funcs.el \ | |
333 | $(MH_E_DIR)/mh-gnus.el $(MH_E_DIR)/mh-identity.el \ | |
334 | $(MH_E_DIR)/mh-inc.el $(MH_E_DIR)/mh-junk.el \ | |
335 | $(MH_E_DIR)/mh-letter.el $(MH_E_DIR)/mh-limit.el \ | |
336 | $(MH_E_DIR)/mh-mime.el $(MH_E_DIR)/mh-print.el \ | |
337 | $(MH_E_DIR)/mh-scan.el $(MH_E_DIR)/mh-search.el \ | |
338 | $(MH_E_DIR)/mh-seq.el $(MH_E_DIR)/mh-show.el \ | |
339 | $(MH_E_DIR)/mh-speed.el $(MH_E_DIR)/mh-thread.el \ | |
340 | $(MH_E_DIR)/mh-tool-bar.el $(MH_E_DIR)/mh-utils.el \ | |
341 | $(MH_E_DIR)/mh-xface.el | |
342 | ||
343 | mh-autoloads: $(MH_E_DIR)/mh-loaddefs.el | |
fc46d219 | 344 | $(MH_E_DIR)/mh-loaddefs.el: $(MH_E_SRC) |
2537fa5d | 345 | $(emacs) -l autoload \ |
a6f6840e | 346 | --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \ |
2537fa5d | 347 | --eval "(setq generated-autoload-file \"$@\")" \ |
a6f6840e | 348 | --eval "(setq make-backup-files nil)" \ |
e9906608 GM |
349 | -f batch-update-autoloads $(MH_E_DIR) |
350 | ||
7a6ebb1a | 351 | # Update TRAMP internal autoloads. Maybe we could move tramp*.el into |
0f34aa77 MA |
352 | # an own subdirectory. OTOH, it does not hurt to keep them in |
353 | # lisp/net. | |
354 | TRAMP_DIR = $(lisp)/net | |
355 | TRAMP_SRC = $(TRAMP_DIR)/tramp.el $(TRAMP_DIR)/tramp-cache.el \ | |
356 | $(TRAMP_DIR)/tramp-cmds.el $(TRAMP_DIR)/tramp-compat.el \ | |
03c1ad43 | 357 | $(TRAMP_DIR)/tramp-ftp.el $(TRAMP_DIR)/tramp-gvfs.el \ |
7a6ebb1a MA |
358 | $(TRAMP_DIR)/tramp-gw.el $(TRAMP_DIR)/tramp-sh.el \ |
359 | $(TRAMP_DIR)/tramp-smb.el $(TRAMP_DIR)/tramp-uu.el \ | |
360 | $(TRAMP_DIR)/trampver.el | |
0f34aa77 MA |
361 | |
362 | $(TRAMP_DIR)/tramp-loaddefs.el: $(TRAMP_SRC) | |
363 | $(emacs) -l autoload \ | |
364 | --eval "(setq generate-autoload-cookie \";;;###tramp-autoload\")" \ | |
365 | --eval "(setq generated-autoload-file \"$@\")" \ | |
366 | --eval "(setq make-backup-files nil)" \ | |
367 | -f batch-update-autoloads $(TRAMP_DIR) | |
368 | ||
e9906608 GM |
369 | CAL_DIR = $(lisp)/calendar |
370 | ## Those files that may contain internal calendar autoload cookies. | |
371 | ## Avoids circular dependency warning for *-loaddefs.el. | |
372 | CAL_SRC = $(CAL_DIR)/cal-bahai.el $(CAL_DIR)/cal-china.el \ | |
373 | $(CAL_DIR)/cal-coptic.el $(CAL_DIR)/cal-dst.el \ | |
374 | $(CAL_DIR)/cal-french.el $(CAL_DIR)/cal-hebrew.el \ | |
375 | $(CAL_DIR)/cal-html.el $(CAL_DIR)/cal-islam.el \ | |
376 | $(CAL_DIR)/cal-iso.el $(CAL_DIR)/cal-julian.el \ | |
377 | $(CAL_DIR)/cal-mayan.el $(CAL_DIR)/cal-menu.el \ | |
378 | $(CAL_DIR)/cal-move.el $(CAL_DIR)/cal-persia.el \ | |
379 | $(CAL_DIR)/cal-tex.el $(CAL_DIR)/cal-x.el \ | |
380 | $(CAL_DIR)/calendar.el $(CAL_DIR)/diary-lib.el \ | |
381 | $(CAL_DIR)/holidays.el $(CAL_DIR)/lunar.el \ | |
382 | $(CAL_DIR)/solar.el | |
383 | ||
fc46d219 | 384 | $(CAL_DIR)/cal-loaddefs.el: $(CAL_SRC) |
2537fa5d GM |
385 | $(emacs) -l autoload \ |
386 | --eval "(setq generate-autoload-cookie \";;;###cal-autoload\")" \ | |
387 | --eval "(setq generated-autoload-file \"$@\")" \ | |
388 | --eval "(setq make-backup-files nil)" \ | |
e9906608 | 389 | -f batch-update-autoloads $(CAL_DIR) |
2537fa5d | 390 | |
fc46d219 | 391 | $(CAL_DIR)/diary-loaddefs.el: $(CAL_SRC) |
2537fa5d GM |
392 | $(emacs) -l autoload \ |
393 | --eval "(setq generate-autoload-cookie \";;;###diary-autoload\")" \ | |
394 | --eval "(setq generated-autoload-file \"$@\")" \ | |
395 | --eval "(setq make-backup-files nil)" \ | |
e9906608 | 396 | -f batch-update-autoloads $(CAL_DIR) |
2537fa5d | 397 | |
fc46d219 | 398 | $(CAL_DIR)/hol-loaddefs.el: $(CAL_SRC) |
2537fa5d GM |
399 | $(emacs) -l autoload \ |
400 | --eval "(setq generate-autoload-cookie \";;;###holiday-autoload\")" \ | |
401 | --eval "(setq generated-autoload-file \"$@\")" \ | |
402 | --eval "(setq make-backup-files nil)" \ | |
e9906608 | 403 | -f batch-update-autoloads $(CAL_DIR) |
2537fa5d | 404 | |
6b61353c KH |
405 | # Prepare a bootstrap in the lisp subdirectory. |
406 | # | |
f586d18e LK |
407 | # Build loaddefs.el to make sure it's up-to-date. If it's not, that |
408 | # might lead to errors during the bootstrap because something fails to | |
409 | # autoload as expected. If there is no emacs binary, then we can't | |
71d77b40 LT |
410 | # build autoloads yet. In that case we have to use ldefs-boot.el. |
411 | # Bootstrap should always work with ldefs-boot.el. Therefore, | |
412 | # whenever a new autoload cookie gets added that is necessary during | |
413 | # bootstrapping, ldefs-boot.el should be updated by overwriting it with | |
414 | # an up-to-date copy of loaddefs.el that is uncorrupted by | |
415 | # local changes. (Because loaddefs.el is an automatically generated | |
416 | # file, we don't want to store it in the source repository). | |
6b61353c | 417 | |
fc46d219 | 418 | bootstrap-clean: |
5da62d41 | 419 | cd $(lisp); rm -f *.elc */*.elc */*/*.elc */*/*/*.elc $(AUTOGENEL) |
a9b67cf4 | 420 | |
b7bc82c5 | 421 | distclean: |
64865454 | 422 | -rm -f ./Makefile |
b7bc82c5 SM |
423 | |
424 | maintainer-clean: distclean bootstrap-clean | |
43280888 | 425 | |
f772cd18 GM |
426 | .PHONY: check-declare |
427 | ||
428 | check-declare: | |
429 | $(emacs) -l $(lisp)/emacs-lisp/check-declare \ | |
430 | --eval '(check-declare-directory "$(lisp)")' | |
431 | ||
4860b1b8 EZ |
432 | # Dependencies |
433 | ||
434 | # CC Mode uses a compile time macro system which causes a compile time | |
435 | # dependency in cc-*.elc files on the macros in other cc-*.el and the | |
436 | # version string in cc-defs.el. | |
437 | $(lisp)/progmodes/cc-align.elc $(lisp)/progmodes/cc-awk.elc\ | |
438 | $(lisp)/progmodes/cc-cmds.elc $(lisp)/progmodes/cc-compat.elc\ | |
439 | $(lisp)/progmodes/cc-engine.elc $(lisp)/progmodes/cc-fonts.elc\ | |
440 | $(lisp)/progmodes/cc-langs.elc $(lisp)/progmodes/cc-menus.elc\ | |
441 | $(lisp)/progmodes/cc-mode.elc $(lisp)/progmodes/cc-styles.elc\ | |
1f35fda9 | 442 | $(lisp)/progmodes/cc-vars.elc: \ |
4860b1b8 EZ |
443 | $(lisp)/progmodes/cc-bytecomp.elc $(lisp)/progmodes/cc-defs.elc |
444 | ||
445 | $(lisp)/progmodes/cc-align.elc: \ | |
446 | $(lisp)/progmodes/cc-vars.elc $(lisp)/progmodes/cc-engine.elc | |
447 | ||
448 | $(lisp)/progmodes/cc-cmds.elc: \ | |
449 | $(lisp)/progmodes/cc-vars.elc $(lisp)/progmodes/cc-engine.elc | |
450 | ||
451 | $(lisp)/progmodes/cc-compat.elc: \ | |
452 | $(lisp)/progmodes/cc-vars.elc $(lisp)/progmodes/cc-styles.elc \ | |
453 | $(lisp)/progmodes/cc-engine.elc | |
454 | ||
455 | $(lisp)/progmodes/cc-defs.elc: $(lisp)/progmodes/cc-bytecomp.elc \ | |
456 | $(lisp)/emacs-lisp/cl.elc $(lisp)/emacs-lisp/regexp-opt.elc | |
457 | ||
458 | $(lisp)/progmodes/cc-engine.elc: $(lisp)/progmodes/cc-langs.elc \ | |
459 | $(lisp)/progmodes/cc-vars.elc | |
460 | ||
461 | $(lisp)/progmodes/cc-fonts.elc: $(lisp)/progmodes/cc-langs.elc \ | |
462 | $(lisp)/progmodes/cc-vars.elc $(lisp)/progmodes/cc-engine.elc \ | |
463 | $(lisp)/font-lock.elc | |
464 | ||
465 | $(lisp)/progmodes/cc-langs.elc: $(lisp)/progmodes/cc-vars.elc \ | |
466 | $(lisp)/emacs-lisp/cl.elc | |
467 | ||
468 | $(lisp)/progmodes/cc-mode.elc: $(lisp)/progmodes/cc-langs.elc \ | |
469 | $(lisp)/progmodes/cc-vars.elc $(lisp)/progmodes/cc-engine.elc \ | |
470 | $(lisp)/progmodes/cc-styles.elc $(lisp)/progmodes/cc-cmds.elc \ | |
471 | $(lisp)/progmodes/cc-align.elc $(lisp)/progmodes/cc-menus.elc | |
472 | ||
473 | $(lisp)/progmodes/cc-styles.elc: $(lisp)/progmodes/cc-vars.elc \ | |
474 | $(lisp)/progmodes/cc-align.elc | |
475 | ||
4860b1b8 | 476 | $(lisp)/progmodes/cc-vars.elc: $(lisp)/custom.elc $(lisp)/widget.elc |
2c65e87c EZ |
477 | |
478 | # MH-E dependencies, mainly to prevent failures with parallel | |
479 | # compilation, due to race conditions between writing a given FOO.elc | |
480 | # file and another file being compiled that says "(require FOO)", | |
481 | # which causes Emacs to try to read FOO.elc. | |
482 | $(MH_E_DIR)/mh-alias.elc $(MH_E_DIR)/mh-comp.elc $(MH_E_DIR)/mh-folder.elc\ | |
483 | $(MH_E_DIR)/mh-funcs.elc $(MH_E_DIR)/mh-identity.elc $(MH_E_DIR)/mh-inc.elc\ | |
484 | $(MH_E_DIR)/mh-junk.elc $(MH_E_DIR)/mh-letter.elc $(MH_E_DIR)/mh-limit.elc\ | |
485 | $(MH_E_DIR)/mh-mime.elc $(MH_E_DIR)/mh-print.elc $(MH_E_DIR)/mh-scan.elc\ | |
486 | $(MH_E_DIR)/mh-search.elc $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-show.elc\ | |
487 | $(MH_E_DIR)/mh-speed.elc $(MH_E_DIR)/mh-thread.elc $(MH_E_DIR)/mh-tool-bar.elc\ | |
488 | $(MH_E_DIR)/mh-utils.elc $(MH_E_DIR)/mh-xface.elc:\ | |
489 | $(MH_E_DIR)/mh-e.elc | |
490 | ||
491 | $(MH_E_DIR)/mh-alias.elc $(MH_E_DIR)/mh-e.elc $(MH_E_DIR)/mh-folder.elc\ | |
492 | $(MH_E_DIR)/mh-inc.elc $(MH_E_DIR)/mh-junk.elc $(MH_E_DIR)/mh-limit.elc\ | |
493 | $(MH_E_DIR)/mh-search.elc $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-speed.elc\ | |
494 | $(MH_E_DIR)/mh-utils.elc $(MH_E_DIR)/mh-xface.elc:\ | |
495 | $(lisp)/emacs-lisp/cl.elc | |
496 | ||
497 | $(MH_E_DIR)/mh-comp.elc $(MH_E_DIR)/mh-folder.elc $(MH_E_DIR)/mh-funcs.elc\ | |
498 | $(MH_E_DIR)/mh-junk.elc $(MH_E_DIR)/mh-limit.elc $(MH_E_DIR)/mh-print.elc\ | |
499 | $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-show.elc $(MH_E_DIR)/mh-thread.elc:\ | |
500 | $(MH_E_DIR)/mh-scan.elc | |
501 | ||
502 | $(MH_E_DIR)/mh-folder.elc $(MH_E_DIR)/mh-letter.elc $(MH_E_DIR)/mh-mime.elc\ | |
503 | $(MH_E_DIR)/mh-search.elc $(MH_E_DIR)/mh-show.elc $(MH_E_DIR)/mh-speed.elc:\ | |
504 | $(lisp)/gnus/gnus-util.elc | |
505 | ||
506 | $(MH_E_DIR)/mh-folder.elc $(MH_E_DIR)/mh-search.elc:\ | |
507 | $(lisp)/progmodes/which-func.elc | |
508 | ||
509 | $(MH_E_DIR)/mh-letter.elc $(MH_E_DIR)/mh-seq.elc $(MH_E_DIR)/mh-show.elc\ | |
510 | $(MH_E_DIR)/mh-utils.elc:\ | |
511 | $(lisp)/font-lock.elc | |
512 | ||
513 | $(MH_E_DIR)/mh-alias.elc $(MH_E_DIR)/mh-show.elc: $(lisp)/net/goto-addr.elc | |
514 | ||
515 | $(MH_E_DIR)/mh-comp.elc: $(lisp)/mail/sendmail.elc | |
516 | ||
517 | $(MH_E_DIR)/mh-e.elc: $(MH_E_DIR)/mh-buffers.elc $(lisp)/gnus/gnus.elc \ | |
518 | $(lisp)/cus-face.elc | |
519 | ||
520 | $(MH_E_DIR)/mh-letter.elc: $(lisp)/gnus/mailcap.elc $(lisp)/gnus/mm-decode.elc \ | |
521 | $(lisp)/gnus/mm-view.elc $(lisp)/gnus/mml.elc $(lisp)/gnus/message.elc | |
522 | ||
523 | $(MH_E_DIR)/mh-print.elc: $(lisp)/ps-print.elc | |
524 | ||
525 | $(MH_E_DIR)/mh-search.elc: $(lisp)/imenu.elc | |
526 | ||
527 | $(MH_E_DIR)/mh-show.elc: $(lisp)/gnus/gnus-cite.elc | |
528 | ||
529 | $(MH_E_DIR)/mh-speed.elc: $(lisp)/speedbar.elc $(lisp)/emacs-lisp/timer.elc | |
530 | ||
531 | $(MH_E_DIR)/mh-tool-bar.elc: $(lisp)/tool-bar.elc | |
532 | ||
7ec641b8 | 533 | # Makefile ends here. |