]> git.eshelyaron.com Git - emacs.git/commitdiff
Fixups for GNU Make switchover
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 17 Mar 2017 18:33:48 +0000 (11:33 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 17 Mar 2017 18:42:34 +0000 (11:42 -0700)
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.

.gitignore
Makefile.in
autogen.sh
lib/Makefile.in
nt/gnulib-cfg.mk
src/Makefile.in

index 6697a1ec841d860dfd6c8a3c87dfcf76b6a57716..ce1866d616bb2dd91c9a45674e4dd18340a9656a 100644 (file)
@@ -121,8 +121,6 @@ deps/
 *.stamp
 stamp_BLD
 src/gl-stamp
-src/stamp-h.in
-src/stamp-h1
 
 # Object files and debugging.
 *.a
index 6c25a1bd8e1daa10352beeeb5283097fe9fbd537..cf8ff84212fb9d201ca9ab0c161f7a1175fe3f17 100644 (file)
@@ -419,8 +419,10 @@ blessmail: Makefile src
        $(MAKE) -C lib-src maybe-blessmail
 
 # We used to have one rule per */Makefile.in, but that leads to race
-# conditions with parallel makes, so let's assume that the time stamp on
-# ./Makefile is representative of the time stamp on all the other Makefiles.
+# conditions with parallel makes, so assume that the timestamp on
+# ./Makefile represents the timestamp on all the other Makefiles.
+# Similarly, assume the timestamp on ./configure represents the
+# timestamp on src/config.in.
 #
 # config.status overrides MAKEFILE_NAME with a bogus name when creating
 # src/epaths.h, so that 'make epaths-force' does not recursively invoke
@@ -430,7 +432,7 @@ blessmail: Makefile src
 # then attempts to build that file.  This forces 'Makefile', 'lib/Makefile',
 # etc. to be built without running into similar recursion problems.
 MAKEFILE_NAME = Makefile
-$(MAKEFILE_NAME): config.status $(srcdir)/src/config.in \
+$(MAKEFILE_NAME): config.status $(srcdir)/configure \
         $(srcdir)/lib/gnulib.mk.in \
          $(srcdir)/Makefile.in $(SUBDIR_MAKEFILES_IN) $(CONFIG_STATUS_FILES_IN)
        MAKE='$(MAKE)' ./config.status
@@ -445,16 +447,8 @@ config.status: ${srcdir}/configure
            $(CFG) $(srcdir)/configure $(CONFIGURE_FLAGS); \
        fi
 
-$(srcdir)/configure $(srcdir)/src/stamp-h.in: \
-  $(srcdir)/configure.ac $(srcdir)/m4/*.m4
-       cd $(srcdir) && ./autogen.sh autoconf
-
-$(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in
-       @ # Usually, there's no need to rebuild src/config.in just
-       @ # because stamp-h.in has changed (since building stamp-h.in
-       @ # refreshes config.in as well), but if config.in is missing
-       @ # then we really need to do something more.
-       $(if $(wildcard $@),,cd $(srcdir) && ./autogen.sh autoconf)
+$(srcdir)/configure: $(srcdir)/configure.ac $(srcdir)/m4/*.m4
+       cd $(srcdir) && ./autogen.sh
 
 # ==================== Installation ====================
 
@@ -864,7 +858,7 @@ top_bootclean=\
 top_distclean=\
        ${top_bootclean}; \
        rm -f config.status config.log~ \
-         Makefile lib/gnulib.mk stamp-h1 ${SUBDIR_MAKEFILES}
+         Makefile lib/gnulib.mk ${SUBDIR_MAKEFILES}
 
 distclean_dirs = $(clean_dirs) leim lisp
 
index f8e71cb747a30b3e4ee60998ce25a1f84dfd8ef5..2297bdc8c49f06189952ed876e54de34311047c6 100755 (executable)
@@ -242,10 +242,6 @@ Please report any problems with this script to bug-gnu-emacs@gnu.org .'
   ## Let autoreconf figure out what, if anything, needs doing.
   ## Use autoreconf's -f option in case autoreconf itself has changed.
   autoreconf -fi -I m4 || exit
-
-  ## Create a timestamp, so that './autogen.sh; make' doesn't
-  ## cause 'make' to needlessly run 'autoheader'.
-  echo timestamp > src/stamp-h.in || exit
 fi
 
 
@@ -360,7 +356,7 @@ if test ! -f configure; then
 elif test -e .git && test $git_was_ok = false && test $do_git = false; then
     echo "You can now run '$0 git'."
 elif test ! -f config.status ||
-       test -n "`find src/stamp-h.in -newer config.status`"; then
+       test -n "`find configure src/config.in -newer config.status`"; then
     echo "You can now run './configure'."
 fi
 
index 09220e0d1785cfba19b846c4f94de2e67dabd471..5c199270acc4e395a6507a968399246605e7c56f 100644 (file)
@@ -76,14 +76,10 @@ else
   MKDEPDIR = :
 endif
 
-AUTOCONF_INPUTS = $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4
-$(top_srcdir)/configure: $(AUTOCONF_INPUTS)
 .PRECIOUS: ../config.status Makefile
-../config.status: $(top_srcdir)/configure $(top_srcdir)/lisp/version.el
-Makefile: ../config.status $(srcdir)/Makefile.in
-$(top_srcdir)/configure ../config.status:
+../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4
        $(MAKE) -C .. $(notdir $@)
-Makefile:
+Makefile: ../config.status $(srcdir)/Makefile.in
        $(MAKE) -C .. src/$@
 
 libgnu_a_OBJECTS = $(gl_LIBOBJS) \
index 4095ecfd6e9e3a9c7672b8a6eb0ec436265c0b26..175329fb9e7942e1d74c85cfcb2f75650de33cd6 100644 (file)
@@ -16,7 +16,7 @@
 # along with this file.  If not, see <http://www.gnu.org/licenses/>.
 
 
-# Gnulib odules to be omitted from Emacs.
+# Gnulib modules to be omitted from Emacs.
 
 # Omit them because they either conflict with MinGW headers or
 # headers in nt/inc, or because those modules won't compile with
index c9147d08bcfd4dd4c7b132a2699a9b41f899b16d..60aa6866718a3fac5bce2427099bd9f432d1853a 100644 (file)
@@ -624,14 +624,10 @@ $(oldXMenudir)/libXMenu11.a: FORCE
 FORCE:
 .PHONY: FORCE
 
-AUTOCONF_INPUTS = $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4
-$(top_srcdir)/configure config.in: $(AUTOCONF_INPUTS)
 .PRECIOUS: ../config.status Makefile
-../config.status: $(top_srcdir)/configure $(top_srcdir)/lisp/version.el
-Makefile: ../config.status $(srcdir)/Makefile.in
-$(top_srcdir)/configure ../config.status:
+../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4
        $(MAKE) -C .. $(notdir $@)
-config.in Makefile:
+Makefile: ../config.status $(srcdir)/Makefile.in
        $(MAKE) -C .. src/$@
 
 doc.o: buildobj.h
@@ -661,7 +657,7 @@ clean: mostlyclean
 ## It should remove all files generated during a compilation/bootstrap,
 ## but not things like config.status or TAGS.
 bootstrap-clean: clean
-       rm -f epaths.h config.h config.stamp stamp-h1
+       rm -f epaths.h config.h config.stamp
        if test -f ./.gdbinit; then \
          mv ./.gdbinit ./.gdbinit.save; \
          if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \