(automake.info.gz) Conditionals
Info Catalog
(automake.info.gz) Include
(automake.info.gz) Top
(automake.info.gz) Gnits
Conditionals
************
Automake supports a simple type of conditionals.
Before using a conditional, you must define it by using
`AM_CONDITIONAL' in the `configure.in' file ( Macros).
- Macro: AM_CONDITIONAL (CONDITIONAL, CONDITION)
The conditional name, CONDITIONAL, should be a simple string
starting with a letter and containing only letters, digits, and
underscores. It must be different from `TRUE' and `FALSE' which
are reserved by Automake.
The shell CONDITION (suitable for use in a shell `if' statement)
is evaluated when `configure' is run. Note that you must arrange
for _every_ `AM_CONDITIONAL' to be invoked every time `configure'
is run - if `AM_CONDITIONAL' is run conditionally (e.g., in a
shell `if' statement), then the result will confuse automake.
Conditionals typically depend upon options which the user provides to
the `configure' script. Here is an example of how to write a
conditional which is true if the user uses the `--enable-debug' option.
AC_ARG_ENABLE(debug,
[ --enable-debug Turn on debugging],
[case "${enableval}" in
yes) debug=true ;;
no) debug=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
Here is an example of how to use that conditional in `Makefile.am':
if DEBUG
DBG = debug
else
DBG =
endif
noinst_PROGRAMS = $(DBG)
This trivial example could also be handled using EXTRA_PROGRAMS
( Conditional Programs).
You may only test a single variable in an `if' statement, possibly
negated using `!'. The `else' statement may be omitted. Conditionals
may be nested to any depth. You may specify an argument to `else' in
which case it must be the negation of the condition used for the
current `if'. Similarly you may specify the condition which is closed
by an `end':
if DEBUG
DBG = debug
else !DEBUG
DBG =
endif !DEBUG
Unbalanced conditions are errors.
Note that conditionals in Automake are not the same as conditionals
in GNU Make. Automake conditionals are checked at configure time by the
`configure' script, and affect the translation from `Makefile.in' to
`Makefile'. They are based on options passed to `configure' and on
results that `configure' has discovered about the host system. GNU
Make conditionals are checked at `make' time, and are based on
variables passed to the make program or defined in the `Makefile'.
Automake conditionals will work with any make program.
Info Catalog
(automake.info.gz) Include
(automake.info.gz) Top
(automake.info.gz) Gnits
automatically generated byinfo2html