Copyright (C) 2000-2012 |
GNU Info (autoconf.info)Setting Output VariablesSetting Output Variables ======================== 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. Note: Preset Output Variables, for a list of output variables that are always available. - Macro: AC_SUBST (VARIABLE, [VALUE]) Create an output variable from a shell variable. Make `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'. - Macro: AC_SUBST_FILE (VARIABLE) Another way to create an output variable from a shell variable. Make `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', (Note: Automatic Remaking, and *note config.status Invocation::), 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'. - Macro: AC_ARG_VAR (VARIABLE, DESCRIPTION) Declare VARIABLE is a precious variable, and include its DESCRIPTION in the variable section of `./configure --help'. Being precious means that - VARIABLE is `AC_SUBST''d. - VARIABLE is kept in the cache including if it was not specified on the `./configure' command line. Indeed, while `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. - VARIABLE is checked for consistency between two `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. - VARIABLE is kept during automatic reconfiguration (*note config.status Invocation::) as if it had been passed as a command line argument, including when no cache is used: $ 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 automatically generated by info2www version 1.2.2.9 |