summaryrefslogtreecommitdiff
path: root/Makefile.in
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2017-03-17 11:33:48 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2017-03-17 11:42:34 -0700
commit2f8935099c680f5e25afdf290d351180ee42fa39 (patch)
tree900d6f682b94c4b5f5cfe435fd6910f6ad9b6b3e /Makefile.in
parent65faa7bcb59421603ed2b6e961fe4b9ea8cb91b9 (diff)
downloademacs-2f8935099c680f5e25afdf290d351180ee42fa39.tar.gz
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.
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in22
1 files changed, 8 insertions, 14 deletions
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
$(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