Fix make dist in a separate build directory without git

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.
This commit is contained in:
Markus Armbruster 2008-12-07 18:13:38 -05:00
parent 2454304dde
commit e597257438

34
Make.mk
View file

@ -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)