Next: The effect of --gnu
and --gnits
, Previous: Include, Up: GNU Automake [Contents][Index]
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 Autoconf macros supplied with Automake).
The AM_CONDITIONAL
macro takes two arguments.
The first argument to AM_CONDITIONAL
is the name of the
conditional. This should be a simple string starting with a letter and
containing only letters, digits, and underscores.
The second argument to AM_CONDITIONAL
is a shell condition,
suitable for use in a shell if
statement. The condition is
evaluated when configure
is run.
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 Building a program).
You may only test a single variable in an if
statement. The
else
statement may be omitted. Conditionals may be nested to any
depth.
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.
Next: The effect of --gnu
and --gnits
, Previous: Include, Up: GNU Automake [Contents][Index]