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:
parent
2454304dde
commit
e597257438
1 changed files with 11 additions and 23 deletions
34
Make.mk
34
Make.mk
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue