Fix make dist in a separate build directory without git
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 7 Dec 2008 23:13:38 +0000 (18:13 -0500)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 7 Dec 2008 23:14:46 +0000 (18:14 -0500)
In that case, make copied the sources.mk from $srcdir, but unless it
existed already, the peculiar workings of VPATH did us in: make
searched for the target, found it in $srcdir, and the dependency
became circular.

Fix by keeping sources.mk in $srcdir always.  We can build it there,
because its contents depends only on git state, not on anything in the
build tree.  This avoids the need to copy sources.mk alltogether.

Make.mk

diff --git a/Make.mk b/Make.mk
index 2081b65439b1a0bc445cd3e2468bfaf54753f534..2d79ec3316450b210a801b0223014bd5acb9acf9 100644 (file)
--- a/Make.mk
+++ b/Make.mk
@@ -90,11 +90,7 @@ subst.in = sed \
 # See `Cleanliness' below
 mk := subjects.mk
 ifeq ($(revctrl),git)
-mk += sources.mk
-else
-ifneq ($(srcdir),.)
-mk += sources.mk
-endif
+mk += $(srcdir)/sources.mk
 endif
 # Generated by Autoconf, not distributed:
 ac := config.h config.log config.status info.html info.nr lib stamp-h
@@ -147,9 +143,7 @@ $(ttop) $(info.nr) $(info.html) $(empth_obj) $(empth_lib)
 # Removed by distclean:
 distclean := $(ac) $(mk)
 # Distributed by dist-source from $(srcdir)
-src_distgen := $(acdist)
-# Distributed by dist-source from .
-bld_distgen := sources.mk
+src_distgen := $(acdist) sources.mk
 # Distributed by dist-client from $(srcdir)/src/client
 cli_distgen := $(acdistcli)
 
@@ -328,27 +322,21 @@ info.ps: info/TROFF.MAC info/INFO.MAC $(ttop) $(tsubj) $(tsrc)
 
 # List of source files
 
-# Note: $(srcdir)/sources.mk is only used when the source tree came
-# from a tarball rather than git.  The following rules create a
-# sources.mk to put into the tarball.  It is not used otherwise in
-# this build.
-
+# Note: $(srcdir)/sources.mk is only included when the source tree
+# came from a tarball rather than git.  The following rule creates a
+# it only for putting it into the tarball.  It is not used otherwise
+# in this build.
 ifeq ($(revctrl),git)
-.PHONY: sources.mk
-sources.mk:
-       echo "src := $(src)" >sources.mk
-else
-ifneq ($(srcdir),.)
-sources.mk: $(srcdir)/sources.mk
-       cp -f $^ $@
-endif
+.PHONY: $(srcdir)/sources.mk
+$(srcdir)/sources.mk:
+       echo "src := $(src)" >$@
 endif
 
 # Distributing
 
 .PHONY: dist-source
-dist-source: $(src_distgen) $(bld_distgen)
-       $(tarball) $(TARNAME)-$(VERSION) $(bld_distgen) -C $(srcdir) $(src_distgen) $(src)
+dist-source: $(src_distgen)
+       $(tarball) $(TARNAME)-$(VERSION) -C $(srcdir) $(src_distgen) $(src)
 
 .PHONY: dist-client
 dist-client: $(cli_distgen)