@value{GDBN}'s build system relies on features only found in the GNU
make program. Other variants of @code{make} will not work.
-@item GMP (The GNU Multiple Precision Arithmetic Library)
-@value{GDBN} now uses GMP to perform some of its arithmetics.
-This library may be included with your operating system distribution;
-if it is not, you can get the latest version from
-@url{https://gmplib.org/}. If GMP is installed at an unusual path,
-you can use the @option{--with-gmp} option or options
-@option{--with-gmp-include} and @option{--with-gmp-lib} to specify
-its location.
+@item Libraries
+The following libraries are mandatory for building @value{GDBN}. The
+@file{configure} script searches for each of these libraries in
+several standard locations; if some library is installed in an unusual
+place, you can use the @file{configure} either the option
+@option{--with-@var{lib}} to specify its installation directory, or
+two separate options @option{---with-@var{library}-include} (to
+specify the location of its header files) and
+@option{--with-@var{library}-lib} (to specify the location of its
+libraries). For example, for the GMP library, the 3 options are
+@option{--with-gmp}, @option{--with-gmp-include}, and
+@option{--with-gmp-lib}. @xref{Configure Options}. We mention below
+the home site of each library, so that you could download and install
+them if your system doesn't already include them.
+
+@table @asis
+@item GMP (The GNU Multiple Precision arithmetic library)
+@value{GDBN} uses GMP to perform some of its extended-precision
+arithmetics. The latest version of GMP is available from
+@url{https://gmplib.org/}.
+
+@anchor{MPFR}
+@item MPFR (The GNU Multiple-precision floating-point library)
+@value{GDBN} uses MPFR to emulate the target floating-point
+arithmetics during expression evaluation, if the target uses different
+floating-point formats than the host.
+@end table
@end table
@heading Tools/Packages Optional for Building @value{GDBN}
+The tools/packages and libraries listed below are optional;
+@value{GDBN} can be build without them, at the expense of some run-time
+functionality that will be missing. As above, we list the home sites
+for each package/library, and the command-line options supported by
+the @file{configure} script to specify their installation directories
+if they are non-standard. In addition, for each package you can use
+the option @option{--with-@var{package}} to force @value{GDBN} to be
+compiled with the named @var{package}, and
+@option{--without-@var{package}} to disable building with it even if
+it is available. @xref{Configure Options}, for detailed description
+of the options to @file{configure}.
+
@table @asis
-@item Expat
-@anchor{Expat}
-@value{GDBN} can use the Expat XML parsing library. This library may be
-included with your operating system distribution; if it is not, you
-can get the latest version from @url{http://expat.sourceforge.net}.
-The @file{configure} script will search for this library in several
-standard locations; if it is installed in an unusual path, you can
-use the @option{--with-libexpat-prefix} option to specify its location.
+@item Python
+@value{GDBN} can be scripted using Python language. @xref{Python}.
+The latest version is available from
+@url{https://www.python.org/downloads/}. Use the
+@option{--with-python=@var{dir}} to specify the non-standard directory
+where Python is installed.
-Expat is used for:
+@item Guile
+@value{GDBN} can also be scripted using GNU Guile. @xref{Guile}. The
+latest version can be found on
+@url{https://www.gnu.org/software/guile/download/}. If you have more
+than one version of Guile installed, use the
+@option{--with-guile=@var{guile-version}} to specify the Guile version
+to include in the build.
+
+@anchor{Expat}
+@item Expat
+If available, @value{GDBN} uses the Expat library for parsing XML
+files. @value{GDBN} uses XML files for the following functionalities:
@itemize @bullet
@item
@pxref{Branch Trace Configuration Format})
@end itemize
-@item Guile
-@value{GDBN} can be scripted using GNU Guile. @xref{Guile}. By
-default, @value{GDBN} will be compiled if the Guile libraries are
-installed and are found by @file{configure}. You can use the
-@code{--with-guile} option to request Guile, and pass either the Guile
-version number or the file name of the relevant @code{pkg-config}
-program to choose a particular version of Guile.
+The latest version of Expat is available from
+@url{http://expat.sourceforge.net}. Use the
+@option{--with-libexpat-prefix} to specify non-standard installation
+places for Expat.
@item iconv
@value{GDBN}'s features related to character sets (@pxref{Character
Sets}) require a functioning @code{iconv} implementation. If you are
on a GNU system, then this is provided by the GNU C Library. Some
-other systems also provide a working @code{iconv}.
-
-If @value{GDBN} is using the @code{iconv} program which is installed
-in a non-standard place, you will need to tell @value{GDBN} where to
-find it. This is done with @option{--with-iconv-bin} which specifies
-the directory that contains the @code{iconv} program. This program is
-run in order to make a list of the available character sets.
-
-On systems without @code{iconv}, you can install GNU Libiconv. If
-Libiconv is installed in a standard place, @value{GDBN} will
-automatically use it if it is needed. If you have previously
-installed Libiconv in a non-standard place, you can use the
-@option{--with-libiconv-prefix} option to @file{configure}.
-
-@value{GDBN}'s top-level @file{configure} and @file{Makefile} will
-arrange to build Libiconv if a directory named @file{libiconv} appears
-in the top-most source directory. If Libiconv is built this way, and
-if the operating system does not provide a suitable @code{iconv}
-implementation, then the just-built library will automatically be used
-by @value{GDBN}. One easy way to set this up is to download GNU
-Libiconv, unpack it inside the top-level directory of the @value{GDBN}
-source tree, and then rename the directory holding the Libiconv source
-code to @samp{libiconv}.
+other systems also provide a working @code{iconv}. Use the option
+@option{--with-iconv-bin} to specify where to find the @command{iconv}
+program.
+On systems without @code{iconv}, you can install the GNU Libiconv
+library; its latest version can be found on
+@url{https://ftp.gnu.org/pub/gnu/libiconv/} if your system doesn't
+provide it. Use the @option{--with-libiconv-prefix} option to
+@file{configure} to specify non-standard installation place for it.
+
+Alternatively, @value{GDBN}'s top-level @file{configure} and
+@file{Makefile} will arrange to build Libiconv if a directory named
+@file{libiconv} appears in the top-most source directory. If Libiconv
+is built this way, and if the operating system does not provide a
+suitable @code{iconv} implementation, then the just-built library will
+automatically be used by @value{GDBN}. One easy way to set this up is
+to download GNU Libiconv, unpack it inside the top-level directory of
+the @value{GDBN} source tree, and then rename the directory holding
+the Libiconv source code to @samp{libiconv}.
+
+@cindex compressed debug sections
@item lzma
@value{GDBN} can support debugging sections that are compressed with
the LZMA library. @xref{MiniDebugInfo}. If this library is not
included with your operating system, you can find it in the xz package
-at @url{http://tukaani.org/xz/}. If the LZMA library is available in
-the usual place, then the @file{configure} script will use it
-automatically. If it is installed in an unusual path, you can use the
-@option{--with-liblzma-prefix} option to specify its location.
-
-@item MPFR
-@anchor{MPFR}
-@value{GDBN} now uses the GNU MPFR multiple-precision floating-point
-library. This library may be included with your operating system
-distribution; if it is not, you can get the latest version from
-@url{http://www.mpfr.org}. The @file{configure} script will search
-for this library in several standard locations; if it is installed
-in an unusual path, you can use the @option{--with-mpfr} option or options
-@option{--with-mpfr-include} and @option{--with-mpfr-lib} to specify
-its location.
-
-GNU MPFR is used to emulate target floating-point arithmetic during
-expression evaluation when the target uses different floating-point
-formats than the host.
-
-@item Python
-@value{GDBN} can be scripted using Python language. @xref{Python}.
-By default, @value{GDBN} will be compiled if the Python libraries are
-installed and are found by @file{configure}. You can use the
-@code{--with-python} option to request Python, and pass either the
-file name of the relevant @code{python} executable, or the name of the
-directory in which Python is installed, to choose a particular
-installation of Python.
+at @url{http://tukaani.org/xz/}. Use the
+@option{--with-liblzma-prefix} option to specify its non-standard
+location.
@item zlib
-@cindex compressed debug sections
@value{GDBN} will use the @samp{zlib} library, if available, to read
-compressed debug sections. Some linkers, such as GNU gold, are capable
-of producing binaries with compressed debug sections. If @value{GDBN}
-is compiled with @samp{zlib}, it will be able to read the debug
-information in such binaries.
+compressed debug sections. Some linkers, such as GNU @command{gold},
+are capable of producing binaries with compressed debug sections. If
+@value{GDBN} is compiled with @samp{zlib}, it will be able to read the
+debug information in such binaries.
The @samp{zlib} library is likely included with your operating system
distribution; if it is not, you can get the latest version from
@url{http://zlib.net}.
+
+@c FIXME: what about other optional libraries: debuginfod, zstd,
+@c libipt, babeltrace, xxhash, source-highlight?
@end table
@node Running Configure
@node Configure Options
@section @file{configure} Options
+@c FIXME: This largely repeats what was already described in
+@c ``Requirements'', and OTOH doesn't describe the more fgine-granular
+@c options like --with-libexpat-prefix and --with-python-libdir.
+@c Should it?
Here is a summary of the @file{configure} options and arguments that
are most often useful for building @value{GDBN}. @file{configure}
also has several other options not listed here. @xref{Running
@item --with-libunwind-ia64
Use the libunwind library for unwinding function call stack on ia64
-target platforms. See http://www.nongnu.org/libunwind/index.html for
+target platforms. See @url{http://www.nongnu.org/libunwind/index.html} for
details.
@item --with-system-readline
target descriptions, and shared library lists, that are based on XML
files, will not be available in @value{GDBN}. If your host does not
have libexpat installed, you can get the latest version from
-`http://expat.sourceforge.net'.
+@url{http://expat.sourceforge.net}.
@item --with-libiconv-prefix@r{[}=@var{dir}@r{]}
-
Build @value{GDBN} with GNU libiconv, a character set encoding
conversion library. This is not done by default, as on GNU systems
the @code{iconv} that is built in to the C library is sufficient. If
your host does not have a working @code{iconv}, you can get the latest
-version of GNU iconv from `https://www.gnu.org/software/libiconv/'.
+version of GNU iconv from @url{https://www.gnu.org/software/libiconv/}.
@value{GDBN}'s build system also supports building GNU libiconv as
part of the overall build. @xref{Requirements}.
@value{GDBN}'s "mini debuginfo" feature, which is only useful on
platforms using the ELF object file format. If your host does not
have liblzma installed, you can get the latest version from
-`https://tukaani.org/xz/'.
-
-@item --with-mpfr
-Build @value{GDBN} with GNU MPFR, a library for multiple-precision
-floating-point computation with correct rounding. (Done by default if
-GNU MPFR is installed and found at configure time.) This library is
-used to emulate target floating-point arithmetic during expression
-evaluation when the target uses different floating-point formats than
-the host. If GNU MPFR is not available, @value{GDBN} will fall back
-to using host floating-point arithmetic. If your host does not have
-GNU MPFR installed, you can get the latest version from
-`http://www.mpfr.org'.
+@url{https://tukaani.org/xz/}.
@item --with-python@r{[}=@var{python}@r{]}
Build @value{GDBN} with Python scripting support. (Done by default if
libpython is present and found at configure time.) Python makes
@value{GDBN} scripting much more powerful than the restricted CLI
scripting language. If your host does not have Python installed, you
-can find it on `http://www.python.org/download/'. The oldest version
-of Python supported by GDB is 2.6. The optional argument @var{python}
+can find it on @url{http://www.python.org/download/}. The oldest version
+of Python supported by GDB is 3.0.1. The optional argument @var{python}
is used to find the Python headers and libraries. It can be either
the name of a Python executable, or the name of the directory in which
Python is installed.
-@item --with-guile[=GUILE]'
+@item --with-guile[=@var{guile}]
Build @value{GDBN} with GNU Guile scripting support. (Done by default
if libguile is present and found at configure time.) If your host
does not have Guile installed, you can find it at
-`https://www.gnu.org/software/guile/'. The optional argument GUILE
+@url{https://www.gnu.org/software/guile/}. The optional argument @var{guile}
can be a version number, which will cause @code{configure} to try to
use that version of Guile; or the file name of a @code{pkg-config}
executable, which will be queried to find the information needed to