emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 2f89350 2/2: Fixups for GNU Make switchover


From: Paul Eggert
Subject: [Emacs-diffs] master 2f89350 2/2: Fixups for GNU Make switchover
Date: Fri, 17 Mar 2017 14:54:19 -0400 (EDT)

branch: master
commit 2f8935099c680f5e25afdf290d351180ee42fa39
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    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.
---
 .gitignore       |  2 --
 Makefile.in      | 22 ++++++++--------------
 autogen.sh       |  6 +-----
 lib/Makefile.in  |  8 ++------
 nt/gnulib-cfg.mk |  2 +-
 src/Makefile.in  | 10 +++-------
 6 files changed, 15 insertions(+), 35 deletions(-)

diff --git a/.gitignore b/.gitignore
index 6697a1e..ce1866d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -121,8 +121,6 @@ deps/
 *.stamp
 stamp_BLD
 src/gl-stamp
-src/stamp-h.in
-src/stamp-h1
 
 # Object files and debugging.
 *.a
diff --git a/Makefile.in b/Makefile.in
index 6c25a1b..cf8ff84 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -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
 
diff --git a/autogen.sh b/autogen.sh
index f8e71cb..2297bdc 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -242,10 +242,6 @@ Please report any problems with this script to 
address@hidden .'
   ## 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
 
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 09220e0..5c19927 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -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) \
diff --git a/nt/gnulib-cfg.mk b/nt/gnulib-cfg.mk
index 4095ecf..175329f 100644
--- a/nt/gnulib-cfg.mk
+++ b/nt/gnulib-cfg.mk
@@ -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
diff --git a/src/Makefile.in b/src/Makefile.in
index c9147d0..60aa686 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -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; \



reply via email to

[Prev in Thread] Current Thread [Next in Thread]