diff options
| author | Stefan Monnier | 2008-06-22 13:57:28 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2008-06-22 13:57:28 +0000 |
| commit | b4945b9599f0651fef5fa2ca2ef6034fa0b5bfaa (patch) | |
| tree | d61baf573d7a8303e0935741b886a33337e401c7 | |
| parent | 3656581540295dc1d28e2c3341092dba057f2523 (diff) | |
| download | emacs-b4945b9599f0651fef5fa2ca2ef6034fa0b5bfaa.tar.gz emacs-b4945b9599f0651fef5fa2ca2ef6034fa0b5bfaa.zip | |
* Makefile.in ${SUBDIR}: Pass additional BOOTSTRAPEMACS argument.
* Makefile.in (${lisp} ${SOME_MACHINE_LISP}, ../lisp/loaddefs.el):
Use $(BOOTSTRAPEMACS) rather than witness-emacs.
(bootstrap-emacs${EXEEXT}): Merge witness-emacs into it.
(witness-emacs): Remove.
(lisp, shortlisp): Move loaddefs.el earlier.
(mostlyclean): Forget about witness-emacs.
* Makefile.in (COMPILE_FIRST): Trim down and add autoload.el.
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | Makefile.in | 15 | ||||
| -rw-r--r-- | lisp/ChangeLog | 8 | ||||
| -rw-r--r-- | lisp/Makefile.in | 11 | ||||
| -rw-r--r-- | src/ChangeLog | 9 | ||||
| -rw-r--r-- | src/Makefile.in | 48 |
6 files changed, 61 insertions, 34 deletions
| @@ -1,3 +1,7 @@ | |||
| 1 | 2008-06-22 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * Makefile.in ${SUBDIR}: Pass additional BOOTSTRAPEMACS argument. | ||
| 4 | |||
| 1 | 2008-06-22 Glenn Morris <rgm@gnu.org> | 5 | 2008-06-22 Glenn Morris <rgm@gnu.org> |
| 2 | 6 | ||
| 3 | * Makefile.in (top_bootclean): Remove obsolete references to lock/. | 7 | * Makefile.in (top_bootclean): Remove obsolete references to lock/. |
diff --git a/Makefile.in b/Makefile.in index ae92424bf8e..abd61490fbe 100644 --- a/Makefile.in +++ b/Makefile.in | |||
| @@ -315,10 +315,21 @@ lib-src: FRC src/config.stamp | |||
| 315 | # We need to build `emacs' in `src' to compile the *.elc files in `lisp'. | 315 | # We need to build `emacs' in `src' to compile the *.elc files in `lisp'. |
| 316 | lisp: src | 316 | lisp: src |
| 317 | 317 | ||
| 318 | # Pass to src/Makefile.in an additional BOOTSTRAPEMACS variable which | ||
| 319 | # is either set to bootstrap-emacs (in case bootstrap-emacs has not been | ||
| 320 | # constructed yet) or the empty string (otherwise). | ||
| 321 | # src/Makefile.in uses it to implement conditional dependencies, so that | ||
| 322 | # files that need bootstrap-emacs to be built do not additionally need | ||
| 323 | # to be kept fresher than bootstrap-emacs. Otherwise changing a single | ||
| 324 | # file src/foo.c forces dumping a new bootstrap-emacs, then re-byte-compiling | ||
| 325 | # all preloaded elisp files, and only then dump the actual src/emacs, which | ||
| 326 | # is not wrong, but is overkill in 99.99% of the cases. | ||
| 318 | ${SUBDIR}: ${SUBDIR_MAKEFILES} FRC | 327 | ${SUBDIR}: ${SUBDIR_MAKEFILES} FRC |
| 319 | cd $@; $(MAKE) all $(MFLAGS) \ | 328 | boot=bootstrap-emacs$(EXEEXT); \ |
| 329 | if [ -x "src/$$boot" ]; then boot=""; fi; \ | ||
| 330 | cd $@; $(MAKE) all $(MFLAGS) \ | ||
| 320 | CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ | 331 | CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \ |
| 321 | LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' | 332 | LDFLAGS='${LDFLAGS}' MAKE='${MAKE}' BOOTSTRAPEMACS="$$boot" |
| 322 | 333 | ||
| 323 | blessmail: ${SUBDIR_MAKEFILES} src FRC | 334 | blessmail: ${SUBDIR_MAKEFILES} src FRC |
| 324 | cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \ | 335 | cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \ |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cd261b239d6..9fa1098b70b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2008-06-22 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * Makefile.in (COMPILE_FIRST): Trim down and add autoload.el. | ||
| 4 | |||
| 1 | 2008-06-21 John Paul Wallington <jpw@pobox.com> | 5 | 2008-06-21 John Paul Wallington <jpw@pobox.com> |
| 2 | 6 | ||
| 3 | * emacs-lisp/derived.el (define-derived-mode): Add `doc-string' decl. | 7 | * emacs-lisp/derived.el (define-derived-mode): Add `doc-string' decl. |
| @@ -21,8 +25,8 @@ | |||
| 21 | 25 | ||
| 22 | * emacs-lisp/debug.el (help-xref-interned): Declare. | 26 | * emacs-lisp/debug.el (help-xref-interned): Declare. |
| 23 | 27 | ||
| 24 | * emacs-lisp/easy-mmode.el (easy-mmode-set-keymap-parents): Evaluate | 28 | * emacs-lisp/easy-mmode.el (easy-mmode-set-keymap-parents): |
| 25 | definition when compiling. | 29 | Evaluate definition when compiling. |
| 26 | 30 | ||
| 27 | * progmodes/bug-reference.el (bug-reference-map): Bind down-mouse-1 | 31 | * progmodes/bug-reference.el (bug-reference-map): Bind down-mouse-1 |
| 28 | rather than mouse-1. | 32 | rather than mouse-1. |
diff --git a/lisp/Makefile.in b/lisp/Makefile.in index d391080f493..7a94886735c 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in | |||
| @@ -63,18 +63,11 @@ AUTOGENEL = loaddefs.el \ | |||
| 63 | 63 | ||
| 64 | # Files to compile before others during a bootstrap. This is done to | 64 | # Files to compile before others during a bootstrap. This is done to |
| 65 | # speed up the bootstrap process. | 65 | # speed up the bootstrap process. |
| 66 | # Why `subr.elc'? It's dumped so byte-compiling it early shouldn't make | ||
| 67 | # any difference!? --Stef | ||
| 68 | # Some CC files are compiled first because CC mode tweaks the compilation | ||
| 69 | # process, and requiring cc-mode when it is not compiled doesn't work during | ||
| 70 | # the bootstrapping. | ||
| 71 | 66 | ||
| 72 | COMPILE_FIRST = \ | 67 | COMPILE_FIRST = \ |
| 73 | $(lisp)/emacs-lisp/bytecomp.elc \ | 68 | $(lisp)/emacs-lisp/bytecomp.elc \ |
| 74 | $(lisp)/emacs-lisp/byte-opt.elc \ | 69 | $(lisp)/emacs-lisp/byte-opt.elc \ |
| 75 | $(lisp)/subr.elc \ | 70 | $(lisp)/emacs-lisp/autoload.elc |
| 76 | $(lisp)/progmodes/cc-mode.elc \ | ||
| 77 | $(lisp)/progmodes/cc-vars.elc | ||
| 78 | 71 | ||
| 79 | # The actual Emacs command run in the targets below. | 72 | # The actual Emacs command run in the targets below. |
| 80 | 73 | ||
| @@ -145,7 +138,7 @@ autoloads: $(LOADDEFS) doit | |||
| 145 | echo Directories: $$wins; \ | 138 | echo Directories: $$wins; \ |
| 146 | $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins | 139 | $(emacs) -l autoload --eval '(setq generated-autoload-file "$(lisp)/loaddefs.el")' -f batch-update-autoloads $$wins |
| 147 | 140 | ||
| 148 | # This is required by the witness-emacs target in ../src/Makefile, so | 141 | # This is required by the bootstrap-emacs target in ../src/Makefile, so |
| 149 | # we know that if we have an emacs executable, we also have a subdirs.el. | 142 | # we know that if we have an emacs executable, we also have a subdirs.el. |
| 150 | $(lisp)/subdirs.el: | 143 | $(lisp)/subdirs.el: |
| 151 | $(MAKE) $(MFLAGS) update-subdirs | 144 | $(MAKE) $(MFLAGS) update-subdirs |
diff --git a/src/ChangeLog b/src/ChangeLog index 52b7bf078f4..fc0a84128b3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2008-06-22 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * Makefile.in (${lisp} ${SOME_MACHINE_LISP}, ../lisp/loaddefs.el): | ||
| 4 | Use $(BOOTSTRAPEMACS) rather than witness-emacs. | ||
| 5 | (bootstrap-emacs${EXEEXT}): Merge witness-emacs into it. | ||
| 6 | (witness-emacs): Remove. | ||
| 7 | (lisp, shortlisp): Move loaddefs.el earlier. | ||
| 8 | (mostlyclean): Forget about witness-emacs. | ||
| 9 | |||
| 1 | 2008-06-22 Glenn Morris <rgm@gnu.org> | 10 | 2008-06-22 Glenn Morris <rgm@gnu.org> |
| 2 | 11 | ||
| 3 | * Makefile.in (witness-emacs): Depend on temacs${EXEEXT}. | 12 | * Makefile.in (witness-emacs): Depend on temacs${EXEEXT}. |
diff --git a/src/Makefile.in b/src/Makefile.in index 8c85c2c4414..140f944e0d6 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -680,7 +680,11 @@ otherobj= $(termcapobj) lastfile.o $(mallocobj) $(widgetobj) $(LIBOBJS) | |||
| 680 | Files included conditionally here should be included (unconditionally) | 680 | Files included conditionally here should be included (unconditionally) |
| 681 | in SOME_MACHINE_LISP. */ | 681 | in SOME_MACHINE_LISP. */ |
| 682 | 682 | ||
| 683 | /* Please loaddefs.el first, so it gets generated first, since it is on | ||
| 684 | the critical path (relevant in parallel compilations). */ | ||
| 685 | |||
| 683 | lisp= \ | 686 | lisp= \ |
| 687 | ${lispsource}loaddefs.el \ | ||
| 684 | ${lispsource}abbrev.elc \ | 688 | ${lispsource}abbrev.elc \ |
| 685 | ${lispsource}buff-menu.elc \ | 689 | ${lispsource}buff-menu.elc \ |
| 686 | ${lispsource}button.elc \ | 690 | ${lispsource}button.elc \ |
| @@ -705,7 +709,6 @@ lisp= \ | |||
| 705 | ${lispsource}isearch.elc \ | 709 | ${lispsource}isearch.elc \ |
| 706 | ${lispsource}rfn-eshadow.elc \ | 710 | ${lispsource}rfn-eshadow.elc \ |
| 707 | ${lispsource}loadup.el \ | 711 | ${lispsource}loadup.el \ |
| 708 | ${lispsource}loaddefs.el \ | ||
| 709 | ${lispsource}bindings.elc \ | 712 | ${lispsource}bindings.elc \ |
| 710 | ${lispsource}emacs-lisp/map-ynp.elc \ | 713 | ${lispsource}emacs-lisp/map-ynp.elc \ |
| 711 | ${lispsource}menu-bar.elc \ | 714 | ${lispsource}menu-bar.elc \ |
| @@ -775,6 +778,7 @@ lisp= \ | |||
| 775 | It need not contain the files that are loaded conditionally | 778 | It need not contain the files that are loaded conditionally |
| 776 | because SOME_MACHINE_LISP has those. */ | 779 | because SOME_MACHINE_LISP has those. */ |
| 777 | shortlisp= \ | 780 | shortlisp= \ |
| 781 | ../lisp/loaddefs.el \ | ||
| 778 | ../lisp/abbrev.elc \ | 782 | ../lisp/abbrev.elc \ |
| 779 | ../lisp/buff-menu.elc \ | 783 | ../lisp/buff-menu.elc \ |
| 780 | ../lisp/button.elc \ | 784 | ../lisp/button.elc \ |
| @@ -797,7 +801,6 @@ shortlisp= \ | |||
| 797 | ../lisp/isearch.elc \ | 801 | ../lisp/isearch.elc \ |
| 798 | ../lisp/rfn-eshadow.elc \ | 802 | ../lisp/rfn-eshadow.elc \ |
| 799 | ../lisp/loadup.el \ | 803 | ../lisp/loadup.el \ |
| 800 | ../lisp/loaddefs.el \ | ||
| 801 | ../lisp/bindings.elc \ | 804 | ../lisp/bindings.elc \ |
| 802 | ../lisp/emacs-lisp/map-ynp.elc \ | 805 | ../lisp/emacs-lisp/map-ynp.elc \ |
| 803 | ../lisp/env.elc \ | 806 | ../lisp/env.elc \ |
| @@ -1274,7 +1277,7 @@ ${emacsapp}Contents/MacOS/Emacs: emacs${EXEEXT} | |||
| 1274 | mostlyclean: | 1277 | mostlyclean: |
| 1275 | rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a | 1278 | rm -f temacs${EXEEXT} prefix-args${EXEEXT} core *.core \#* *.o libXMenu11.a liblw.a |
| 1276 | rm -f ../etc/DOC | 1279 | rm -f ../etc/DOC |
| 1277 | rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT} witness-emacs | 1280 | rm -f bootstrap-emacs${EXEEXT} emacs-${version}${EXEEXT} |
| 1278 | rm -f buildobj.lst | 1281 | rm -f buildobj.lst |
| 1279 | clean: mostlyclean | 1282 | clean: mostlyclean |
| 1280 | rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT} | 1283 | rm -f emacs-*.*.*${EXEEXT} emacs${EXEEXT} |
| @@ -1328,42 +1331,45 @@ tags: TAGS TAGS-LISP $(lwlibdir)TAGS | |||
| 1328 | To solve the circularity, we use 2 different Emacs executables, | 1331 | To solve the circularity, we use 2 different Emacs executables, |
| 1329 | "emacs" is the main target and "bootstrap-emacs" is the one used | 1332 | "emacs" is the main target and "bootstrap-emacs" is the one used |
| 1330 | to build the *.elc and loaddefs.el files. | 1333 | to build the *.elc and loaddefs.el files. |
| 1331 | To solve the freshness issue, we use a third file "witness-emacs" | 1334 | To solve the freshness issue, we used to use a third file "witness-emacs" |
| 1332 | which is used to witness the fact that there is a bootstrap-emacs | 1335 | which was used to witness the fact that there is a bootstrap-emacs |
| 1333 | executable. */ | 1336 | executable, and then have dependencies on witness-emacs rather than |
| 1337 | bootstrap-emacs, but that lead to problems in parallel builds (because | ||
| 1338 | witness-emacs needed to be free from dependencies (to avoid rebuilding | ||
| 1339 | it), so it was compiled in parallel, leading typically to having 2 | ||
| 1340 | processes dumping bootstrap-emacs at the same time). | ||
| 1341 | So instead, we replace the witness-emacs dependencies by conditional | ||
| 1342 | bootstrap-dependencies (via ${BOOTSTRAPEMACS}). Of course, since we do | ||
| 1343 | not want to rely on GNU Make features, we have to rely on an external | ||
| 1344 | script to do the conditional part of the dependency | ||
| 1345 | (i.e. see the ${SUBDIR} rule ../Makefile.in). */ | ||
| 1334 | 1346 | ||
| 1335 | /* These suffix rules do not allow additional dependencies, sadly, so | ||
| 1336 | adding a bootstrap-emacs%{EXEEXT} dependency does not work --Stef */ | ||
| 1337 | .SUFFIXES: .elc .el | 1347 | .SUFFIXES: .elc .el |
| 1338 | 1348 | ||
| 1349 | /* These suffix rules do not allow additional dependencies, sadly, so | ||
| 1350 | instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it | ||
| 1351 | separately below. | ||
| 1352 | With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" */ | ||
| 1339 | .el.elc: | 1353 | .el.elc: |
| 1340 | @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \ | 1354 | @cd ../lisp; $(MAKE) $(MFLAGS) compile-onefile \ |
| 1341 | THEFILE=$< EMACS=../src/bootstrap-emacs${EXEEXT} | 1355 | THEFILE=$< EMACS=../src/bootstrap-emacs${EXEEXT} |
| 1342 | 1356 | ||
| 1343 | /* Since the .el.elc rule cannot specify an extra dependency, we do it here. | 1357 | /* Since the .el.elc rule cannot specify an extra dependency, we do it here. */ |
| 1344 | The byte-compiler dependency is not necessary, but it substantially | 1358 | ${lisp} ${SOME_MACHINE_LISP}: $(BOOTSTRAPEMACS) |
| 1345 | speeds up byte-compilation of the other files. | ||
| 1346 | Of course, it also has the downside of forcing a recompilation of all | ||
| 1347 | those files whenever a file in $PRECOMP changes. */ | ||
| 1348 | ${lisp} ${SOME_MACHINE_LISP}: witness-emacs | ||
| 1349 | 1359 | ||
| 1350 | ../lisp/loaddefs.el: witness-emacs | 1360 | ../lisp/loaddefs.el: $(BOOTSTRAPEMACS) |
| 1351 | cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=../src/bootstrap-emacs${EXEEXT} | 1361 | cd ../lisp; $(MAKE) $(MFLAGS) autoloads EMACS=../src/bootstrap-emacs${EXEEXT} |
| 1352 | 1362 | ||
| 1353 | /* Dump an Emacs executable named bootstrap-emacs containing the | 1363 | /* Dump an Emacs executable named bootstrap-emacs containing the |
| 1354 | files from loadup.el in source form. */ | 1364 | files from loadup.el in source form. */ |
| 1355 | 1365 | ||
| 1356 | bootstrap-emacs${EXEEXT}: temacs${EXEEXT} | 1366 | bootstrap-emacs${EXEEXT}: temacs${EXEEXT} |
| 1367 | cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs | ||
| 1357 | #ifdef CANNOT_DUMP | 1368 | #ifdef CANNOT_DUMP |
| 1358 | ln temacs${EXEEXT} bootstrap-emacs${EXEEXT} | 1369 | ln temacs${EXEEXT} bootstrap-emacs${EXEEXT} |
| 1359 | #else | 1370 | #else |
| 1360 | $(RUN_TEMACS) --batch --load loadup bootstrap | 1371 | $(RUN_TEMACS) --batch --load loadup bootstrap |
| 1361 | mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT} | 1372 | mv -f emacs${EXEEXT} bootstrap-emacs${EXEEXT} |
| 1362 | #endif /* ! defined (CANNOT_DUMP) */ | 1373 | #endif /* ! defined (CANNOT_DUMP) */ |
| 1363 | |||
| 1364 | witness-emacs: temacs${EXEEXT} | ||
| 1365 | cd ../lisp; $(MAKE) $(MFLAGS) update-subdirs | ||
| 1366 | $(MAKE) $(MFLAGS) bootstrap-emacs${EXEEXT} | ||
| 1367 | touch witness-emacs | ||
| 1368 | @: Compile some files earlier to speed up further compilation. | 1374 | @: Compile some files earlier to speed up further compilation. |
| 1369 | cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=../src/bootstrap-emacs${EXEEXT} | 1375 | cd ../lisp; $(MAKE) $(MFLAGS) compile-first EMACS=../src/bootstrap-emacs${EXEEXT} |