diff options
| author | Paul Eggert | 2017-03-17 11:33:48 -0700 |
|---|---|---|
| committer | Paul Eggert | 2017-03-17 11:42:34 -0700 |
| commit | 2f8935099c680f5e25afdf290d351180ee42fa39 (patch) | |
| tree | 900d6f682b94c4b5f5cfe435fd6910f6ad9b6b3e | |
| parent | 65faa7bcb59421603ed2b6e961fe4b9ea8cb91b9 (diff) | |
| download | emacs-2f8935099c680f5e25afdf290d351180ee42fa39.tar.gz emacs-2f8935099c680f5e25afdf290d351180ee42fa39.zip | |
Fixups for GNU Make switchover
This fixes some minor problems introduced in the recent switch to GNU
Make, discovered by further testing. Without some of these changes
'make -j' would sometimes have race conditions caused by missing
dependencies. (Bug#26100)
* .gitignore: Remove src/stamp-h.in, src/stamp-h1.
* Makefile.in ($(MAKEFILE_NAME)): Depend on configure, not
src/config.in, since the former's timestamp now represents
the latter's.
($(srcdir)/configure): Use plain ./autogen.sh, for consistency
with other autogen.sh invocations.
($(srcdir)/src/stamp-h.in):
Remove rule, as this file is no longer created.
* Makefile.in (top_distclean):
* src/Makefile.in (bootstrap-clean):
No need to remove stamp-h1, as that was an Automake byproduct
and Automake is no longer in use.
* lib/Makefile.in, src/Makefile.in:
(AUTOCONF_INPUTS, $(top_srcdir)/configure): Remove.
(../config.status, Makefile): Simplify by limiting dependencies
to files we care about and files in the repository, and by
using just one file to represent the timestamps on multiple
targets updated by the same rule.
* autogen.sh: Do not create or use src/stamp-h.in.
Instead, have 'find' test the two output files directly.
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Makefile.in | 22 | ||||
| -rwxr-xr-x | autogen.sh | 6 | ||||
| -rw-r--r-- | lib/Makefile.in | 8 | ||||
| -rw-r--r-- | nt/gnulib-cfg.mk | 2 | ||||
| -rw-r--r-- | src/Makefile.in | 10 |
6 files changed, 15 insertions, 35 deletions
diff --git a/.gitignore b/.gitignore index 6697a1ec841..ce1866d616b 100644 --- a/.gitignore +++ b/.gitignore | |||
| @@ -121,8 +121,6 @@ deps/ | |||
| 121 | *.stamp | 121 | *.stamp |
| 122 | stamp_BLD | 122 | stamp_BLD |
| 123 | src/gl-stamp | 123 | src/gl-stamp |
| 124 | src/stamp-h.in | ||
| 125 | src/stamp-h1 | ||
| 126 | 124 | ||
| 127 | # Object files and debugging. | 125 | # Object files and debugging. |
| 128 | *.a | 126 | *.a |
diff --git a/Makefile.in b/Makefile.in index 6c25a1bd8e1..cf8ff84212f 100644 --- a/Makefile.in +++ b/Makefile.in | |||
| @@ -419,8 +419,10 @@ blessmail: Makefile src | |||
| 419 | $(MAKE) -C lib-src maybe-blessmail | 419 | $(MAKE) -C lib-src maybe-blessmail |
| 420 | 420 | ||
| 421 | # We used to have one rule per */Makefile.in, but that leads to race | 421 | # We used to have one rule per */Makefile.in, but that leads to race |
| 422 | # conditions with parallel makes, so let's assume that the time stamp on | 422 | # conditions with parallel makes, so assume that the timestamp on |
| 423 | # ./Makefile is representative of the time stamp on all the other Makefiles. | 423 | # ./Makefile represents the timestamp on all the other Makefiles. |
| 424 | # Similarly, assume the timestamp on ./configure represents the | ||
| 425 | # timestamp on src/config.in. | ||
| 424 | # | 426 | # |
| 425 | # config.status overrides MAKEFILE_NAME with a bogus name when creating | 427 | # config.status overrides MAKEFILE_NAME with a bogus name when creating |
| 426 | # src/epaths.h, so that 'make epaths-force' does not recursively invoke | 428 | # src/epaths.h, so that 'make epaths-force' does not recursively invoke |
| @@ -430,7 +432,7 @@ blessmail: Makefile src | |||
| 430 | # then attempts to build that file. This forces 'Makefile', 'lib/Makefile', | 432 | # then attempts to build that file. This forces 'Makefile', 'lib/Makefile', |
| 431 | # etc. to be built without running into similar recursion problems. | 433 | # etc. to be built without running into similar recursion problems. |
| 432 | MAKEFILE_NAME = Makefile | 434 | MAKEFILE_NAME = Makefile |
| 433 | $(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \ | 435 | $(MAKEFILE_NAME): config.status $(srcdir)/configure \ |
| 434 | $(srcdir)/lib/gnulib.mk.in \ | 436 | $(srcdir)/lib/gnulib.mk.in \ |
| 435 | $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) $(CONFIG_STATUS_FILES_IN) | 437 | $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) $(CONFIG_STATUS_FILES_IN) |
| 436 | MAKE='$(MAKE)' ./config.status | 438 | MAKE='$(MAKE)' ./config.status |
| @@ -445,16 +447,8 @@ config.status: ${srcdir}/configure | |||
| 445 | $(CFG) $(srcdir)/configure $(CONFIGURE_FLAGS); \ | 447 | $(CFG) $(srcdir)/configure $(CONFIGURE_FLAGS); \ |
| 446 | fi | 448 | fi |
| 447 | 449 | ||
| 448 | $(srcdir)/configure $(srcdir)/src/stamp-h.in: \ | 450 | $(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/m4/*.m4 |
| 449 | $(srcdir)/configure.ac $(srcdir)/m4/*.m4 | 451 | cd $(srcdir) && ./autogen.sh |
| 450 | cd $(srcdir) && ./autogen.sh autoconf | ||
| 451 | |||
| 452 | $(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in | ||
| 453 | @ # Usually, there's no need to rebuild src/config.in just | ||
| 454 | @ # because stamp-h.in has changed (since building stamp-h.in | ||
| 455 | @ # refreshes config.in as well), but if config.in is missing | ||
| 456 | @ # then we really need to do something more. | ||
| 457 | $(if $(wildcard $@),,cd $(srcdir) && ./autogen.sh autoconf) | ||
| 458 | 452 | ||
| 459 | # ==================== Installation ==================== | 453 | # ==================== Installation ==================== |
| 460 | 454 | ||
| @@ -864,7 +858,7 @@ top_bootclean=\ | |||
| 864 | top_distclean=\ | 858 | top_distclean=\ |
| 865 | ${top_bootclean}; \ | 859 | ${top_bootclean}; \ |
| 866 | rm -f config.status config.log~ \ | 860 | rm -f config.status config.log~ \ |
| 867 | Makefile lib/gnulib.mk stamp-h1 ${SUBDIR_MAKEFILES} | 861 | Makefile lib/gnulib.mk ${SUBDIR_MAKEFILES} |
| 868 | 862 | ||
| 869 | distclean_dirs = $(clean_dirs) leim lisp | 863 | distclean_dirs = $(clean_dirs) leim lisp |
| 870 | 864 | ||
diff --git a/autogen.sh b/autogen.sh index f8e71cb747a..2297bdc8c49 100755 --- a/autogen.sh +++ b/autogen.sh | |||
| @@ -242,10 +242,6 @@ Please report any problems with this script to bug-gnu-emacs@gnu.org .' | |||
| 242 | ## Let autoreconf figure out what, if anything, needs doing. | 242 | ## Let autoreconf figure out what, if anything, needs doing. |
| 243 | ## Use autoreconf's -f option in case autoreconf itself has changed. | 243 | ## Use autoreconf's -f option in case autoreconf itself has changed. |
| 244 | autoreconf -fi -I m4 || exit | 244 | autoreconf -fi -I m4 || exit |
| 245 | |||
| 246 | ## Create a timestamp, so that './autogen.sh; make' doesn't | ||
| 247 | ## cause 'make' to needlessly run 'autoheader'. | ||
| 248 | echo timestamp > src/stamp-h.in || exit | ||
| 249 | fi | 245 | fi |
| 250 | 246 | ||
| 251 | 247 | ||
| @@ -360,7 +356,7 @@ if test ! -f configure; then | |||
| 360 | elif test -e .git && test $git_was_ok = false && test $do_git = false; then | 356 | elif test -e .git && test $git_was_ok = false && test $do_git = false; then |
| 361 | echo "You can now run '$0 git'." | 357 | echo "You can now run '$0 git'." |
| 362 | elif test ! -f config.status || | 358 | elif test ! -f config.status || |
| 363 | test -n "`find src/stamp-h.in -newer config.status`"; then | 359 | test -n "`find configure src/config.in -newer config.status`"; then |
| 364 | echo "You can now run './configure'." | 360 | echo "You can now run './configure'." |
| 365 | fi | 361 | fi |
| 366 | 362 | ||
diff --git a/lib/Makefile.in b/lib/Makefile.in index 09220e0d178..5c199270acc 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in | |||
| @@ -76,14 +76,10 @@ else | |||
| 76 | MKDEPDIR = : | 76 | MKDEPDIR = : |
| 77 | endif | 77 | endif |
| 78 | 78 | ||
| 79 | AUTOCONF_INPUTS = $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 | ||
| 80 | $(top_srcdir)/configure: $(AUTOCONF_INPUTS) | ||
| 81 | .PRECIOUS: ../config.status Makefile | 79 | .PRECIOUS: ../config.status Makefile |
| 82 | ../config.status: $(top_srcdir)/configure $(top_srcdir)/lisp/version.el | 80 | ../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 |
| 83 | Makefile: ../config.status $(srcdir)/Makefile.in | ||
| 84 | $(top_srcdir)/configure ../config.status: | ||
| 85 | $(MAKE) -C .. $(notdir $@) | 81 | $(MAKE) -C .. $(notdir $@) |
| 86 | Makefile: | 82 | Makefile: ../config.status $(srcdir)/Makefile.in |
| 87 | $(MAKE) -C .. src/$@ | 83 | $(MAKE) -C .. src/$@ |
| 88 | 84 | ||
| 89 | libgnu_a_OBJECTS = $(gl_LIBOBJS) \ | 85 | libgnu_a_OBJECTS = $(gl_LIBOBJS) \ |
diff --git a/nt/gnulib-cfg.mk b/nt/gnulib-cfg.mk index 4095ecfd6e9..175329fb9e7 100644 --- a/nt/gnulib-cfg.mk +++ b/nt/gnulib-cfg.mk | |||
| @@ -16,7 +16,7 @@ | |||
| 16 | # along with this file. If not, see <http://www.gnu.org/licenses/>. | 16 | # along with this file. If not, see <http://www.gnu.org/licenses/>. |
| 17 | 17 | ||
| 18 | 18 | ||
| 19 | # Gnulib odules to be omitted from Emacs. | 19 | # Gnulib modules to be omitted from Emacs. |
| 20 | 20 | ||
| 21 | # Omit them because they either conflict with MinGW headers or | 21 | # Omit them because they either conflict with MinGW headers or |
| 22 | # headers in nt/inc, or because those modules won't compile with | 22 | # headers in nt/inc, or because those modules won't compile with |
diff --git a/src/Makefile.in b/src/Makefile.in index c9147d08bcf..60aa6866718 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -624,14 +624,10 @@ $(oldXMenudir)/libXMenu11.a: FORCE | |||
| 624 | FORCE: | 624 | FORCE: |
| 625 | .PHONY: FORCE | 625 | .PHONY: FORCE |
| 626 | 626 | ||
| 627 | AUTOCONF_INPUTS = $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 | ||
| 628 | $(top_srcdir)/configure config.in: $(AUTOCONF_INPUTS) | ||
| 629 | .PRECIOUS: ../config.status Makefile | 627 | .PRECIOUS: ../config.status Makefile |
| 630 | ../config.status: $(top_srcdir)/configure $(top_srcdir)/lisp/version.el | 628 | ../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 |
| 631 | Makefile: ../config.status $(srcdir)/Makefile.in | ||
| 632 | $(top_srcdir)/configure ../config.status: | ||
| 633 | $(MAKE) -C .. $(notdir $@) | 629 | $(MAKE) -C .. $(notdir $@) |
| 634 | config.in Makefile: | 630 | Makefile: ../config.status $(srcdir)/Makefile.in |
| 635 | $(MAKE) -C .. src/$@ | 631 | $(MAKE) -C .. src/$@ |
| 636 | 632 | ||
| 637 | doc.o: buildobj.h | 633 | doc.o: buildobj.h |
| @@ -661,7 +657,7 @@ clean: mostlyclean | |||
| 661 | ## It should remove all files generated during a compilation/bootstrap, | 657 | ## It should remove all files generated during a compilation/bootstrap, |
| 662 | ## but not things like config.status or TAGS. | 658 | ## but not things like config.status or TAGS. |
| 663 | bootstrap-clean: clean | 659 | bootstrap-clean: clean |
| 664 | rm -f epaths.h config.h config.stamp stamp-h1 | 660 | rm -f epaths.h config.h config.stamp |
| 665 | if test -f ./.gdbinit; then \ | 661 | if test -f ./.gdbinit; then \ |
| 666 | mv ./.gdbinit ./.gdbinit.save; \ | 662 | mv ./.gdbinit ./.gdbinit.save; \ |
| 667 | if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \ | 663 | if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \ |