[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Usage
Before using a conditional, you must define it by using
AM_CONDITIONAL
in the ‘configure.ac’ file (see section Autoconf macros supplied with Automake).
- 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’ that are reserved by Automake.
The shell condition (suitable for use in a shell
if
statement) is evaluated whenconfigure
is run. Note that you must arrange for everyAM_CONDITIONAL
to be invoked every timeconfigure
is run. IfAM_CONDITIONAL
is run conditionally (e.g., in a shellif
statement), then the result will confuse automake.
Conditionals typically depend upon options that the user provides to
the configure
script. Here is an example of how to write a
conditional that 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
(see section Conditional compilation of 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
that is closed by an end
:
if DEBUG DBG = debug else !DEBUG DBG = endif !DEBUG |
Unbalanced conditions are errors.
The else
branch of the above two examples could be omitted,
since assigning the empty string to an otherwise undefined variable
makes no difference.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |