Hello, On Tue, Dec 05, 2006 at 10:17:57AM -0800, Paul Eggert wrote: > Patrick Welche <prlw1@xxxxxxxxxxxxxx> writes: > > Is that AC_CONFIG_HEADERS syntax simply not allowed? (missing file name) > > The documentation doesn't seem to allow it. > > But also, the documentation seems to say that you can have as many files > as you like, not just 3. [...] Indeed, you can have any number of input files for AC_CONFIG_HEADERS, as for AC_CONFIG_FILES. So you can have AC_CONFIG_HEADERS([defines.h:def1.h:def2.h:def3.h:def4.h]) And if this is the first config header in the configure.ac, which of the input files should be picked by autoheader? I do not see a better answer than what the current implementation has: autoheader picks the first one. Consequently, I think Patrick's patch should not be accepted. But I think we should improve the documentation; most importantly, we should point out that AH_BOTTOM is usually better that multiple input files. Attached please find a first approximation of the documentation patch. Wdyt? Have a nice day, Stepan Kasal
2006-12-05 Stepan Kasal <kasal@xxxxxx> * doc/autoconf.texi (Configuration Headers): Remove the example with multiple input files. (autoheader Invocation): Encourage `AH_BOTTOM', discouraging multiple input files. Index: doc/autoconf.texi =================================================================== RCS file: /cvsroot/autoconf/autoconf/doc/autoconf.texi,v retrieving revision 1.1112 diff -u -r1.1112 autoconf.texi --- doc/autoconf.texi 28 Nov 2006 03:29:47 -0000 1.1112 +++ doc/autoconf.texi 5 Dec 2006 19:34:44 -0000 @@ -2934,17 +2934,13 @@ Usually the input file is named @file{@var{header}.in}; however, you can override the input file name by appending to @var{header} a -colon-separated list of input files. Examples: +colon-separated list of input files. For example, you might need to make +the input file name acceptable to @acronym{DOS} variants: @example AC_CONFIG_HEADERS([config.h:config.hin]) -AC_CONFIG_HEADERS([defines.h:defs.pre:defines.h.in:defs.post]) @end example -@noindent -Doing this allows you to keep your file names acceptable to -@acronym{DOS} variants, or -to prepend and/or append boilerplate to the file. @end defmac @defmac AH_HEADER @@ -3028,11 +3024,18 @@ @cindex @command{autoheader} The @command{autoheader} program can create a template file of C -@samp{#define} statements for @command{configure} to use. If -@file{configure.ac} invokes @code{AC_CONFIG_HEADERS(@var{file})}, -@command{autoheader} creates @file{@var{file}.in}; if multiple file -arguments are given, the first one is used. Otherwise, -@command{autoheader} creates @file{config.h.in}. +@samp{#define} statements for @command{configure} to use. +It searches for the first invocation of @code{AC_CONFIG_HEADERS} in +@file{configure} sources to determine the name of the template. +(If the first call of @code{AC_CONFIG_HEADERS} specifies more than one +input file name, @command{autoheader} uses the first one.) + +It is recommended that only one input file is used. If you want to append +a boilerplate code, it is preferable to use +@samp{AH_BOTTOM([[#include <conf_post.h>]])}. +File @file{conf_post.h} is not processed during the configuration then, +which make things clearer. Analogically, @code{AH_TOP} can be used to +prepend a boilerplate code. In order to do its job, @command{autoheader} needs you to document all of the symbols that you might use. Typically this is done via an
_______________________________________________ Autoconf mailing list Autoconf@xxxxxxx http://lists.gnu.org/mailman/listinfo/autoconf