GNU Info

Info Node: (autoconf.info)Setting Output Variables

(autoconf.info)Setting Output Variables


Next: Caching Results Prev: Defining Symbols Up: Results
Enter node , (file) or (file)node

Setting 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