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