summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2012-09-28 21:27:41 +0200
committerStefano Lattarini <stefano.lattarini@gmail.com>2012-10-02 17:12:51 +0200
commit25ffe7d54d557a056a1c00332a2fea2bbf8ba532 (patch)
tree0d2b4d70152c9d6567f7eb2295704414e9cc6483 /doc
parent58ec9d74d9001246b222320f2a9dfe8ecb71bb52 (diff)
downloadautomake-25ffe7d54d557a056a1c00332a2fea2bbf8ba532.tar.gz
config headers: don't emit rules for headers not generated by autoheader
This change fixed automake bug#12495. Even if an AC_CONFIG_HEADERS invocation is passed a list of several files as the first argument, only the first one of those file is considered by autoheader for automatic generation of the corresponding '.in' template. This is done on purpose, and is clearly documented in the Autoconf manual, which (as of the 2.69 version) reads something like this: The autoheader program searches for the first invocation of AC_CONFIG_HEADERS in configure sources to determine the name of the template. If the first call of AC_CONFIG_HEADERS specifies more than one input file name, autoheader uses the first one. That is, an invocation like: AC_CONFIG_HEADERS([config.h config2.h]) should cause autoheader to generate only a 'config.h.in' template, and not also a 'config2.h.in' one. Accordingly, automake, when tracing AC_CONFIG_HEADERS, should generate remake rules only for the template associated to the first input file name passed to that macro. In some situations, however, automake failed to properly limit itself in this way; for example, with an input like: AC_CONFIG_HEADERS([config.h sub/foo.h]) in configure.ac, and with the 'sub' directory listed in the SUBDIRS variable of the top-level Makefile, automake would erroneously generate in 'sub/Makefile.in' a rule to remake the 'foo.h.in' template by invoking autoheader. This issue was likely introduced in commit 'Release-1-8-23-g262bb92' of 2004-01-05. * NEWS: Update. * doc/automake.texi (Optional): Improve wording in the description of hat rules automake generates in response to an 'AC_CONFIG_HEADERS' invocation. * lib/am/remake-hdr.am: Only emit autoheader-invoking remake rules for the %CONFIG_HIN% template if that corresponds to the first argument of AC_CONFIG_HEADERS, as explaned above. Do so using the automake-time conditional %?FIRST-HDR%, that is properly passed ... * automake.in (handle_configure): ... from a 'file_contents' invocation in here. * t/autohdr-subdir-pr12495.sh: New test. * t/list-of-tests.mk: Add it. * THANKS: Update. Helped-by: Hib Eris <hib@hiberis.nl> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/automake.texi8
1 files changed, 5 insertions, 3 deletions
diff --git a/doc/automake.texi b/doc/automake.texi
index 083882278..914c1e843 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -2979,9 +2979,11 @@ Automake will require the sources file declared with
macro.
@item AC_CONFIG_HEADERS
-Automake will generate rules to rebuild these headers. Older versions
-of Automake required the use of @code{AM_CONFIG_HEADER}
-(@pxref{Macros}); this is no longer the case.
+Automake will generate rules to rebuild these headers from the
+corresponding templates (usually, the template for a @file{foo.h}
+header being @file{foo.h.in}). Older versions of Automake required
+the use of @code{AM_CONFIG_HEADER} (@pxref{Macros}); this is no
+longer the case.
As with @code{AC_CONFIG_FILES} (@pxref{Requirements}), parts of the
specification using shell variables will be ignored as far as