summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <meyering@fb.com>2014-03-20 12:31:32 -0700
committerJim Meyering <meyering@fb.com>2017-11-28 19:05:59 -0800
commitac47c22e3c0c8b055cdd47ccd18621c56f807b37 (patch)
treef7b973a340bbf9f30095a5c2645ae0dbabaecb23
parent2e6c978a944eb57d49336b01a03dd6f9e573cd81 (diff)
downloadautomake-ac47c22e3c0c8b055cdd47ccd18621c56f807b37.tar.gz
"make dist" did not depend on $(BUILT_SOURCES)
* lib/am/distdir.am (distdir-am): New intermediate target. Interpose this target between $(distdir) and its dependency on $(DISTFILES), so that we can ensure $(BUILT_SOURCES) are all created before we begin creating $(DISTFILES). * t/dist-vs-built-sources.sh: Test for this. * t/list-of-tests.mk (handwritten_TESTS): Add it. * NEWS (Bugs fixed): Mention it. Assaf Gordon reported that "make dist" (after ./configure from a pristine clone of GNU hello) would fail due to the absence of configmake.h while compiling lib/localcharset.c. https://lists.gnu.org/r/bug-hello/2014-03/msg00016.html
-rw-r--r--NEWS3
-rw-r--r--lib/am/distdir.am7
-rw-r--r--t/dist-vs-built-sources.sh56
-rw-r--r--t/list-of-tests.mk1
4 files changed, 65 insertions, 2 deletions
diff --git a/NEWS b/NEWS
index 04a285565..6d8b9d248 100644
--- a/NEWS
+++ b/NEWS
@@ -113,6 +113,9 @@ New in ?.?.?:
- Installed 'aclocal' m4 macros can now accept installation directories
containing '@' characters (automake bug#20903)
+ - "./configure && make dist" no longer fails when a distributed file depends
+ on one from BUILT_SOURCES.
+
- When combining AC_LIBOBJ or AC_FUNC_ALLOCA with the
"--disable-dependency-tracking" configure option in an out of source
build, the build sub-directory defined by AC_CONFIG_LIBOBJ_DIR is now
diff --git a/lib/am/distdir.am b/lib/am/distdir.am
index 653966f0e..4b6543591 100644
--- a/lib/am/distdir.am
+++ b/lib/am/distdir.am
@@ -72,10 +72,13 @@ endif %?SUBDIRS%
.PHONY: distdir
if %?SUBDIRS%
-AM_RECURSIVE_TARGETS += distdir
+AM_RECURSIVE_TARGETS += distdir distdir-am
endif %?SUBDIRS%
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
##
## For Gnits users, this is pretty handy. Look at 15 lines
## in case some explanatory text is desirable.
diff --git a/t/dist-vs-built-sources.sh b/t/dist-vs-built-sources.sh
new file mode 100644
index 000000000..94f8b600f
--- /dev/null
+++ b/t/dist-vs-built-sources.sh
@@ -0,0 +1,56 @@
+#! /bin/sh
+# Copyright (C) 2017 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+# Ensure that "make dist" no longer fails when a distributed file
+# depends on a file from the list of BUILT_SOURCES.
+
+. test-init.sh
+
+cat >> configure.ac << 'END'
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << 'END'
+BUILT_SOURCES = h.h
+h.h:
+ rm -f $@ $@-t
+ printf '%s\n' '#define F "F"' > $@-t
+ mv -f $@-t $@
+CLEANFILES = h.h
+
+EXTRA_DIST = gen
+gen: foo
+ ./foo > $@-t && mv $@-t $@
+
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c
+END
+
+cat > foo.c << 'END'
+#include "h.h"
+int main (void) { printf ("%s\n", F); return 0; }
+END
+chmod a-w foo.c
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+
+./configure
+$MAKE dist
+
+:
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index b49a3ad0f..61ad5b4e8 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -409,6 +409,7 @@ t/dist-missing-m4.sh \
t/dist-readonly.sh \
t/dist-repeated.sh \
t/dist-pr109765.sh \
+t/dist-vs-built-sources.sh \
t/distcleancheck.sh \
t/distcom2.sh \
t/distcom3.sh \