Node:autoheader Invocation, Next:Autoheader Macros, Previous:Header Templates, Up:Configuration Headers
autoheader
to Create config.h.in
The autoheader
program can create a template file of C
#define
statements for configure
to use. If
configure.ac
invokes AC_CONFIG_HEADERS(file)
,
autoheader
creates file.in
; if multiple file
arguments are given, the first one is used. Otherwise,
autoheader
creates config.h.in
.
In order to do its job, autoheader
needs you to document all
of the symbols that you might use; i.e., there must be at least one
AC_DEFINE
or one AC_DEFINE_UNQUOTED
using its third
argument for each symbol (see Defining Symbols). An additional
constraint is that the first argument of AC_DEFINE
must be a
literal. Note that all symbols defined by Autoconf's built-in tests are
already documented properly; you only need to document those that you
define yourself.
You might wonder why autoheader
is needed: after all, why
would configure
need to "patch" a config.h.in
to
produce a config.h
instead of just creating config.h
from
scratch? Well, when everything rocks, the answer is just that we are
wasting our time maintaining autoheader
: generating
config.h
directly is all that is needed. When things go wrong,
however, you'll be thankful for the existence of autoheader
.
The fact that the symbols are documented is important in order to
check that config.h
makes sense. The fact that there is a
well defined list of symbols that should be #define
'd (or not) is
also important for people who are porting packages to environments where
configure
cannot be run: they just have to fill in the
blanks.
But let's come back to the point: autoheader
's invocation...
If you give autoheader
an argument, it uses that file instead
of configure.ac
and writes the header file to the standard output
instead of to config.h.in
. If you give autoheader
an
argument of -
, it reads the standard input instead of
configure.ac
and writes the header file to the standard output.
autoheader
accepts the following options:
--help
-h
--version
-V
--verbose
-v
--debug
-d
--force
-f
--include=dir
-I dir
--warnings=category
-W category
obsolete
all
none
error
no-category