manpagez: man pages & more
info autoconf
Home | html | info | man

File: autoconf.info,  Node: Preset Output Variables,  Next: Installation Directory Variables,  Up: Makefile Substitutions

4.8.1 Preset Output Variables
-----------------------------

Some output variables are preset by the Autoconf macros.  Some of the
Autoconf macros set additional output variables, which are mentioned in
the descriptions for those macros.  *Note Output Variable Index::, for a
complete list of output variables.  *Note Installation Directory
Variables::, for the list of the preset ones related to installation
directories.  Below are listed the other preset ones, many of which are
precious variables (*note Setting Output Variables::, ‘AC_ARG_VAR’).

   The preset variables which are available during ‘config.status’
(*note Configuration Actions::) may also be used during ‘configure’
tests.  For example, it is permissible to reference ‘$srcdir’ when
constructing a list of directories to pass via the ‘-I’ option during a
compiler feature check.  When used in this manner, coupled with the fact
that ‘configure’ is always run from the top build directory, it is
sufficient to use just ‘$srcdir’ instead of ‘$top_srcdir’.

 -- Variable: CFLAGS
     Debugging and optimization options for the C compiler.  If it is
     not set in the environment when ‘configure’ runs, the default value
     is set when you call ‘AC_PROG_CC’ (or empty if you don't).
     ‘configure’ uses this variable when compiling or linking programs
     to test for C features.

     If a compiler option affects only the behavior of the preprocessor
     (e.g., ‘-DNAME’), it should be put into ‘CPPFLAGS’ instead.  If it
     affects only the linker (e.g., ‘-LDIRECTORY’), it should be put
     into ‘LDFLAGS’ instead.  If it affects only the compiler proper,
     ‘CFLAGS’ is the natural home for it.  If an option affects multiple
     phases of the compiler, though, matters get tricky:

        • If an option selects a 32-bit or 64-bit build on a bi-arch
          system, it must be put direcly into ‘CC’, e.g., ‘CC='gcc
          -m64'’.  This is necessary for ‘config.guess’ to work right.
        • Otherwise one approach is to put the option into ‘CC’.
          Another is to put it into both ‘CPPFLAGS’ and ‘LDFLAGS’, but
          not into ‘CFLAGS’.

     However, remember that some ‘Makefile’ variables are reserved by
     the GNU Coding Standards for the use of the "user"--the person
     building the package.  For instance, ‘CFLAGS’ is one such variable.

     Sometimes package developers are tempted to set user variables such
     as ‘CFLAGS’ because it appears to make their job easier.  However,
     the package itself should never set a user variable, particularly
     not to include switches that are required for proper compilation of
     the package.  Since these variables are documented as being for the
     package builder, that person rightfully expects to be able to
     override any of these variables at build time.  If the package
     developer needs to add switches without interfering with the user,
     the proper way to do that is to introduce an additional variable.
     Automake makes this easy by introducing ‘AM_CFLAGS’ (*note
     (automake)Flag Variables Ordering::), but the concept is the same
     even if Automake is not used.

 -- Variable: configure_input
     A comment saying that the file was generated automatically by
     ‘configure’ and giving the name of the input file.  ‘AC_OUTPUT’
     adds a comment line containing this variable to the top of every
     makefile it creates.  For other files, you should reference this
     variable in a comment at the top of each input file.  For example,
     an input shell script should begin like this:

          #!/bin/sh
          # @configure_input@

     The presence of that line also reminds people editing the file that
     it needs to be processed by ‘configure’ in order to be used.

 -- Variable: CPPFLAGS
     Preprocessor options for the C, C++, Objective C, and Objective C++
     preprocessors and compilers.  If it is not set in the environment
     when ‘configure’ runs, the default value is empty.  ‘configure’
     uses this variable when preprocessing or compiling programs to test
     for C, C++, Objective C, and Objective C++ features.

     This variable's contents should contain options like ‘-I’, ‘-D’,
     and ‘-U’ that affect only the behavior of the preprocessor.  Please
     see the explanation of ‘CFLAGS’ for what you can do if an option
     affects other phases of the compiler as well.

     Currently, ‘configure’ always links as part of a single invocation
     of the compiler that also preprocesses and compiles, so it uses
     this variable also when linking programs.  However, it is unwise to
     depend on this behavior because the GNU Coding Standards do not
     require it and many packages do not use ‘CPPFLAGS’ when linking
     programs.

     *Note Special Chars in Variables::, for limitations that ‘CPPFLAGS’
     might run into.

 -- Variable: CXXFLAGS
     Debugging and optimization options for the C++ compiler.  It acts
     like ‘CFLAGS’, but for C++ instead of C.

 -- Variable: DEFS
     ‘-D’ options to pass to the C compiler.  If ‘AC_CONFIG_HEADERS’ is
     called, ‘configure’ replaces ‘@DEFS@’ with ‘-DHAVE_CONFIG_H’
     instead (*note Configuration Headers::).  This variable is not
     defined while ‘configure’ is performing its tests, only when
     creating the output files.  *Note Setting Output Variables::, for
     how to check the results of previous tests.

 -- Variable: ECHO_C
 -- Variable: ECHO_N
 -- Variable: ECHO_T
     How does one suppress the trailing newline from ‘echo’ for
     question-answer message pairs?  These variables provide a way:

          echo $ECHO_N "And the winner is... $ECHO_C"
          sleep 100000000000
          echo "${ECHO_T}dead."

     Some old and uncommon ‘echo’ implementations offer no means to
     achieve this, in which case ‘ECHO_T’ is set to tab.  You might not
     want to use it.

 -- Variable: ERLCFLAGS
     Debugging and optimization options for the Erlang compiler.  If it
     is not set in the environment when ‘configure’ runs, the default
     value is empty.  ‘configure’ uses this variable when compiling
     programs to test for Erlang features.

 -- Variable: FCFLAGS
     Debugging and optimization options for the Fortran compiler.  If it
     is not set in the environment when ‘configure’ runs, the default
     value is set when you call ‘AC_PROG_FC’ (or empty if you don't).
     ‘configure’ uses this variable when compiling or linking programs
     to test for Fortran features.

 -- Variable: FFLAGS
     Debugging and optimization options for the Fortran 77 compiler.  If
     it is not set in the environment when ‘configure’ runs, the default
     value is set when you call ‘AC_PROG_F77’ (or empty if you don't).
     ‘configure’ uses this variable when compiling or linking programs
     to test for Fortran 77 features.

 -- Variable: LDFLAGS
     Options for the linker.  If it is not set in the environment when
     ‘configure’ runs, the default value is empty.  ‘configure’ uses
     this variable when linking programs to test for C, C++, Objective
     C, Objective C++, Fortran, and Go features.

     This variable's contents should contain options like ‘-s’ and ‘-L’
     that affect only the behavior of the linker.  Please see the
     explanation of ‘CFLAGS’ for what you can do if an option also
     affects other phases of the compiler.

     Don't use this variable to pass library names (‘-l’) to the linker;
     use ‘LIBS’ instead.

 -- Variable: LIBS
     ‘-l’ options to pass to the linker.  The default value is empty,
     but some Autoconf macros may prepend extra libraries to this
     variable if those libraries are found and provide necessary
     functions, see *note Libraries::.  ‘configure’ uses this variable
     when linking programs to test for C, C++, Objective C, Objective
     C++, Fortran, and Go features.

 -- Variable: OBJCFLAGS
     Debugging and optimization options for the Objective C compiler.
     It acts like ‘CFLAGS’, but for Objective C instead of C.

 -- Variable: OBJCXXFLAGS
     Debugging and optimization options for the Objective C++ compiler.
     It acts like ‘CXXFLAGS’, but for Objective C++ instead of C++.

 -- Variable: GOFLAGS
     Debugging and optimization options for the Go compiler.  It acts
     like ‘CFLAGS’, but for Go instead of C.

 -- Variable: builddir
     Rigorously equal to ‘.’.  Added for symmetry only.

 -- Variable: abs_builddir
     Absolute name of ‘builddir’.

 -- Variable: top_builddir
     The relative name of the top level of the current build tree.  In
     the top-level directory, this is the same as ‘builddir’.

 -- Variable: top_build_prefix
     The relative name of the top level of the current build tree with
     final slash if nonempty.  This is the same as ‘top_builddir’,
     except that it contains zero or more runs of ‘../’, so it should
     not be appended with a slash for concatenation.  This helps for
     ‘make’ implementations that otherwise do not treat ‘./file’ and
     ‘file’ as equal in the top-level build directory.

 -- Variable: abs_top_builddir
     Absolute name of ‘top_builddir’.

 -- Variable: srcdir
     The name of the directory that contains the source code for that
     makefile.

 -- Variable: abs_srcdir
     Absolute name of ‘srcdir’.

 -- Variable: top_srcdir
     The name of the top-level source code directory for the package.
     In the top-level directory, this is the same as ‘srcdir’.

 -- Variable: abs_top_srcdir
     Absolute name of ‘top_srcdir’.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.