Go to the first, previous, next, last section, table of contents.
Automake supports a simple type of conditionals.
Before using a conditional, you must define it by using
AM_CONDITIONAL
in the configure.in
file (see section Autoconf macros supplied with 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 (see section Building a program).
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.
Go to the first, previous, next, last section, table of contents.