diff options
author | Jim Meyering <meyering@fb.com> | 2014-03-20 12:31:32 -0700 |
---|---|---|
committer | Jim Meyering <meyering@fb.com> | 2017-11-28 19:05:59 -0800 |
commit | ac47c22e3c0c8b055cdd47ccd18621c56f807b37 (patch) | |
tree | f7b973a340bbf9f30095a5c2645ae0dbabaecb23 | |
parent | 2e6c978a944eb57d49336b01a03dd6f9e573cd81 (diff) | |
download | automake-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-- | NEWS | 3 | ||||
-rw-r--r-- | lib/am/distdir.am | 7 | ||||
-rw-r--r-- | t/dist-vs-built-sources.sh | 56 | ||||
-rw-r--r-- | t/list-of-tests.mk | 1 |
4 files changed, 65 insertions, 2 deletions
@@ -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 \ |