[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A common action to take in response to a feature test is to define a C
preprocessor symbol indicating the results of the test. That is done by
calling AC_DEFINE
or AC_DEFINE_UNQUOTED
.
By default, AC_OUTPUT
places the symbols defined by these macros
into the output variable DEFS
, which contains an option
`-Dsymbol=value' for each symbol defined. Unlike in
Autoconf version 1, there is no variable DEFS
defined while
configure
is running. To check whether Autoconf macros have
already defined a certain C preprocessor symbol, test the value of the
appropriate cache variable, as in this example:
AC_CHECK_FUNC(vprintf, [AC_DEFINE(HAVE_VPRINTF)]) if test "$ac_cv_func_vprintf" != yes; then AC_CHECK_FUNC(_doprnt, [AC_DEFINE(HAVE_DOPRNT)]) fi |
If AC_CONFIG_HEADERS
has been called, then instead of creating
DEFS
, AC_OUTPUT
creates a header file by substituting the
correct values into #define
statements in a template file.
See section 4.7 Configuration Header Files, for more information about this kind of
output.
AC_CONFIG_HEADERS
it should not contain any `#'
characters, as make
tends to eat them. To use a shell variable
(which you need to do in order to define a value containing the M4 quote
characters `[' or `]'), use AC_DEFINE_UNQUOTED
instead.
description is only useful if you are using
AC_CONFIG_HEADERS
. In this case, description is put into
the generated `config.h.in' as the comment before the macro define.
The following example defines the C preprocessor variable
EQUATION
to be the string constant `"$a > $b"':
AC_DEFINE(EQUATION, "$a > $b") |
AC_DEFINE
, but three shell expansions are
performed--once--on variable and value: variable expansion
(`$'), command substitution (``'), and backslash escaping
(`\'). Single and double quote characters in the value have no
special meaning. Use this macro instead of AC_DEFINE
when
variable or value is a shell variable. Examples:
AC_DEFINE_UNQUOTED(config_machfile, "$machfile") AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups) AC_DEFINE_UNQUOTED($ac_tr_hdr) |
Due to the syntactical bizarreness of the Bourne shell, do not use
semicolons to separate AC_DEFINE
or AC_DEFINE_UNQUOTED
calls from other macro calls or shell code; that can cause syntax errors
in the resulting configure
script. Use either spaces or
newlines. That is, do this:
AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4) LIBS="$LIBS -lelf"]) |
or this:
AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4) LIBS="$LIBS -lelf"]) |
instead of this:
AC_CHECK_HEADER(elf.h, [AC_DEFINE(SVR4); LIBS="$LIBS -lelf"]) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |