[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Another way to record the results of tests is to set output
variables, which are shell variables whose values are substituted into
files that configure
outputs. The two macros below create new
output variables. See section 4.6.1 Preset Output Variables, for a list of output
variables that are always available.
AC_OUTPUT
substitute the variable variable into output files (typically one
or more `Makefile's). This means that AC_OUTPUT
will
replace instances of `@variable@' in input files with the
value that the shell variable variable has when AC_OUTPUT
is called. This value of variable should not contain literal
newlines.
If value is given, in addition assign it to `variable'.
AC_OUTPUT
insert (without substitutions) the contents of the file
named by shell variable variable into output files. This means
that AC_OUTPUT
will replace instances of
`@variable@' in output files (such as `Makefile.in')
with the contents of the file that the shell variable variable
names when AC_OUTPUT
is called. Set the variable to
`/dev/null' for cases that do not have a file to insert.
This macro is useful for inserting `Makefile' fragments containing
special dependencies or other make
directives for particular host
or target types into `Makefile's. For example, `configure.ac'
could contain:
AC_SUBST_FILE(host_frag) host_frag=$srcdir/conf/sun4.mh |
and then a `Makefile.in' could contain:
@host_frag@ |
Running configure
in different environments can be extremely
dangerous. If for instance the user runs `CC=bizarre-cc
./configure', then the cache, `config.h' and many other output
files will depend upon bizarre-cc
being the C compiler. If
for some reason the user runs /configure
again, or if it is
run via `./config.status --recheck', (See section 4.6.4 Automatic Remaking,
and see section 14. Recreating a Configuration), then the configuration can be
inconsistent, composed of results depending upon two different
compilers.
Such variables are named precious variables, and can be declared
as such by AC_ARG_VAR
.
Being precious means that
AC_SUBST
'd.
configure
can notice the definition of CC
in `./configure
CC=bizarre-cc', it is impossible to notice it in `CC=bizarre-cc
./configure', which, unfortunately, is what most users do.
configure
runs. For instance:
$ ./configure --silent --config-cache $ CC=cc ./configure --silent --config-cache configure: error: `CC' was not set in the previous run configure: error: changes in the environment can compromise \ the build configure: error: run `make distclean' and/or \ `rm config.cache' and start over |
and similarly if the variable is unset, or if its content is changed.
$ CC=/usr/bin/cc ./configure undeclared_var=raboof --silent $ ./config.status --recheck running /bin/sh ./configure undeclared_var=raboof --silent \ CC=/usr/bin/cc --no-create --no-recursion |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |