diff options
| -rw-r--r-- | ChangeLog | 2 | ||||
| -rw-r--r-- | Makefile.in | 15 | ||||
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/Makefile.in | 40 |
4 files changed, 27 insertions, 40 deletions
| @@ -1,5 +1,7 @@ | |||
| 1 | 2014-06-27 Glenn Morris <rgm@gnu.org> | 1 | 2014-06-27 Glenn Morris <rgm@gnu.org> |
| 2 | 2 | ||
| 3 | * Makefile.in (src): No more need to pass BOOTSTRAPEMACS. | ||
| 4 | |||
| 3 | * make-dist: Exclude test/automated/*.log. | 5 | * make-dist: Exclude test/automated/*.log. |
| 4 | 6 | ||
| 5 | 2014-06-26 Glenn Morris <rgm@gnu.org> | 7 | 2014-06-26 Glenn Morris <rgm@gnu.org> |
diff --git a/Makefile.in b/Makefile.in index ce44aa5de84..0fd9f980ca9 100644 --- a/Makefile.in +++ b/Makefile.in | |||
| @@ -368,16 +368,6 @@ lisp: src | |||
| 368 | lib lib-src lisp nt: Makefile | 368 | lib lib-src lisp nt: Makefile |
| 369 | $(MAKE) -C $@ all | 369 | $(MAKE) -C $@ all |
| 370 | 370 | ||
| 371 | # Pass to src/Makefile.in an additional BOOTSTRAPEMACS variable which | ||
| 372 | # is either set to bootstrap-emacs (in case bootstrap-emacs has not been | ||
| 373 | # constructed yet) or the empty string (otherwise). | ||
| 374 | # src/Makefile.in uses it to implement conditional dependencies, so that | ||
| 375 | # files that need bootstrap-emacs to be built do not additionally need | ||
| 376 | # to be kept fresher than bootstrap-emacs. Otherwise changing a single | ||
| 377 | # file src/foo.c forces dumping a new bootstrap-emacs, then re-byte-compiling | ||
| 378 | # all preloaded elisp files, and only then dump the actual src/emacs, which | ||
| 379 | # is not wrong, but is overkill in 99.99% of the cases. | ||
| 380 | # | ||
| 381 | # Note the use of single quotes in the value of vcswitness. | 371 | # Note the use of single quotes in the value of vcswitness. |
| 382 | # This passes an unexpanded $srcdir to src's Makefile, which then | 372 | # This passes an unexpanded $srcdir to src's Makefile, which then |
| 383 | # expands it using its own value of srcdir (which points to the | 373 | # expands it using its own value of srcdir (which points to the |
| @@ -386,10 +376,7 @@ src: Makefile | |||
| 386 | dirstate='.bzr/checkout/dirstate'; \ | 376 | dirstate='.bzr/checkout/dirstate'; \ |
| 387 | vcswitness='$$(srcdir)/../'$$dirstate; \ | 377 | vcswitness='$$(srcdir)/../'$$dirstate; \ |
| 388 | [ -r "$(srcdir)/$$dirstate" ] || vcswitness=''; \ | 378 | [ -r "$(srcdir)/$$dirstate" ] || vcswitness=''; \ |
| 389 | cd $@ || exit; \ | 379 | $(MAKE) -C $@ all VCSWITNESS="$$vcswitness" |
| 390 | boot=bootstrap-emacs$(EXEEXT); \ | ||
| 391 | [ ! -x "$$boot" ] || boot=''; \ | ||
| 392 | $(MAKE) all BOOTSTRAPEMACS="$$boot" VCSWITNESS="$$vcswitness" | ||
| 393 | 380 | ||
| 394 | blessmail: Makefile src | 381 | blessmail: Makefile src |
| 395 | $(MAKE) -C lib-src maybe-blessmail | 382 | $(MAKE) -C lib-src maybe-blessmail |
diff --git a/src/ChangeLog b/src/ChangeLog index da46ead2b93..b25e2d487d7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2014-06-27 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * Makefile.in: Replace BOOTSTRAPEMACS sleight-of-hand | ||
| 4 | with an order-only dependence on bootstrap-emacs. (Bug#2151) | ||
| 5 | (.el.elc): Replace suffix rule with pattern rule. | ||
| 6 | (%.elc): New pattern rule, with order-only prerequisite. | ||
| 7 | ($(lisp)): No more need to depend on BOOTSTRAPEMACS. | ||
| 8 | ($(lispsource)/loaddefs.el): Use an order-only prerequisite | ||
| 9 | in place of BOOTSTRAPEMACS. | ||
| 10 | |||
| 1 | 2014-06-26 Dmitry Antipov <dmantipov@yandex.ru> | 11 | 2014-06-26 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 12 | ||
| 3 | * fns.c (Fcompare_strings): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE. | 13 | * fns.c (Fcompare_strings): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE. |
diff --git a/src/Makefile.in b/src/Makefile.in index 5bed189f16a..748f38e55bd 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ### @configure_input@ | 1 | ### @configure_input@ |
| 2 | 2 | ||
| 3 | # Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2014 Free Software | 3 | # Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2014 |
| 4 | # Foundation, Inc. | 4 | # Free Software Foundation, Inc. |
| 5 | 5 | ||
| 6 | # This file is part of GNU Emacs. | 6 | # This file is part of GNU Emacs. |
| 7 | 7 | ||
| @@ -594,40 +594,28 @@ tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS | |||
| 594 | ## such as loaddefs.el or *.elc can typically be produced by any old | 594 | ## such as loaddefs.el or *.elc can typically be produced by any old |
| 595 | ## Emacs executable, so we would like to avoid rebuilding them whenever | 595 | ## Emacs executable, so we would like to avoid rebuilding them whenever |
| 596 | ## we build a new Emacs executable. | 596 | ## we build a new Emacs executable. |
| 597 | ## | ||
| 598 | ## (In other words, changing a single file src/foo.c would force | ||
| 599 | ## dumping a new bootstrap-emacs, then re-byte-compiling all preloaded | ||
| 600 | ## elisp files, and only then dump the actual src/emacs, which is not | ||
| 601 | ## wrong, but is overkill in 99.99% of the cases.) | ||
| 602 | ## | ||
| 597 | ## To solve the circularity, we use 2 different Emacs executables, | 603 | ## To solve the circularity, we use 2 different Emacs executables, |
| 598 | ## "emacs" is the main target and "bootstrap-emacs" is the one used | 604 | ## "emacs" is the main target and "bootstrap-emacs" is the one used |
| 599 | ## to build the *.elc and loaddefs.el files. | 605 | ## to build the *.elc and loaddefs.el files. |
| 600 | ## To solve the freshness issue, we used to use a third file "witness-emacs" | 606 | ## To solve the freshness issue, in the past we tried various clever tricks, |
| 601 | ## which was used to witness the fact that there is a bootstrap-emacs | 607 | ## but now that we require GNU make, we can simply specify |
| 602 | ## executable, and then have dependencies on witness-emacs rather than | 608 | ## bootstrap-emacs$(EXEEXT) as an order-only prerequisite. |
| 603 | ## bootstrap-emacs, but that lead to problems in parallel builds (because | ||
| 604 | ## witness-emacs needed to be free from dependencies (to avoid rebuilding | ||
| 605 | ## it), so it was compiled in parallel, leading typically to having 2 | ||
| 606 | ## processes dumping bootstrap-emacs at the same time). | ||
| 607 | ## So instead, we replace the witness-emacs dependencies by conditional | ||
| 608 | ## bootstrap-dependencies (via $(BOOTSTRAPEMACS)). Of course, since we do | ||
| 609 | ## not want to rely on GNU Make features, we have to rely on an external | ||
| 610 | ## script to do the conditional part of the dependency | ||
| 611 | ## (i.e. see the $(SUBDIR) rule ../Makefile.in). | ||
| 612 | |||
| 613 | .SUFFIXES: .elc .el | ||
| 614 | |||
| 615 | ## These suffix rules do not allow additional dependencies, sadly, so | ||
| 616 | ## instead of adding a $(BOOTSTRAPEMACS) dependency here, we add it | ||
| 617 | ## separately below. | ||
| 618 | ## With GNU Make, we would just say "%.el : %.elc $(BOOTSTRAPEMACS)" | ||
| 619 | .el.elc: | ||
| 620 | @$(MAKE) -C ../lisp compile-onefile THEFILE=$< EMACS="$(bootstrap_exe)" | ||
| 621 | 609 | ||
| 622 | ## Since the .el.elc rule cannot specify an extra dependency, we do it here. | 610 | %.elc: %.el | bootstrap-emacs$(EXEEXT) |
| 623 | $(lisp): $(BOOTSTRAPEMACS) | 611 | @$(MAKE) -C ../lisp compile-onefile THEFILE=$< EMACS="$(bootstrap_exe)" |
| 624 | 612 | ||
| 625 | ## VCSWITNESS points to the file that holds info about the current checkout. | 613 | ## VCSWITNESS points to the file that holds info about the current checkout. |
| 626 | ## We use it as a heuristic to decide when to rebuild loaddefs.el. | 614 | ## We use it as a heuristic to decide when to rebuild loaddefs.el. |
| 627 | ## If empty it is ignored; the parent makefile can set it to some other value. | 615 | ## If empty it is ignored; the parent makefile can set it to some other value. |
| 628 | VCSWITNESS = | 616 | VCSWITNESS = |
| 629 | 617 | ||
| 630 | $(lispsource)/loaddefs.el: $(BOOTSTRAPEMACS) $(VCSWITNESS) | 618 | $(lispsource)/loaddefs.el: $(VCSWITNESS) | bootstrap-emacs$(EXEEXT) |
| 631 | $(MAKE) -C ../lisp autoloads EMACS="$(bootstrap_exe)" | 619 | $(MAKE) -C ../lisp autoloads EMACS="$(bootstrap_exe)" |
| 632 | 620 | ||
| 633 | ## Dump an Emacs executable named bootstrap-emacs containing the | 621 | ## Dump an Emacs executable named bootstrap-emacs containing the |