Go to the first, previous, next, last section, table of contents.
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
@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 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"])
Go to the first, previous, next, last section, table of contents.