summaryrefslogtreecommitdiff
path: root/Build/source/doc/tlbuild.info
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/doc/tlbuild.info')
-rw-r--r--Build/source/doc/tlbuild.info2441
1 files changed, 2441 insertions, 0 deletions
diff --git a/Build/source/doc/tlbuild.info b/Build/source/doc/tlbuild.info
new file mode 100644
index 00000000000..a3d3e0278d3
--- /dev/null
+++ b/Build/source/doc/tlbuild.info
@@ -0,0 +1,2441 @@
+This is tlbuild.info, produced by makeinfo version 5.2 from
+tlbuild.texi.
+
+This file documents the TeX Live build system and more.
+
+ Copyright (C) 2013, 2014 Karl Berry & Peter Breitenlohner.
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of
+this manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+ Permission is granted to copy and distribute translations of this
+manual into another language, under the above conditions for modified
+versions, except that this permission notice may be stated in a
+translation approved by the TeX Users Group.
+INFO-DIR-SECTION TeX
+START-INFO-DIR-ENTRY
+* TeX Live building: (tlbuild). TL configuration and development.
+END-INFO-DIR-ENTRY
+
+
+File: tlbuild.info, Node: Top, Next: Introduction, Up: (dir)
+
+Building TeX Live (2014)
+************************
+
+For an overview of this manual, *note Introduction::.
+
+* Menu:
+
+* Introduction:: About this manual.
+* Overview of build system:: The TeX Live build system.
+* Prerequisites:: Requirements for building TeX Live.
+* Building:: The overall build process.
+* Installing:: How and where installation happens (or not).
+* Layout and infrastructure:: Autoconf macros, etc., in detail.
+* Configure options:: List of all configure options.
+* Cross compilation:: Building on host X for target Y.
+* Coding conventions:: Conventions to follow.
+* Index:: General index.
+
+
+File: tlbuild.info, Node: Introduction, Next: Overview of build system, Prev: Top, Up: Top
+
+1 Introduction
+**************
+
+This manual (dated April 2014) corresponds to the TeX Live 2014 release.
+
+ This manual is aimed at system installers and programmers, and
+focuses on how to configure, build, and develop the TeX Live (TL)
+sources. The sources can be acquired in a number of ways; see
+<http://tug.org/texlive/svn>.
+
+ This manual does not duplicate the (primarily user-level) information
+found in other TL documentation resources, such as:
+
+ * The TeX Live web pages: <http://tug.org/texlive>.
+
+ * The TeX Live user manual: <http://tug.org/texlive/doc.html>, or run
+ 'texdoc texlive'.
+
+ * Other TeX-related Texinfo manuals (*note (web2c)::, *note
+ (kpathsea)::, etc.): <http://tug.org/texinfohtml/>, or check the
+ 'TeX' category in the GNU Info system.
+
+ * Package documentation:
+ <http://tug.org/texlive/Contents/live/doc.html>, or the 'doc.html'
+ file at the top level of the installed TL.
+
+
+File: tlbuild.info, Node: Overview of build system, Next: Prerequisites, Prev: Introduction, Up: Top
+
+2 Overview of build system
+**************************
+
+The TeX Live build system was redesigned in 2009, consistently using
+Autoconf, Automake, and Libtool. Thus
+ 'configure && make && make check && make install'
+or the basically-equivalent top-level 'Build' script suffice to build
+and install the TL programs. The 'make check' clause performs various
+tests of the generated programs--not strictly required but strongly
+recommended. Running 'configure --help' will display a comprehensive
+list of all 'configure' options.
+
+ The main components of the TL build system are:
+
+'libs/LIB'
+ Generic libraries.
+
+'texk/LIB'
+ TeX-specific libraries in subdirectories, notably LIB='kpathsea'.
+ (The other one is 'texk/ptexenc'.)
+
+'texk/PROG'
+ TeX-specific programs (that use Kpathsea).
+
+'utils/PROG'
+ Other programs (that don't use Kpathsea).
+
+ The primary design goal of the build system is modularity. Each
+program and library module (or package) specifies its own requirements
+and properties, such as required libraries, whether an installed
+(system) version of a library can be used, 'configure' options to be
+seen at the top-level, and more. An explicit list of all available
+modules is kept in only one, central, place ('m4/kpse-pkgs.m4').
+
+ A second, related goal is to configure and build each library before
+configuring any other (program or library) module which uses that
+library. This allows checking for properties and features of a library
+built as part of the TL tree in much the same way as for a system
+version of that library.
+
+ All generic libraries and several programs are maintained
+independently. The corresponding modules use (most of) the distributed
+source tree and document any modifications of that source.
+
+ All this is for the sake of simplifying both upgrading of modules
+maintained independently and integrating new modules into the TL build
+system. (Not to say that either task is trivial.)
+
+
+File: tlbuild.info, Node: Prerequisites, Next: Building, Prev: Overview of build system, Up: Top
+
+3 Prerequisites
+***************
+
+Overall, building the TeX Live programs, when using all libraries from
+the TL source tree, requires only C and C++ compilers and GNU 'make'.
+(If 'make' from your 'PATH' is not GNU make, you can set 'MAKE' in the
+environment to whatever is necessary.)
+
+ Indeed, GNU 'make' is required only because of some third-party
+libraries, notably FreeType; all the TL-maintained directories (and
+Automake/Autoconf output in general) should work with any reasonable
+'make'.
+
+ However, a few programs in the tree have additional requirements:
+
+'biber'
+ requires 'perl' for autodetection of the TL platform name.
+
+'xdvik'
+'xpdfopen'
+ require X11 headers and libraries, often in "development" packages
+ that are not installed by default.
+
+'xetex'
+ requires 'fontconfig' (again both headers and library).
+
+'xindy'
+ requires GNU 'clisp' and 'libffcall', and in addition 'perl',
+ 'latex', and 'pdflatex' to build the rules and/or documentation.
+
+Lacking the required tools, building these programs must avoided, e.g.,
+'configure --disable-biber --without-x --disable-xetex --disable-xindy'
+
+ Modifying source files induces more requirements, as one might
+expect:
+
+ * Modification of any '.y' or '.l' source files requires 'bison' or
+ 'flex' to updatete the corresponding C sources.
+
+ * Modification of the sources for '.info' files requires 'makeinfo'.
+
+ * Modification of any part of the build system (M4 macros,
+ 'configure.ac', 'Makefile.am', or their fragments) requires GNU M4,
+ GNU Autoconf, GNU Automake, and GNU Libtool to update the generated
+ files. *Note Build system tools::.
+
+ If you haven't modified any source files, and infrastructure tools
+such as 'autoconf' or 'makeinfo' are still being run, check your
+timestamps--notably, 'use-commit-times' must be set to 'yes' in your
+Subversion configuration (*note Build system tools::). Barring buggy
+commits, no infrastructure tools are needed to do a normal build.
+
+
+File: tlbuild.info, Node: Building, Next: Installing, Prev: Prerequisites, Up: Top
+
+4 Building
+**********
+
+The top-level 'Build' script is intended to simplify building the
+binaries distributed with TeX Live itself--we call this the "native" TL
+build. It configures and makes everything in a subdirectory of the main
+build tree (default 'Work/'), installs everything in an other
+subdirectory (default 'inst/'), and finally runs 'make check'. The
+exact directory and command names can be specified via environment
+variables and a few leading options. All remaining arguments
+(assignments or options) are passed to the 'configure' script. Please
+take a look at the script itself for more information; it is not
+complicated.
+
+ An alternative, and the one we will mainly discuss here, is to run
+'configure' and 'make' oneself in a suitable empty subdirectory.
+Building in the source directory itself is not supported (sorry).
+
+ Running the top-level 'configure' script configures the top level and
+the subdirectories 'libs', 'utils', and 'texk'. Running 'make' at the
+top-level first iterates over all TeX-specific libraries, and then runs
+'make' in 'libs', 'utils', and 'texk' to iterate over all generic
+libraries, utility programs, and TeX-specific programs. These
+iterations consist of two steps:
+
+ 1. For each library or program module not yet configured, run
+ 'configure', adding the configure option '--disable-build' if the
+ module need not be built, otherwise running 'make all'.
+
+ 2. For each library or program module that must be built, run 'make'
+ for the selected target(s): 'default' or 'all' to (re-)build,
+ 'check' to run tests, 'install', etc.
+
+ Running the top-level 'make' a second time iterates again over all
+the library and program modules, but finds (should find) nothing to be
+done unless some source files have been modified.
+
+ If configuring or building a module fails, you could either (a) find
+and fix the problem, or (b) remove the subdirectory for that module from
+the build tree, and rerun the top-level 'make' (or 'Build' with
+'--no-clean' as its first argument).
+
+ With the configure option '--disable-all-pkgs', all program and
+library modules are configured but none of them is built. The
+'Makefile' for each such module contains all build rules and
+dependencies and can be invoked to build an individual program or
+library and causes to first build any required libraries. This
+"build-on-demand" procedure is used, e.g., in the 'luatex' repository to
+build LuaTeX, essentially from a subset of the complete TeX Live tree.
+Similarly, when, e.g., building the original e-TeX has been disabled (as
+it is by default), one can run 'make etex' (or 'make etex.exe') in
+'texk/web2c/' to build e-TeX (although there is no comparably simple way
+to install e-TeX).
+
+ The TL build system carefully formulates dependencies as well as
+'make' rules when a tool (such as 'tangle', 'ctangle', or 'convert')
+creates several output files. This allows for parallel builds ('make -j
+N' with N>1 or even 'make -j') that can considerably speed up the TL
+build. Independently, speed-up can also be achieved by using a
+configure cache file, i.e., with the option '-C' (recommended).
+
+ Running 'make dist' at the top-level creates a tarball
+'tex-live-YYYY-MM-DD.tar.xz' from the TL source tree. Running 'make
+dist-check' also verifies that this tarball suffices to build and
+install all of TL. (This is useful for checking consistency of the
+source tree and Makefiles, but the result is not a complete or even
+usable TeX system, since all the support files are lacking; see the next
+section.)
+
+
+File: tlbuild.info, Node: Installing, Next: Layout and infrastructure, Prev: Building, Up: Top
+
+5 Installing
+************
+
+This section discusses the results of 'make install' in the source tree.
+
+ The main consideration is that this is not enough to make a usable
+TeX installation. Beyond the binaries that are built from the sources,
+(thousands of) support files are needed; just as a first example
+'plain.tex' is not in the source tree.
+
+ These support files are maintained completely independently and are
+not present in the source tree. The best basis for dealing with them is
+the TeX Live (plain text) database in 'Master/tlpkg/texlive.tlpdb',
+and/or the TeX Live installer, 'install-tl'. More information is under
+'Master/tlpkg' and at <http://tug.org/texlive/distro.html>.
+
+* Menu:
+
+* Installation directories:: The prefix, 'bindir', etc., directories.
+* Linked scripts:: Scripts not maintained in the sources.
+* Distro builds:: Configuring and building for OS distributions.
+
+
+File: tlbuild.info, Node: Installation directories, Next: Linked scripts, Up: Installing
+
+5.1 Installation directories
+============================
+
+Running 'make install' (or 'make install-strip') installs executables in
+'BINDIR', libraries in 'LIBDIR', headers in 'INCLUDEDIR', general data
+(including "linked scripts", *note Linked scripts::) in
+'DATAROOTDIR/texmf-dist', man pages in 'MANDIR', and Info files in
+'INFODIR'.
+
+ The values of these directories are determined by 'configure' and can
+be specified explictly as options such as '--prefix=PREFIX' or
+'--bindir=BINDIR'; otherwise, they are given by their usual Autoconf
+defaults:
+
+ PREFIX /usr/local
+ EXEC_PREFIX PREFIX
+ BINDIR EXEC_PREFIX/bin
+ LIBDIR EXEC_PREFIX/lib
+ INCLUDEDIR PREFIX/include
+ DATAROOTDIR PREFIX/share
+ MANDIR DATAROOTDIR/man
+ INFODIR DATAROOTDIR/info
+
+... except possibly modified as follows:
+
+ * If the option '--enable-multiplatform' is given, '/PLATFORM' (i.e.,
+ the canonical platform name) is appended to 'BINDIR' and 'LIBDIR'.
+ This is implied for a native TL build.
+
+ * In a native TL build, 'DATAROOTDIR' is set to 'PREFIX', 'INFODIR'
+ is set to 'PREFIX/texmf-dist/doc/info', and 'MANDIR' to
+ 'PREFIX/texmf-dist/doc/man', corresponding to the directories used
+ in the TL distribution.
+
+The top-level 'configure' script displays all these installation paths.
+
+ For the native TL build, the 'Build' script leaves the binaries in
+'./inst/bin/STD-PLATFORM-NAME'. The new binaries are not directly
+usable from that location; they need to be copied to
+'Master/bin/TL-PLATFORM'. The other files and directories that end up
+in './inst/' are ignored.
+
+
+File: tlbuild.info, Node: Linked scripts, Next: Distro builds, Prev: Installation directories, Up: Installing
+
+5.2 Linked scripts
+==================
+
+Quite a few executables are architecture-independent shell, Perl, or
+other interpreted scripts, rather than compiled binaries. A few are
+maintained as part of the TL source tree, but most are maintained
+elsewhere with copies under 'texk/texlive/linked_scripts'.
+
+ These so-called "linked scripts" are installed under
+'DATAROOTDIR/texmf-dist/scripts'; for Unix-like systems a symbolic link
+is made in 'BINDIR'. For example, a symlink points from 'BINDIR/ps2eps'
+to 'DATAROOTDIR/texmf-dist/scripts/ps2eps/ps2eps.pl'. For Windows, a
+standard wrapper binary (e.g., 'BINDIR/ps2eps.exe') serves the same
+purpose. (The source for the wrapper is in 'texk/texlive/w32_wrapper'.)
+
+ One reason for all this is to avoid having many copies of the same
+script, but more importantly this allows invoking the same script on all
+operating systems. Furthermore, we want the 'BINDIR' resulting from the
+build to be exactly what is in the TL distribution; any deviations cause
+considerable extra work.
+
+
+File: tlbuild.info, Node: Distro builds, Prev: Linked scripts, Up: Installing
+
+5.3 Distro builds
+=================
+
+Although they use the same code base, building for the native TL
+distribution as shipped by the TL user groups is typically quite
+different from a "distro" build needed by, e.g., a full GNU/Linux or BSD
+operating system distribution.
+
+ The native TL distribution uses shared libraries only when absolutely
+necessary ('libc', 'libm', X11 libraries, and 'libfontconfig').
+However, a distro typically wants to use as many shared libraries as
+possible from elsewhere on the system, including TeX-specific libraries
+such as 'libkpathsea' (even though Kpathsea has never officially been
+released as a shared library, but we digress). In addition, the
+installation paths will, in general, be completely different.
+
+ Here are the 'configure' options that distro builds are likely to
+find most relevant:
+
+'--disable-native-texlive-build'
+ This must be specified to avoid interference from the many tweaks
+ we do for the native TL build.
+
+'--with-banner-add=/SOMEDISTRO'
+ This isn't technically required, but is strongly recommended, so
+ your build and your distro can be distinguished from others.
+
+'--enable-shared'
+ Build shared versions of the TeX-specific libraries (uses
+ 'libtool').
+
+'--disable-static'
+ Do not build the static versions of the TeX-specific libraries.
+
+'--with-system-LIB'
+ Use system versions for as many libraries LIB as possible.
+ 'configure --help' will give you the list of possibilities.
+
+'--with-LIB-includes=DIR'
+'--with-LIB-libdir=DIR'
+ If needed, allows you to specify where the headers/code are for the
+ given library LIB.
+
+'--prefix=/usr'
+'--prefix=/opt/TeXLive'
+ Or whatever your convention is. The default is '/usr/local' and
+ you shouldn't install there for a distro.
+
+'--libdir=\${exec_prefix}/lib64'
+ May be needed for 64-bit bi-architecture (GNU/Linux) systems.
+
+ You will need to take care of the support files mentioned above
+(*note Installing::), and many other issues, such as font maps,
+languages, and formats, independently of the build. Norbert Preining
+has written a detailed article on adapting TL for distros:
+<http://tug.org/TUGboat/tb34-3/tb108preining-distro.pdf>. (If it needs
+updating at some point, perhaps we will merge it into this document.)
+
+
+File: tlbuild.info, Node: Layout and infrastructure, Next: Configure options, Prev: Installing, Up: Top
+
+6 Layout and infrastructure
+***************************
+
+The TeX Live source tree is the subtree rooted at 'Build/source' of the
+complete TL distribution and contains the sources for all executables
+distributed by TL, as well as 'configure' scripts and 'make' rules to
+build and install them together with some of their support files.
+
+* Menu:
+
+* Build system tools:: If modifying infrastructure files.
+* Top-level directories::
+* Autoconf macros:: TL-specific Autoconf macros.
+* Library modules:: Details on some specific libraries,
+* Program modules:: and on some programs.
+* Extending TeX Live:: Adding a new module.
+
+
+File: tlbuild.info, Node: Build system tools, Next: Top-level directories, Up: Layout and infrastructure
+
+6.1 Build system tools
+======================
+
+As mentioned above (*note Prerequisites::), a normal build requires very
+little. On the other hand, if you want to modify the TeX Live
+infrastructure sources, such as 'configure.ac' or 'Makefile.am' files,
+you will need to have several additional tools installed.
+
+ In general, the TL build system uses the latest released versions of
+the GNU build tools, installed directly from the original GNU releases
+(e.g., by building them with 'configure --prefix=/usr/local/gnu' and
+having 'PATH' start with '/usr/local/gnu/bin'). We have found that
+trying to use the versions of these tools packaged for distros causes
+many extra hassles, so don't do that, tempting as it may be.
+
+ Currently the versions we use are:
+
+ autoconf (GNU Autoconf) 2.69
+ automake (GNU automake) 1.14.1
+ bison (GNU Bison) 3.0.2
+ flex 2.5.39
+ ltmain.sh (GNU libtool) 2.4.2
+ m4 (GNU M4) 1.4.17
+ makeinfo (GNU texinfo) 5.2
+
+ These versions should be used to update the generated files (e.g.,
+'configure' or 'Makefile.in') in all or parts of the TL tree after their
+dependencies have been changed. This can be done explicitly with the
+top-level 'reautoconf' script or implicitly by using the configure
+option '--enable-maintainer-mode'.
+
+ The files in the Subversion repository (see
+<http://tug.org/texlive/svn>) are all up to date, but unfortunately this
+may not be reflected by their timestamps. (For starters, be sure to set
+'use-commit-times=yes' in '~/.subversion/config' or the equivalent.)
+
+ To avoid unnecessary runs of 'bison', 'flex', or 'makeinfo' it may be
+necessary to 'touch' the generated ('.c', '.h', or '.info') files. With
+'--enable-maintainer-mode' it may also be necessary to 'touch' first
+'aclocal.m4', then 'configure' and 'config.h.in' (or 'c-auto.in'), and
+finally all 'Makefile.in' files. Perhaps 'make -t' will help.
+
+
+File: tlbuild.info, Node: Top-level directories, Next: Autoconf macros, Prev: Build system tools, Up: Layout and infrastructure
+
+6.2 Top-level directories
+=========================
+
+Here is a brief description of the top-level directories in the TeX Live
+source tree.
+
+ As mentioned at the beginning of the chapter (*note Overview of build
+system::), the main source directories are 'texk/' (TeX-specific
+programs and libraries), 'utils/' (additional programs), and 'libs'
+(generic libraries).
+
+ The top-level directories 'am/' and 'm4/' contain 'Makefile.am'
+fragments and Autoconf macros, respectively, used in many places.
+Specifically, the file 'm4/kpse-pkgs.m4' contains lists of all program
+and library modules; missing modules are silently ignored. (This helps
+in creating cut-down source trees.)
+
+ Each module contributes fragments (in separate files) defining its
+capabilities and requirements to the 'configure.ac' scripts at the
+top-level and in the subdirectories 'libs', 'utils', and 'texk'. The
+fragments from program modules supply 'configure' options to disable or
+enable building them; those from library modules specify if an installed
+(system) version of that library can be used. This ultimately
+determines which modules need to be built--although all modules must be
+configured for the benefit of 'make' targets such as 'dist' or
+'distcheck'.
+
+ The top-level 'build-aux/' directory contains the common files
+'compile', 'config.guess', 'config.sub', 'depcomp', etc. for most
+packages, pulled from the GNU Gnulib sources
+(<http://www.gnu.org/software/gnulib>), which in turn synchronizes with
+the appropriate ultimate upstream repository. There are, however,
+independent copies in, e.g., 'libs/freetype2/freetype-*/builds/unix/',
+and similar places. The 'reautoconf' script does not touch those, but a
+TL cron job keeps them in sync (nightly).
+
+ The directory 'extra/' contains things which are not part of the TL
+build, but are present for convenience, e.g., 'epstopdf' developed here
+and 'xz/' required by the TL installer.
+
+
+File: tlbuild.info, Node: Autoconf macros, Next: Library modules, Prev: Top-level directories, Up: Layout and infrastructure
+
+6.3 Autoconf macros
+===================
+
+Here we describe some of the Autoconf macros used in several modules-not
+a complete list, by any means. These general macros are supplemented by
+module-specific macros in directories such as 'texk/dvipng/m4/'; some of
+those are described in *note Library modules:: and *note Program
+modules::.
+
+* Menu:
+
+* Setup: General setup macros.
+* Programs: Macros for programs.
+* Compilers: Macros for compilers.
+* Libraries: Macros for libraries.
+* Flags: Macros for library and header flags.
+* Windows: Macros for Windows.
+
+
+File: tlbuild.info, Node: General setup macros, Next: Macros for programs, Up: Autoconf macros
+
+6.3.1 General setup macros
+--------------------------
+
+The TL sources use two general setup macros:
+
+ -- Macro: KPSE_BASIC (NAME, [MORE-OPTIONS])
+ Initialize the basic TL infrastructure for module NAME:
+ 'AM_INIT_AUTOMAKE([foreign MORE-OPTIONS])'
+ 'AM_MAINTAINER_MODE'
+ 'KPSE_COMPILER_WARNINGS'
+ and make sure the C compiler understands function prototypes. This
+ is used for all generic library and program modules.
+
+ -- Macro: KPSE_COMMON (NAME, [MORE-OPTIONS])
+ Like 'KPSE_BASIC' but add:
+ 'LT_PREREQ([2.2.6])'
+ 'LT_INIT([win32-dll])'
+ 'AC_SYS_LARGEFILE'
+ 'AC_FUNC_FSEEKO'
+ and check for frequently used functions, headers, types, and
+ structures. This is used for TeX-specific modules.
+
+
+File: tlbuild.info, Node: Macros for programs, Next: Macros for compilers, Prev: General setup macros, Up: Autoconf macros
+
+6.3.2 Macros for programs
+-------------------------
+
+Macros for program checks:
+
+ -- Macro: KPSE_CHECK_LATEX
+ Set 'LATEX' to the name of the first of 'latex', 'elatex', or
+ 'lambda' which exists in 'PATH', or to 'no' if none of them exists.
+ Call 'AC_SUBST' for 'LATEX'. The result of this test can be
+ overridden by setting the 'LATEX' environment variable or the cache
+ variable 'ac_cv_prog_LATEX'.
+
+ -- Macro: KPSE_CHECK_PDFLATEX
+ Check for 'pdflatex' in 'PATH' and set 'PDFLATEX'.
+
+ -- Macro: KPSE_CHECK_PERL
+ Check for 'perl' or 'perl5' in 'PATH' and set 'PERL'.
+
+ -- Macro: KPSE_PROG_LEX
+ Call 'AC_PROG_LEX' and add the flag '-l' for 'flex'.
+
+
+File: tlbuild.info, Node: Macros for compilers, Next: Macros for libraries, Prev: Macros for programs, Up: Autoconf macros
+
+6.3.3 Macros for compilers
+--------------------------
+
+Macros for compiler-related checks:
+
+ -- Macro: KPSE_COMPILER_WARNINGS
+ When using the (Objective) C/C++ compiler, set
+ 'WARNING_[OBJ]C[XX']FLAGS to suitable warning flags (depending on
+ the value given to or implied for '--enable-compiler-warnings').
+ Call 'AC_SUBST' for them. At the moment this only works for GNU
+ compilers, but could be extended to others if necessary.
+
+ This macro caches its results in the 'kpse_cv_warning_cflags', ...
+ variables.
+
+ -- Macro: KPSE_COMPILER_VISIBILITY
+ When using the C or C++ compiler, try to set
+ 'VISIBILITY_C[XX]FLAGS' to flags to hide external symbols. Call
+ 'AC_SUBST' for this variable. At the moment this only tests for
+ the compiler option '-fvisibility=hidden', but that could be
+ extended with more checks if necessary.
+
+ This macro caches its results in the 'kpse_cv_visibility_cflags' or
+ 'kpse_cv_visibility_cxxflags' variable.
+
+ -- Macro: KPSE_CXX_HACK
+ Provide the configure option '--enable-cxx-runtime-hack'. If
+ enabled and when using 'g++', try to statically link with
+ 'libstdc++', somewhat improving portability of the resulting
+ binary.
+
+ This macro caches its result in the 'kpse_cv_cxx_hack' variable.
+
+
+File: tlbuild.info, Node: Macros for libraries, Next: Macros for library and header flags, Prev: Macros for compilers, Up: Autoconf macros
+
+6.3.4 Macros for libraries
+--------------------------
+
+One macro for a library check:
+
+ -- Macro: KPSE_LARGEFILE (VARIABLE, [EXTRA-DEFINE])
+ Call 'AC_SYS_LARGEFILE' and 'AC_FUNC_FSEEKO' and append suitable
+ '-D' flags (optionally including '-DEXTRA-DEFINE') to VARIABLE.
+
+
+File: tlbuild.info, Node: Macros for library and header flags, Next: Macros for Windows, Prev: Macros for libraries, Up: Autoconf macros
+
+6.3.5 Macros for library and header flags
+-----------------------------------------
+
+Each library module 'libs/LIB' or 'texk/LIB' is supplemented by a macro
+'KPSE_LIB_FLAGS' (all uppercase) that provides make variables for that
+library. E.g., for 'libs/libpng':
+
+ -- Macro: KPSE_LIBPNG_FLAGS
+ Provide the configure option '--with-system-libpng'. Set and
+ 'AC_SUBST' 'make' variables for modules using this library (either
+ an installed version or from the TeX Live tree): 'LIBPNG_INCLUDES'
+ for use in CPPFLAGS, LIBPNG_LIBS for use in LDADD, LIBPNG_DEPEND
+ for use as dependency, and LIBPNG_RULE defining 'make' rules to
+ rebuild the library.
+
+ -- Macro: KPSE_ADD_FLAGS (LIBNAME)
+ Temporarily extend CPPFLAGS and LIBS with the values required for
+ the library module 'NAME'.
+
+ -- Macro: KPSE_RESTORE_FLAGS
+ Restore 'CPPFLAGS' and 'LIBS' to their original values.
+
+ As an example, the 'configure.ac' file for a hypothetical program
+'utils/foo' using 'libpng', and hence 'zlib', would contain
+ KPSE_ZLIB_FLAGS
+ KPSE_LIBPNG_FLAGS
+
+and its 'Makefile.am' would be along these lines:
+ bin_PROGRAMS = foo
+ AM_CPPFLAGS = ${ZLIB_INCLUDES} ${LIBPNG_INCLUDES}
+ foo_LDADD = ${ZLIB_LIBS} ${LIBPNG_LIBS}
+ foo_DEPENDENCIES = ${ZLIB_DEPEND} ${LIBPNG_DEPEND}
+ ## Rebuild libz
+ @ZLIB_RULE@
+ ## Rebuild libpng
+ @LIBPNG_RULE@
+
+ If it was necessary to examine whether certain 'zlib' or 'libpng'
+features were available, 'configure.ac' should be continued this way:
+ KPSE_ADD_FLAGS([zlib])
+ ... # tests for 'zlib' features, if any
+ KPSE_ADD_FLAGS([libpng])
+ ... # tests for 'libpng' features
+ KPSE_RESTORE_FLAGS # restore 'CPPFLAGS' and 'LIBS'
+
+
+File: tlbuild.info, Node: Macros for Windows, Prev: Macros for library and header flags, Up: Autoconf macros
+
+6.3.6 Macros for Windows
+------------------------
+
+Windows differs in several aspects from Unix-like systems, many of them
+due to the lack of symbolic links.
+
+ -- Macro: KPSE_CHECK_WIN32
+ Check if compiling for a Windows system. The result is 'no' for
+ Unix-like systems (including Cygwin), 'mingw32' for Windows with
+ GCC, or 'native' for Windows with MSVC. The result is cached in the
+ 'kpse_cv_have_win32' variable.
+
+ -- Macro: KPSE_COND_WIN32
+ Call 'KPSE_CHECK_WIN32' and define the Automake conditional 'WIN32'
+ ('true' if the value of 'kpse_cv_have_win32' is not 'no').
+
+ -- Macro: KPSE_COND_MINGW32
+ Call 'KPSE_COND_WIN32' and define the Automake conditional
+ 'MINGW32' ('true' if the value of 'kpse_cv_have_win32' is
+ 'mingw32').
+
+ -- Macro: KPSE_COND_WIN32_WRAP
+ Call 'KPSE_COND_WIN32' and define the Automake conditional
+ 'WIN32_WRAP' ('true' if the standard Windows wrapper
+ ('texk/texlive/w32_wrapper/runscript.exe') exists. This wrapper is
+ used on Windows instead of symlinks for the "linked scripts" (*note
+ Linked scripts::).
+
+ -- Macro: KPSE_WIN32_CALL
+ Call 'KPSE_COND_WIN32', check if the file
+ 'texk/texlive/w32_wrapper/callexe.c' exists; if it does, create a
+ symlink in the build tree. Compiling 'callexe.c' with
+ '-DEXEPROG='"FOO.exe"'' and installing 'callexe.exe' as 'BAR.exe'
+ is used on Windows instead of a symlink 'BAR->FOO' for Unix-like
+ systems.
+
+
+File: tlbuild.info, Node: Library modules, Next: Program modules, Prev: Autoconf macros, Up: Layout and infrastructure
+
+6.4 Library modules
+===================
+
+Here we discuss some specifics for a few of the libraries in TL, both
+for the details themselves, and as a way of illuminating the general
+structure and variation.
+
+* Menu:
+
+* 'png' library:: 'libs/libpng'
+* 'zlib' library:: 'libs/zlib'
+* 'freetype' library:: 'libs/freetype2'
+* 'kpathsea' library:: 'texk/kpathsea'
+
+
+File: tlbuild.info, Node: 'png' library, Next: 'zlib' library, Up: Library modules
+
+6.4.1 The 'png' library in 'libs/libpng'
+----------------------------------------
+
+This generic library uses the source tree in, e.g., the subdirectory
+'libpng-1.5.17' with all modifications for TL recorded in
+'libpng-1.5.17-PATCHES/*'. The 'configure.ac' fragment
+'ac/withenable.ac' contains
+
+ KPSE_WITH_LIB([libpng], [zlib])
+
+specifying the module name, and indicating the dependency on 'zlib'. A
+third literal argument 'tree' would specify that the library from the
+TeX Live tree cannot be replaced by a system version. That not being
+the case here, a second fragment 'ac/libpng.ac' contains
+
+ KPSE_TRY_LIB([libpng],
+ [#include <png.h>],
+ [png_structp png; png_voidp io; png_rw_ptr fn;
+ png_set_read_fn(png, io, fn);])
+
+thus providing the simple C code
+
+ #include <png.h>
+ int main ()
+ { png_structp png; png_voidp io; png_rw_ptr fn;
+ png_set_read_fn(png, io, fn);
+ return 0; }
+
+which Autoconf uses to verify the usability of a system version with C
+code. The analogous macro 'KPSE_TRY_LIBXX' would check using C++ code.
+These fragments are included by 'configure.ac' at the top level.
+
+ For this library, among many other modules, a proxy build system for
+TL is used ('configure.ac', 'Makefile.am', and 'include/Makefile.am'),
+ignoring the distributed one. Consequently, a few generated files and
+auxiliary scripts are removed from the distributed source tree. The
+public headers 'png.h', 'pngconf.h', and 'pnglibconf.h' are "installed"
+(as symlinks) under 'include/' in the build tree exactly as they are for
+a system version under, e.g., '/usr/include/'.
+
+ The module is supplemented by the file 'm4/kpse-libpng-flags.m4' that
+defines the M4 macro 'KPSE_LIBPNG_FLAGS' used by all modules depending
+on this library in their 'configure.ac' to generate the 'make' variables
+'LIBPNG_INCLUDES' for use in 'CPPFLAGS', 'LIBPNG_LIBS' for use in
+'LDADD', 'LIBPNG_DEPEND' for use as dependencies, and 'LIBPNG_RULE'
+defining 'make' rules to rebuild the library.
+
+ 'm4/kpse-libpng-flags.m4' also supplies the configure option
+'--with-system-libpng' and uses 'pkg-config' to determine the flags
+required for the system library.
+
+
+File: tlbuild.info, Node: 'zlib' library, Next: 'freetype' library, Prev: 'png' library, Up: Library modules
+
+6.4.2 The 'zlib' library in 'libs/zlib'
+---------------------------------------
+
+This generic library is very much analogous to 'libpng', but without the
+dependency on any other library. The file 'm4/kpse-zlib-flags.m4'
+supplies the configure option '--with-system-zlib', as well as
+'--with-zlib-includes' and '--with-zlib-libdir' to specify non-standard
+locations of the 'zlib' headers and/or library.
+
+
+File: tlbuild.info, Node: 'freetype' library, Next: 'kpathsea' library, Prev: 'zlib' library, Up: Library modules
+
+6.4.3 The 'freetype' library in 'libs/freetype2'
+------------------------------------------------
+
+This module uses a wrapper build system with an almost trivial
+'configure.ac' and with a 'Makefile.am' that invokes 'configure' and
+'make' for the distributed source, followed by 'make install' with the
+build tree as destination. The flags required for the system library
+are obtained through 'freetype-config'.
+
+
+File: tlbuild.info, Node: 'kpathsea' library, Prev: 'freetype' library, Up: Library modules
+
+6.4.4 The 'kpathsea' library in 'texk/kpathsea'
+-----------------------------------------------
+
+This is one of the TeX-specific libraries that are maintained as part of
+TeX Live (*note (kpathsea)::). Despite being a core part of the TeX
+system, it is not a terribly special case in the infrastructure. The
+TeX libraries are Libtool libraries (static and/or shared) and are
+installed by 'make install' together with the programs. They are,
+however, not part of the TL DVD as distributed by TeX user groups, and
+have never been officially released for standalone use.
+
+ It is possible, and possibly even useful for distro builds (*note
+Distro builds::, to specify the configure option
+'--with-system-kpathsea' in order to use a system version of the library
+and it may then be necessary to specify '--with-kpathsea-includes'
+and/or '--with-kpathsea-libdir'.
+
+ In addition to 'ac/withenable.ac' and 'ac/kpathsea.ac' there is a
+third fragment 'ac/mktex.ac' included by both 'ac/withenable.ac' and
+'configure.ac' that supplies configure options such as
+'--enable-mktextfm-default', which determine the compile time default of
+whether or not to run 'mktextfm' to generate a missing '.tfm' file. In
+any case, however, the command line options '-mktex=tfm' or
+'-no-mktex=tfm' for the TeX-like engines override this default.
+
+
+File: tlbuild.info, Node: Program modules, Next: Extending TeX Live, Prev: Library modules, Up: Layout and infrastructure
+
+6.5 Program modules
+===================
+
+As with libraries (*note Library modules::), here we discuss the details
+for a few of the programs in TL.
+
+* Menu:
+
+* 't1utils' package:: 'utils/t1utils'
+* 'xindy' package:: 'utils/xindy'
+* 'xdvik' package:: 'texk/xdvik'
+* 'asymptote':: 'utils/asymptote'
+
+
+File: tlbuild.info, Node: 't1utils' package, Next: 'xindy' package, Up: Program modules
+
+6.5.1 The 't1utils' package in 'utils/t1utils'
+----------------------------------------------
+
+Once again we use the distributed source tree 't1utils-1.38' with
+modifications documented in 't1utils-1.38-PATCHES/*' and a proxy build
+system consisting of 'configure.ac' and 'Makefile.am'. The fragment
+'ac/withenable.ac' contains
+
+ KPSE_ENABLE_PROG([t1utils])
+
+specifying the module name without any dependencies, and supplies the
+configure option '--disable-t1utils'.
+
+
+File: tlbuild.info, Node: 'xindy' package, Next: 'xdvik' package, Prev: 't1utils' package, Up: Program modules
+
+6.5.2 The 'xindy' package in 'utils/xindy'
+------------------------------------------
+
+This module uses the distributed source tree 'xindy-2.4' with
+modifications documented in 'xindy-2.4-PATCHES/*', a proxy
+'configure.ac', and a wrapper 'Makefile.am' that descends into
+'xindy-2.4'. The 'xindy' build requires that the distributed
+'Makefile's allow a 'VPATH' build, can handle all targets, and do not
+refer to '${top_srcdir}' or '${top_builddir}'. The fragment
+'ac/withenable.ac' contains
+
+ KPSE_ENABLE_PROG([xindy], , [disable native])
+ m4_include(kpse_TL[utils/xindy/ac/xindy.ac])
+ m4_include(kpse_TL[utils/xindy/ac/clisp.ac])
+
+where 'disable' in the third argument indicates that 'xindy' is only
+built if explicitly enabled by the user with 'configure --enable-xindy'
+(the need for 'clisp' is too painful to require by default), and
+'native' disallows cross compilation. The additional fragments
+'ac/xindy.ac' and 'ac/clisp.ac' specify more 'configure' options to be
+seen at the top level with 'ac/xindy.ac' also included by
+'configure.ac'.
+
+
+File: tlbuild.info, Node: 'xdvik' package, Next: 'asymptote', Prev: 'xindy' package, Up: Program modules
+
+6.5.3 The 'xdvik' package in 'texk/xdvik'
+-----------------------------------------
+
+This package is maintained as part of the TeX Live tree with sources in
+its top level directory and the subdirectory 'gui'. The fragment
+'ac/withenable.ac' contains
+
+ dnl extra_dirs = texk/xdvik/squeeze
+ KPSE_ENABLE_PROG([xdvik], [kpathsea freetype2], [x])
+ m4_include(kpse_TL[texk/xdvik/ac/xdvik.ac])
+
+thus specifying the dependency on the 'kpathsea', 'freetype', and X11
+libraries. The M4 comment (following 'dnl') signals the subsidiary
+'squeeze/configure.ac'. This is needed because the main executable
+'xdvi-bin' (to be installed as, e.g., 'xdvi-xaw') is for the 'host'
+system whereas the auxiliary program 'squeeze/squeeze' has to run on the
+'build' system and in a cross compilation they differ.
+
+ The additional fragment 'ac/xdvik.ac' is also included by
+'configure.ac' and supplies the configure option '--with-xdvi-x-toolkit'
+also seen at the top-level.
+
+
+File: tlbuild.info, Node: 'asymptote', Prev: 'xdvik' package, Up: Program modules
+
+6.5.4 The subdirectory 'utils/asymptote'
+----------------------------------------
+
+This subdirectory contains the sources for 'asy' and 'xasy' but due to
+its complexity and prerequisites (e.g., OpenGL) it is not part of the TL
+build system. These programs must be built and installed independently,
+but are included on the TL DVD together with their support files.
+
+
+File: tlbuild.info, Node: Extending TeX Live, Prev: Program modules, Up: Layout and infrastructure
+
+6.6 Extending TeX Live
+======================
+
+This section outlines the basic process for adding new packages to the
+TL build system.
+
+* Menu:
+
+* Adding a new program module::
+* Adding a new generic library module::
+* Adding a new TeX-specific library module::
+
+
+File: tlbuild.info, Node: Adding a new program module, Next: Adding a new generic library module, Up: Extending TeX Live
+
+6.6.1 Adding a new program module
+---------------------------------
+
+A TeX-specific program module in a subdirectory 'texk/PROG' may use the
+TeX-specific libraries and is included by adding its name 'PROG' to the
+M4 list 'kpse_texk_pkgs' defined in 'm4/kpse-pkgs.m4'.
+
+ A generic program module in a subdirectory 'utils/PROG' must not use
+the TeX-specific libraries and is included by adding its name 'PROG' to
+the M4 list 'kpse_utils_pkgs' in 'm4/kpse-pkgs.m4'.
+
+ In either case, apart from the program sources and build system
+('configure.ac' and 'Makefile.am'), the subdirectory 'texk/PROG' or
+'utils/PROG' must provide a fragment 'ac/withenable.ac' that contains
+the M4 macro 'KPSE_ENABLE_PROG' defined in 'm4/kpse-setup.m4' with
+'PROG' as the mandatory first argument and three optional arguments:
+
+ 1. a list of required libraries from the TL tree;
+
+ 2. a list of options ('disable' if this module is not to be built
+ without the configure option '--enable-PROG', 'native' if cross
+ compilation is not possible, 'x' if the program requires X11
+ libraries);
+
+ 3. and a comment added to the help text for the 'configure' option
+ '--enable-PROG' or '--disable-PROG'.
+
+ If the module requires specific configure options to be seen at the
+top-level, they should be defined in an additional fragment 'ac/PROG.ac'
+included from 'ac/withenable.ac' and 'configure.ac'.
+
+
+File: tlbuild.info, Node: Adding a new generic library module, Next: Adding a new TeX-specific library module, Prev: Adding a new program module, Up: Extending TeX Live
+
+6.6.2 Adding a new generic library module
+-----------------------------------------
+
+A generic library module in a subdirectory 'libs/LIB' must not depend on
+TeX-specific libraries, by definition. It is included by adding its
+name 'LIB' to the M4 list 'kpse_libs_pkgs' in 'm4/kpse-pkgs.m4'--before
+any other libraries from the TeX Live tree on which it depends.
+
+ As with program modules, the subdirectory 'libs/LIB' must contain the
+sources and build system for the library (and any installable support
+programs) and a fragment 'ac/withenable.ac' that contains the M4 macro
+'KPSE_WITH_LIB' defined in 'm4/kpse-setup.m4' with 'LIB' as the
+mandatory first argument and two optional arguments: a list of required
+libraries from the TL tree, and a list of options (currently there is
+only one: specify 'tree' if this library cannot be replaced by a system
+version).
+
+ If a system version can be used, a second fragment 'ac/LIB.ac' is
+needed, containing the M4 macro 'KPSE_TRY_LIB' (or 'KPSE_TRY_LIBXX')
+with 'LIB' as the mandatory first argument and two additional arguments
+for the Autoconf macro 'AC_LANG_PROGRAM' used to compile and link a
+small C (or C++) program as sanity check for using the system library.
+
+ In addition a file 'm4/kpse-LIB-flags' (at the top level) must define
+the M4 macro 'KPSE_LIB_FLAGS' (all uppercase) setting up the 'make'
+variables 'LIB_INCLUDES', 'LIB_LIBS', 'LIB_DEPEND', and 'LIB_RULE' with
+the values required for 'CPPFLAGS', 'LDADD', dependencies, and a
+(multi-line) 'make' rule to rebuild the library when necessary. All of
+that is needed for the library from the TL tree and, if supported, for a
+system version.
+
+ If a system library is allowed, 'KPSE_LIB_FLAGS' also provides the
+configure option '--with-system-LIB' and uses the additional M4 macro
+'KPSE_LIB_SYSTEM_FLAGS' to generate the 'make' variables for a system
+library. Furthermore the definition of the M4 macro
+'KPSE_ALL_SYSTEM_FLAGS' in 'm4/kpse-pkgs.m4' must be extended by the
+line:
+ 'AC_REQUIRE([KPSE_LIB_SYSTEM_FLAGS])'
+
+
+File: tlbuild.info, Node: Adding a new TeX-specific library module, Prev: Adding a new generic library module, Up: Extending TeX Live
+
+6.6.3 Adding a new TeX-specific library module
+----------------------------------------------
+
+A TeX-specific library module in a subdirectory 'texk/LIB' may depend on
+other TeX-specific libraries but must not depend on any generic library
+from the TL tree. It is included in the same general ways as a generic
+library (see the previous section), with these modifications:
+
+ * The library name 'LIB' is added to the M4 list 'kpse_texlibs_pkgs'
+ also in 'm4/kpse-pkgs.m4'.
+
+ * The fragment 'ac/withenable.ac' must use 'KPSE_WITH_TEXLIB'.
+
+
+File: tlbuild.info, Node: Configure options, Next: Cross compilation, Prev: Layout and infrastructure, Up: Top
+
+7 Configure options
+*******************
+
+Corresponding to the large number of program and library modules there
+are a large number 'configure' options, most of which are described
+here. The command
+ 'configure --help'
+at the top level gives an exhaustive list of all global options and a
+few important module-specific ones, whereas, e.g.,
+ 'texk/lcdf-typetools/configure --help'
+also displays the 'lcdf-typetools' specific options, which are not shown
+by the top-level '--help'.
+
+ The help text also mentions several influential environment
+variables, but for TeX Live it is better to specify them as assigments
+on the command line.
+
+ The './Build' script used to make the binaries shipped with TeX Live
+invokes the top-level 'configure' with a few additional options (*note
+Building::). The defaults discussed below are those for the actual
+'configure' script; invoking 'configure' via './Build' may yield
+different results.
+
+ Defaults for most options are set at the top level and propagated
+explicitly to all subdirectories. Options specified on the command line
+are checked for consistency but never modified.
+
+* Menu:
+
+* Global configure options::
+* Program-specific configure options::
+* Library-specific configure options::
+* Variables for configure::
+
+
+File: tlbuild.info, Node: Global configure options, Next: Program-specific configure options, Up: Configure options
+
+7.1 Global configure options
+============================
+
+Here are the global configure options.
+
+* Menu:
+
+* '--disable-native-texlive-build'::
+* '--prefix' '--bindir' ...::
+* '--disable-largefile'::
+* '--disable-missing'::
+* '--enable-compiler-warnings='LEVEL::
+* '--enable-cxx-runtime-hack'::
+* '--enable-maintainer-mode'::
+* '--enable-multiplatform'::
+* '--enable-shared'::
+* '--enable-silent-rules'::
+* '--without-ln-s'::
+* '--without-x'::
+
+
+File: tlbuild.info, Node: '--disable-native-texlive-build', Next: '--prefix' '--bindir' ..., Up: Global configure options
+
+7.1.1 '--disable-native-texlive-build'
+--------------------------------------
+
+If enabled (the default), build for a TL binary distribution as shipped
+by the TeX user groups. This requires GNU 'make' and implies
+'--enable-multiplatform' and '--enable-cxx-runtime-hack' (unless they
+are explicitly disabled), and enforces '--disable-shared'.
+
+ If building TL for a GNU/Linux or other distribution, this should be
+disabled and system versions of most libraries would be used (*note
+Distro builds::). This may fail without GNU 'make', but will be tried
+regardless.
+
+ A related option, '--enable-texlive-build', is automatically passed
+to all subdirectories (and cannot be disabled). Subdirectories that can
+also be built independently from the TL tree (such as 'utils/xindy' and
+'texk/dvipng') can use this option, e.g., to choose TL-specific
+installation paths.
+
+
+File: tlbuild.info, Node: '--prefix' '--bindir' ..., Next: '--disable-largefile', Prev: '--disable-native-texlive-build', Up: Global configure options
+
+7.1.2 '--prefix', '--bindir', ...
+---------------------------------
+
+These standard Autoconf options specify various installation directories
+as usual. For the complete list, *note Installation directories::.
+
+ Also as usual, all values are prefixed by the value of 'DESTDIR', if
+set, on the 'make' command line (*note Installation in a temporary
+location: (automake)Staged Installs.).
+
+
+File: tlbuild.info, Node: '--disable-largefile', Next: '--disable-missing', Prev: '--prefix' '--bindir' ..., Up: Global configure options
+
+7.1.3 '--disable-largefile'
+---------------------------
+
+Omit large file support (LFS), needed on most 32-bit Unix systems for
+files with 2GB or more. Regardless of this, the size of 'DVI' and 'GF'
+files must always be <2GB, due to the file format specifications.
+
+ With LFS, there is no fixed limit on the size of PDF files created by
+'pdftex' or PostScript files created by 'dvips'. The size of PDF images
+included by 'pdftex' must, however, be <4GB when using 'xpdf' and <2GB
+when using older versions of 'poppler' (even on 64-bit systems with
+LFS), whereas 'poppler' versions 0.23 and later impose no such limit.
+
+
+File: tlbuild.info, Node: '--disable-missing', Next: '--enable-compiler-warnings='LEVEL, Prev: '--disable-largefile', Up: Global configure options
+
+7.1.4 '--disable-missing'
+-------------------------
+
+Immediately terminate the build process if a requested program or
+feature must be disabled, e.g., due to missing libraries. This can help
+when figuring out a specific (sub)set of modules to enable.
+
+
+File: tlbuild.info, Node: '--enable-compiler-warnings='LEVEL, Next: '--enable-cxx-runtime-hack', Prev: '--disable-missing', Up: Global configure options
+
+7.1.5 '--enable-compiler-warnings='LEVEL
+----------------------------------------
+
+Enable various levels of compiler warnings for (Objective) C and C++:
+the LEVEL value can be one of: 'no min yes max all'. The default is
+'yes' in 'maintainer-mode' (see below) and 'min' otherwise. This option
+defines 'WARNING_[OBJ]C[XX]FLAGS' but these flags are not used in all
+library and program modules. Using them should help to resolve
+portability problems.
+
+ At present, these warning flags are only defined for the GNU
+compilers but flags for other compilers could be added when needed.
+
+
+File: tlbuild.info, Node: '--enable-cxx-runtime-hack', Next: '--enable-maintainer-mode', Prev: '--enable-compiler-warnings='LEVEL, Up: Global configure options
+
+7.1.6 '--enable-cxx-runtime-hack'
+---------------------------------
+
+If enabled (as it is for the native TL build) and when using 'g++', try
+to statically link with 'libstdc++', somewhat improving portability of
+the resulting binary. *Note Macros for compilers::.
+
+
+File: tlbuild.info, Node: '--enable-maintainer-mode', Next: '--enable-multiplatform', Prev: '--enable-cxx-runtime-hack', Up: Global configure options
+
+7.1.7 '--enable-maintainer-mode'
+--------------------------------
+
+Enable 'make' rules and dependencies not useful (and sometimes
+confusing) to the casual user. This requires current versions of the
+GNU build tools (*note Build system tools::), as it automatically
+rebuilds infrastructure files as needed. *Note 'missing' and
+'AM_MAINTAINER_MODE': (automake)maintainer-mode.
+
+
+File: tlbuild.info, Node: '--enable-multiplatform', Next: '--enable-shared', Prev: '--enable-maintainer-mode', Up: Global configure options
+
+7.1.8 '--enable-multiplatform'
+------------------------------
+
+If enabled, install executables and libraries in per-platform
+subdirectories of 'EPREFIX/bin' and 'EPREFIX/lib' where EPREFIX is the
+value given or implied for 'exec_prefix'. This can be overridden by
+explicitly '--bindir=DIR' or '--libdir=DIR'. In any case, the values
+for 'bindir' and 'libdir' are automatically propagated to all
+subdirectories.
+
+
+File: tlbuild.info, Node: '--enable-shared', Next: '--enable-silent-rules', Prev: '--enable-multiplatform', Up: Global configure options
+
+7.1.9 '--enable-shared'
+-----------------------
+
+Build shared versions of the TeX-specific libraries such as
+'libkpathsea'. This is not allowed for a native TL build (i.e.,
+'--disable-native-texlive-build' must also be specified).
+
+
+File: tlbuild.info, Node: '--enable-silent-rules', Next: '--without-ln-s', Prev: '--enable-shared', Up: Global configure options
+
+7.1.10 '--enable-silent-rules'
+------------------------------
+
+Enable the use of less verbose build rules. When using GNU 'make' (or
+another 'make' implementation supporting nested variable expansions),
+you can specify 'V=1' on the 'make' command line to get more verbosity,
+or 'V=0' to get less, regardless of this option.
+
+
+File: tlbuild.info, Node: '--without-ln-s', Next: '--without-x', Prev: '--enable-silent-rules', Up: Global configure options
+
+7.1.11 '--without-ln-s'
+-----------------------
+
+Required when using a system without a working 'ln -s' to build binaries
+for a Unix-like system. However, 'make install' will not create
+anything useful and might even fail.
+
+
+File: tlbuild.info, Node: '--without-x', Prev: '--without-ln-s', Up: Global configure options
+
+7.1.12 '--without-x'
+--------------------
+
+Disable all programs using the X Window System.
+
+
+File: tlbuild.info, Node: Program-specific configure options, Next: Library-specific configure options, Prev: Global configure options, Up: Configure options
+
+7.2 Program-specific configure options
+======================================
+
+Here are (some of) the program-specific 'configure' options.
+
+* Menu:
+
+* '--enable-PROG' '--disable-PROG'::
+* '--disable-all-pkgs'::
+* Configure options for 'texk/web2c'::
+* Configure options for 'texk/bibtex-x'::
+* Configure options for 'texk/dvipdfm-x'::
+* Configure options for 'texk/dvisvgm'::
+* Configure options for 'texk/texlive'::
+* Configure options for 'texk/xdvik'::
+* Configure options for 'utils/xindy'::
+
+
+File: tlbuild.info, Node: '--enable-PROG' '--disable-PROG', Next: '--disable-all-pkgs', Up: Program-specific configure options
+
+7.2.1 '--enable-PROG', '--disable-PROG'
+---------------------------------------
+
+Do or do not build and install the program(s) of the module 'PROG'.
+
+
+File: tlbuild.info, Node: '--disable-all-pkgs', Next: Configure options for 'texk/web2c', Prev: '--enable-PROG' '--disable-PROG', Up: Program-specific configure options
+
+7.2.2 '--disable-all-pkgs'
+--------------------------
+
+Do not build any program modules by default--only those explicitly
+enabled. Without this option, all modules are built except those that
+are explicitly disabled or specify 'disable' in their 'ac/withenable.ac'
+fragment.
+
+
+File: tlbuild.info, Node: Configure options for 'texk/web2c', Next: Configure options for 'texk/bibtex-x', Prev: '--disable-all-pkgs', Up: Program-specific configure options
+
+7.2.3 Configure options for 'texk/web2c'
+----------------------------------------
+
+'--with-banner-add=STR'
+Add 'STR' to the default version string ('TeX Live YEAR' or 'Web2C
+YEAR') appended to banner lines. This is ignored for a native TL build,
+but distro builds should specify, e.g., '/SOMEDISTRO'.
+
+'--with-editor=CMD'
+Specify the command 'CMD' to invoke from the 'e' option of TeX-like
+engines, replacing the default 'vi +%d '%s'' for Unix or 'texworks
+--position=%d "%s"' for Windows.
+
+'--with-fontconfig-includes=DIR', '--with-fontconfig-libdir=DIR'
+Building XeTeX on non-Mac systems requires the 'fontconfig' library
+headers and code. If one or both of these options are given, the
+required flags are derived from them; otherwise, they are determined via
+'pkg-config' (if present).
+
+'--with-mf-x-toolkit'
+Use the X toolkit ('libXt') for Metafont (the default is to use the
+lowest-level 'Xlib' support; it seems this has the best chance of
+working across X installations nowadays).
+
+'--disable-dump-share'
+Make the 'fmt'/'base' dump files architecture dependent (somewhat faster
+on LittleEndian architectures).
+
+'--disable-ipc'
+Disable TeX's '--ipc' option.
+
+'--disable-mf-nowin'
+Do not build a separate non-graphically-capable Metafont ('mf-nowin').
+
+'--disable-omfonts'
+Build the WEB versions of the Omega font utilities 'ofm2opl', 'opl2ofm',
+'ovf2ovp', and 'ovp2ovf' instead of the C version 'omfonts'. The WEB
+and C versions should be roughly equivalent.
+
+'--disable-tex', '--enable-etex', ...
+Do not or do build the various TeX, Metafont, and MetaPost engines
+(defaults are defined in the fragment 'texk/web2c/ac/web2c.ac').
+
+'--disable-web-progs'
+Do not build the core WEB programs 'bibtex', ..., 'weave'. Useful if,
+e.g., you only want to (re)build some engines.
+
+'--enable-auto-core'
+This option causes TeX and Metafont to produce a core dump when a
+particular hacky filename is encountered, for use in creating preloaded
+binaries. This is rarely done nowadays.
+
+'--enable-libtool-hack'
+If enabled (which is the default for all platforms), prevents 'libtool'
+from linking explicitly with dependencies of 'libfontconfig' such as
+'libexpat'.
+
+'--enable-*win'
+Include various types of other window support for Metafont (EPSF output,
+'mftalk', old terminals, ...).
+
+'--enable-tex-synctex', '--disable-etex-synctex', ...
+Build the TeX engines with or without 'SyncTeX' support; ignored for a
+native TeX Live build, defaults are again defined in
+'texk/web2c/ac/web2c.ac'.
+
+
+File: tlbuild.info, Node: Configure options for 'texk/bibtex-x', Next: Configure options for 'texk/dvipdfm-x', Prev: Configure options for 'texk/web2c', Up: Program-specific configure options
+
+7.2.4 Configure options for 'texk/bibtex-x'
+-------------------------------------------
+
+The former programs 'bibtex8' and 'bibtexu' have been merged into the
+module 'bibtex-x' (extended BibTeX).
+
+'--disable-bibtex8'
+Do not build the 'bibtex8' program.
+
+ -disable-bibtexu '--disable-bibtexu'
+Do not build the 'bibtexu' program (building 'bibtexu' requires 'ICU'
+libraries).
+
+
+File: tlbuild.info, Node: Configure options for 'texk/dvipdfm-x', Next: Configure options for 'texk/dvisvgm', Prev: Configure options for 'texk/bibtex-x', Up: Program-specific configure options
+
+7.2.5 Configure options for 'texk/dvipdfm-x'
+--------------------------------------------
+
+The former modules 'dvipdfmx' (extended DVI to PDF converter) and
+'xdvipdfmx' (the same, as used by XeTeX) have been merged into
+'dvipdfm-x'.
+
+'--disable-dvipdfmx'
+Do not build the 'dvipdfmx' program.
+
+'--disable-xdvipdfmx'
+Do not build the 'xdvipdfmx' program (building 'xdvipdfmx' requires the
+'freetype' library).
+
+
+File: tlbuild.info, Node: Configure options for 'texk/dvisvgm', Next: Configure options for 'texk/texlive', Prev: Configure options for 'texk/dvipdfm-x', Up: Program-specific configure options
+
+7.2.6 Configure options for 'texk/dvisvgm'
+------------------------------------------
+
+'--with-system-libgs'
+Build 'dvisvgm' using installed Ghostscript ('gs') headers and library
+(not allowed for a native TL build). The default is to load the 'gs'
+library at runtime if possible, or otherwise disable support for
+PostScript specials.
+
+'--without-libgs'
+Build 'dvisvgm' without PostScript support at all. Because the dynamic
+loading just mention defeats all attempts at static linking, the result
+can crash due to library incompatibilities, e.g., on CentOS 5.
+
+'--with-libgs-includes=DIR', '--with-libgs-libdir=DIR'
+Specify non-standard locations of the Ghostscript headers and library.
+
+
+File: tlbuild.info, Node: Configure options for 'texk/texlive', Next: Configure options for 'texk/xdvik', Prev: Configure options for 'texk/dvisvgm', Up: Program-specific configure options
+
+7.2.7 Configure options for 'texk/texlive'
+------------------------------------------
+
+'--disable-linked-scripts'
+Do not install the "linked scripts" (*note Linked scripts::), except for
+the TL scripts required to run 'texlinks'.
+
+
+File: tlbuild.info, Node: Configure options for 'texk/xdvik', Next: Configure options for 'utils/xindy', Prev: Configure options for 'texk/texlive', Up: Program-specific configure options
+
+7.2.8 Configure options for 'texk/xdvik'
+----------------------------------------
+
+'--with-gs=FILENAME'
+Hardwire the location of Ghostscript ('gs').
+
+'--with-xdvi-x-toolkit=KIT'
+Use toolkit 'KIT' for 'xdvik', one of: 'motif xaw xaw3d neXtaw'. The
+default is 'motif' if available, else 'xaw'.
+
+
+File: tlbuild.info, Node: Configure options for 'utils/xindy', Prev: Configure options for 'texk/xdvik', Up: Program-specific configure options
+
+7.2.9 Configure options for 'utils/xindy'
+-----------------------------------------
+
+'--enable-xindy-rules'
+Build and install 'xindy' rules (default: yes, except for a native TL
+build).
+
+'--enable-xindy-docs'
+Build and install 'xindy' documentation (default: yes, except for a
+native TL build).
+
+'--with-clisp-runtime=FILENAME'
+Specifies the Full path for the CLISP runtime file ('lisp.run' or
+'lisp.exe') to be installed. When specified as 'default' (the default
+for a native TL build) the path is determined by the CLISP executable;
+the value 'system' (not allowed for a native TL build, but the default
+for a non-native one) indicates that 'xindy' will use the installed
+version of 'clisp' (which must be identical to the one used to build
+'xindy').
+
+'--with-recode'
+Use 'recode' instead of 'iconv' to build the 'xindy' rules and
+documentation, required for some systems where 'iconv' is missing or
+broken.
+
+
+File: tlbuild.info, Node: Library-specific configure options, Next: Variables for configure, Prev: Program-specific configure options, Up: Configure options
+
+7.3 Library-specific configure options
+======================================
+
+Here are (some of) the library-specific 'configure' options, starting
+with this generic one:
+
+'--with-system-LIB'
+
+ Use an installed (system) version of the library 'LIB'; this option
+exists for most libraries, but is not allowed for a native TL build.
+Using a system version implies also using the system versions of all
+libraries (if any) that LIB depends on.
+
+ For many libraries '--with-LIB-includes=DIR' and
+'--with-LIB-libdir=DIR' to specify non-standard search locations; others
+use 'pkg-config' or similar to determine the required flags.
+
+ The top-level 'configure' script performs a consistency check for all
+required system libraries and bails out if tests fail.
+
+* Menu:
+
+* Configure options for 'kpathsea'::
+* Configure options for system 'poppler'::
+
+
+File: tlbuild.info, Node: Configure options for 'kpathsea', Next: Configure options for system 'poppler', Up: Library-specific configure options
+
+7.3.1 Configure options for 'kpathsea'
+--------------------------------------
+
+'--enable-CMD-default', '--disable-CMD-default'
+Determine the compile time default whether or not to run CMD, one of:
+'mkocp'
+ (Omega compiled translation process file)
+'mkofm'
+ (Omega font metrics file)
+'mktexfmt'
+ (format/base dump file)
+'mktexmf'
+ (Metafont source)
+'mktexpk'
+ (PK bitmap font)
+'mktextex'
+ (TeX source)
+'mktextfm'
+ (TFM file)
+
+to generate the specified type of file dynamically. The default can be
+overridden by the user in any case.
+
+
+File: tlbuild.info, Node: Configure options for system 'poppler', Prev: Configure options for 'kpathsea', Up: Library-specific configure options
+
+7.3.2 Configure options for system 'poppler'
+--------------------------------------------
+
+Building LuaTeX and XeTeX requires 'poppler', either from the TL tree or
+system headers and library. Building pdfTeX requires either 'xpdf' from
+the TeX Live tree or system 'poppler' headers and library.
+
+'--with-system-poppler'
+Use a system version (0.18 or newer) of 'poppler' for LuaTeX and XeTeX,
+and use 'pkg-config' to obtain the required flags.
+
+'--with-system-xpdf'
+Use a system version (0.12 or better) of 'poppler' (and 'pkg-config')
+for pdfTeX instead of 'xpdf' from the TL tree. *Note
+'--disable-largefile'::.
+
+
+File: tlbuild.info, Node: Variables for configure, Prev: Library-specific configure options, Up: Configure options
+
+7.4 Variables for configure
+===========================
+
+The values for these variables can be specified as 'configure' arguments
+of the form 'VAR=VALUE'. They can also be defined in the environment,
+but that might not work for cross compilations.
+
+'CC'
+'CXX'
+'CPPFLAGS'
+ And plenty more. As usual with Autoconf, these variables specify
+ the name (or full path) of compilers, preprocessor flags, and
+ similar. *Note autoconf: (GNU Autoconf)Preset Output Variables.
+
+'CLISP'
+ Name (or full path) of the 'clisp' executable, used to build
+ 'xindy'.
+
+'FT2_CONFIG'
+'ICU_CONFIG'
+'PKG_CONFIG'
+ These specify the name (or path) for the 'freetype-config',
+ 'icu-config', and 'pkg-config' commands used to determine the flags
+ required for system versions of 'libfreetype', the ICU libraries,
+ or many other libraries.
+
+'KPSEWHICH'
+ Name (or path) of an installed 'kpsewhich' binary, used by 'make
+ check' to determine the location of, e.g., 'cmbx10.tfm'.
+
+'MAKE'
+'SED'
+ And more. Name (or path) of the 'make', 'sed', and similar
+ programs; used at the top level and propagated to all
+ subdirectories.
+
+'PERL'
+'LATEX'
+'PDFLATEX'
+ Name (or full path) for the 'perl', 'latex', and 'pdflatex'
+ commands used, e.g., to build the 'xindy' documentation.
+
+'TL_PLATFORM'
+ The utility program 'biber' consists of many Perl modules bundled
+ into an executable by the 'Par::Packer' mechanism. Therefore it is
+ not feasible to build 'biber' as part of TL.
+
+ However, in order for 'make install' to create all executables in
+ 'bindir', the 'biber' module in TL contains pre-made binaries (by
+ 'biber' contributors, released on the original 'biber' site) for
+ the platforms for which they are available. TL merely checks if an
+ executable is present for the current platform, and if so, installs
+ it.
+
+ The complication is hidden in the phrase "current platform". TL
+ has its own ideas about platform names, and the mapping from the
+ canonical system name determined by 'config.guess' or 'config.sub'
+ to the TL platform name is not trivial. So, a value given for
+ 'TL_PLATFORM' is used as the TL platform name. Otherwise, the
+ build uses copies of the Perl modules 'TeXLive/TLUtils.pm' and
+ 'TeXLive/TLConfig.pm', to avoid duplicating the platform-detection
+ logic.
+
+
+File: tlbuild.info, Node: Cross compilation, Next: Coding conventions, Prev: Configure options, Up: Top
+
+8 Cross compilation
+*******************
+
+In a cross compilation a "build" system is used to create binaries to be
+executed on a "host" system with different hardware and/or operating
+system.
+
+ In simple cases, the build system can execute binaries for the host
+system. This typically occurs for bi-arch systems where, e.g.,
+'i386-linux' binaries can run on 'x86_64-linux' systems and 'win32'
+binaries can run on 'win64' systems. Although sometimes called "native
+cross", technically this is not cross compilation at all. In most such
+cases it suffices to specify suitable compiler flags. It might be
+useful to add the configure option '--build=HOST' to get the correct
+canonical host name, but note that this should _not_ be '--host=HOST'
+(*note (autoconf)Hosts and Cross-Compilation::).
+
+ In order to build, e.g., 32-bit binaries with 'clang' on a 64-bit OSX
+system one could use
+ './Build --build=i386-apple-darwin CC='clang -arch i386'' \
+ 'CXX='clang++ -arch i386' OBJCXX='clang++ -arch i386''
+
+* Menu:
+
+* Cross configuring:: Configuring for cross compilation.
+* Cross problems:: Cross compilation problems.
+
+
+File: tlbuild.info, Node: Cross configuring, Next: Cross problems, Up: Cross compilation
+
+8.1 Cross configuring
+=====================
+
+In a standard cross compilation, binaries for the host system cannot
+execute on the build system and it is necessary to specify the configure
+options '--host=HOST' and '--build=BUILD' with two different values.
+
+ Building binaries requires suitable "cross" tools, e.g., compiler,
+linker, and archiver, and perhaps a "cross" version of 'pkg-config' and
+similar to locate host system libraries. Autoconf expects that these
+cross tools are given by their usual variables or found under their
+usual name prefixed with 'HOST-'. Here a list of such tools and
+corresponding variables:
+
+ ar AR
+ freetype-config FT2_CONFIG
+ g++ CXX
+ gcc CC
+ icu-config ICU_CONFIG
+ objdump OBJDUMP
+ pkg-config PKG_CONFIG
+ ranlib RANLIB
+ strip STRIP
+
+In order to, e.g., build 'mingw32' binaries on 'x86_64-linux' with a
+cross compiler found as 'i386-pc-mingw32-gcc' one would specify
+
+ --host=i386-pc-mingw32 --build=x86_64-linux-gnu
+
+or perhaps
+
+ --host=mingw32 --build=x86_64-linux CC=i386-pc-mingw32-gcc
+
+but this latter, especially, might require adding 'CXX' and others.
+
+ Configure arguments such as 'CFLAGS=...' refer to the cross compiler.
+If necessary, you can specify compilers and flags for the few auxiliary
+C and C++ programs required for the build process as configure arguments
+
+ BUILDCC=...
+ BUILDCPPFLAGS=...
+ BUILDCFLAGS=...
+ BUILDCXX=...
+ BUILDCXXFLAGS=...
+ BUILDLDFLAGS=...
+
+
+File: tlbuild.info, Node: Cross problems, Prev: Cross configuring, Up: Cross compilation
+
+8.2 Cross problems
+==================
+
+The fact that binaries for the host system cannot be executed on the
+build system causes some problems.
+
+ One problem is that configure tests using 'AC_RUN_IFELSE' can compile
+and link the test program but cannot execute it. Such tests should be
+avoided if possible and otherwise must supply a pessimistic test result.
+
+ Another problem arises if the build process must execute some
+(auxiliary or installable) programs. Auxiliary programs can be placed
+into a subdirectory that is configured natively as is done for
+'texk/web2c/web2c', 'texk/dvipsk/squeeze', and 'texk/xdvik/squeeze'.
+The module 'libs/freetype' uses the value of 'CC_BUILD', 'BUILD-gcc',
+'gcc', or 'cc' as compiler for the auxiliary program.
+
+ The situation for installable programs needed by the build process is
+somewhat different. A quite expensive possibility, chosen for the ICU
+libraries in module 'libs/icu', is to first compile natively for the
+build system and in a second step to use these (uninstalled) programs
+during the cross compilation.
+
+ This approach would also be possible for the tools such as 'tangle'
+used in the module 'texk/web2c' to build the WEB programs, but that
+would require first building a native 'kpathsea' library. To avoid this
+complication, cross compilation of the WEB or CWEB programs requires
+sufficiently recent installed versions of 'tangle', 'ctangle',
+'otangle', and 'tie'.
+
+ Building 'xindy' requires running the host system 'clisp' binary,
+thus cross compilation is not possible.
+
+
+File: tlbuild.info, Node: Coding conventions, Next: Index, Prev: Cross compilation, Up: Top
+
+9 Coding conventions
+********************
+
+Ideally, building all of TeX Live with '--enable-compiler-warnings=max'
+should produce no (GCC) compiler warnings at all. In spite of
+considerable efforts into that direction we are still far from that goal
+and there are reasons that we may never fully reach it. Below are some
+rules about declarations of functions or variables and the use of
+'const'. These rules should be applied to all parts of the TeX Live
+tree, except some of those maintained independently.
+
+* Menu:
+
+* Declarations and definitions::
+* Const::
+
+
+File: tlbuild.info, Node: Declarations and definitions, Next: Const, Up: Coding conventions
+
+9.1 Declarations and definitions
+================================
+
+C standards
+...........
+
+The TeX Live build system no longer supports pre-ANSI C compilers. Thus
+all function prototypes and definitions must conform to the ANSI C
+standard (including 'void' in the declaration of C functions with no
+parameters). On the other hand, TL is built for a wide variety of
+systems, not all of which support the C99 standard. Therefore using C99
+features should be avoided if that can easily be done. In particular C
+code must not contain declarations after statements or C++-style
+comments.
+
+ If some C99 (or later) constructs must be used, the module should
+verify that they are available and otherwise provide an alternative.
+For example, the module 'texk/chktex' uses the C99 function 'stpcpy()'
+that may or may not be available on a particular system. It uses
+'AC_CHECK_DECLS([stpcpy])' in 'configure.ac' to test this, and provides
+the perhaps slightly less efficient alternative
+
+ #if !(defined HAVE_DECL_STPCPY && HAVE_DECL_STPCPY)
+ #static inline char *stpcpy(char *dest, const char *src)
+ {
+ return strcpy(dest, src) + strlen(src);
+ }
+ #endif
+
+in the file 'Utility.h'.
+
+Static functions
+................
+
+Functions used in only one file should be declared 'static'; they
+require no prototype except as forward declaration.
+
+Extern functions
+................
+
+Functions not declared 'static', usually because they are used in
+several files, require an ('extern') prototype in exactly one header
+file, which is included in the file defining the function and in all
+files using that function--this is the only way to guarantee consistency
+between definition and use. There should be no 'extern' declarations
+sprinkled throughout the C code (with or without comments as to where
+that function is defined).
+
+Variable declarations
+.....................
+
+The declaration of global variables follows analogous rules: they are
+either declared 'static' if used in only one file or declared 'extern'
+in exactly one header and instantiated in exactly one file.
+
+
+File: tlbuild.info, Node: Const, Prev: Declarations and definitions, Up: Coding conventions
+
+9.2 Const
+=========
+
+The 'const' feature of C is valuable, but easy to mis-use.
+
+Function parameters
+...................
+
+Ideally, a function parameter not modified by the function should be
+declared as 'const'. This is important in particular for strings
+('char*') because the actual arguments are often string literals. It is
+perfectly legitimate and safe to use a type 'char*' value for a type
+'const char*' variable (in an assignment, as initializer, as function
+argument, or as return value). It is equally safe to use a type
+'char**' value for a type 'const char*const*' variable, but not for a
+type 'const char**' variable since that might cause modification of a
+quantity supposed to be constant.
+
+ Getting all 'const' qualifiers right can get quite involved but can
+almost always be done. There are only a couple notable exceptions: the
+X11 headers are full of declarations that ought to use 'const' but do
+not, and the same is true to some extent for 'libfreetype' (but,
+thankfully, not for 'zlib' nowadays).
+
+What must be avoided with 'const'
+.................................
+
+The GCC compiler warnings "assignment discards qualifiers..." and
+analogous warnings for "initialization", "passing arg", or "return" must
+be strenously avoided in our own code. The only exception is when they
+are caused by X11 headers or macros or other third party code.
+
+What should be avoided with 'const'
+...................................
+
+A type cast, e.g., from 'const char*' to 'char*' does not solve any
+problems; depending on warning options, it may only hide them.
+Therefore such casts should be avoided whenever possible and otherwise
+must be carefully analyzed to make sure that they cannot cause the
+modification of quantities supposed to be constant.
+
+
+File: tlbuild.info, Node: Index, Prev: Coding conventions, Up: Top
+
+Index
+*****
+
+
+* Menu:
+
+* --bindir configure option: '--prefix' '--bindir' ....
+ (line 6)
+* --build=HOST: Cross configuring. (line 6)
+* --disable-all-packages configure option: Building. (line 46)
+* --disable-all-pkgs: '--disable-all-pkgs'. (line 6)
+* --disable-bibtex8: Configure options for 'texk/bibtex-x'.
+ (line 9)
+* --disable-dump-share: Configure options for 'texk/web2c'.
+ (line 27)
+* --disable-dvipdfmx: Configure options for 'texk/dvipdfm-x'.
+ (line 10)
+* --disable-etex-synctex: Configure options for 'texk/web2c'.
+ (line 64)
+* --disable-ipc: Configure options for 'texk/web2c'.
+ (line 31)
+* --disable-largefile: '--disable-largefile'.
+ (line 6)
+* --disable-linked-scripts: Configure options for 'texk/texlive'.
+ (line 6)
+* --disable-mf-nowin: Configure options for 'texk/web2c'.
+ (line 34)
+* --disable-missing: '--disable-missing'. (line 6)
+* --disable-native-texlive-build: '--disable-native-texlive-build'.
+ (line 6)
+* --disable-omfonts: Configure options for 'texk/web2c'.
+ (line 37)
+* --disable-PROG: '--enable-PROG' '--disable-PROG'.
+ (line 6)
+* --disable-tex: Configure options for 'texk/web2c'.
+ (line 42)
+* --disable-web-progs: Configure options for 'texk/web2c'.
+ (line 46)
+* --disable-xdvipdfmx: Configure options for 'texk/dvipdfm-x'.
+ (line 13)
+* --enable-*win for Metafont window support: Configure options for 'texk/web2c'.
+ (line 60)
+* --enable-auto-core: Configure options for 'texk/web2c'.
+ (line 50)
+* --enable-compiler-warnings=LEVEL: '--enable-compiler-warnings='LEVEL.
+ (line 6)
+* --enable-cxx-runtime-hack configure option: Macros for compilers.
+ (line 29)
+* --enable-etex: Configure options for 'texk/web2c'.
+ (line 42)
+* --enable-libtool-hack: Configure options for 'texk/web2c'.
+ (line 55)
+* --enable-maintainer-mode: '--enable-maintainer-mode'.
+ (line 6)
+* --enable-maintainer-mode configure option: Build system tools.
+ (line 28)
+* --enable-mktextfm-default: 'kpathsea' library. (line 20)
+* --enable-multiplatform: '--enable-multiplatform'.
+ (line 6)
+* --enable-PROG: '--enable-PROG' '--disable-PROG'.
+ (line 6)
+* --enable-shared: '--enable-shared'. (line 6)
+* --enable-silent-rules: '--enable-silent-rules'.
+ (line 6)
+* --enable-tex-synctex: Configure options for 'texk/web2c'.
+ (line 64)
+* --enable-texlive-build: '--disable-native-texlive-build'.
+ (line 16)
+* --enable-xindy-docs: Configure options for 'utils/xindy'.
+ (line 10)
+* --enable-xindy-rules: Configure options for 'utils/xindy'.
+ (line 6)
+* --host=HOST: Cross configuring. (line 6)
+* --libdir: '--enable-multiplatform'.
+ (line 6)
+* --no-clean Build option: Building. (line 40)
+* --prefix configure option: '--prefix' '--bindir' ....
+ (line 6)
+* --with-banner-add=STR: Configure options for 'texk/web2c'.
+ (line 6)
+* --with-clisp-runtime=FILENAME: Configure options for 'utils/xindy'.
+ (line 14)
+* --with-editor=CMD: Configure options for 'texk/web2c'.
+ (line 11)
+* --with-fontconfig-includes=DIR: Configure options for 'texk/web2c'.
+ (line 16)
+* --with-fontconfig-libdir=DIR: Configure options for 'texk/web2c'.
+ (line 16)
+* --with-gs=FILENAME: Configure options for 'texk/xdvik'.
+ (line 6)
+* --with-LIB-includes=DIR, -libdir: Library-specific configure options.
+ (line 16)
+* --with-libgs-includes, -libdir: Configure options for 'texk/dvisvgm'.
+ (line 17)
+* --with-recode: Configure options for 'utils/xindy'.
+ (line 23)
+* --with-system-kpathsea: 'kpathsea' library. (line 14)
+* --with-system-LIB: Adding a new generic library module.
+ (line 34)
+* --with-system-LIB <1>: Library-specific configure options.
+ (line 9)
+* --with-system-libgs: Configure options for 'texk/dvisvgm'.
+ (line 6)
+* --with-system-poppler: Configure options for system 'poppler'.
+ (line 10)
+* --with-system-xpdf: Configure options for system 'poppler'.
+ (line 14)
+* --with-xdvi-x-toolkit: 'xdvik' package. (line 21)
+* --with-xdvi-x-toolkit=KIT: Configure options for 'texk/xdvik'.
+ (line 9)
+* --without-libgs: Configure options for 'texk/dvisvgm'.
+ (line 12)
+* --without-ln-s: '--without-ln-s'. (line 6)
+* --without-x: '--without-x'. (line 6)
+* adapting TeX Live for distros: Distro builds. (line 54)
+* adding a new generic library: Adding a new generic library module.
+ (line 6)
+* adding a new program: Adding a new program module.
+ (line 6)
+* adding a new TeX-specific library: Adding a new TeX-specific library module.
+ (line 6)
+* adding to TeX Live: Extending TeX Live. (line 6)
+* 'am/' top-level directory: Top-level directories.
+ (line 14)
+* ANSI C: Declarations and definitions.
+ (line 6)
+* asymptote: 'asymptote'. (line 6)
+* Autoconf: Overview of build system.
+ (line 6)
+* autoconf macros: Autoconf macros. (line 6)
+* Automake: Overview of build system.
+ (line 6)
+* biber: Variables for configure.
+ (line 46)
+* bibtex-x: Configure options for 'texk/bibtex-x'.
+ (line 6)
+* bibtex8: Configure options for 'texk/bibtex-x'.
+ (line 6)
+* bibtexu: Configure options for 'texk/bibtex-x'.
+ (line 6)
+* BSD distro: Distro builds. (line 6)
+* build directory, required: Building. (line 17)
+* build on demand: Building. (line 46)
+* Build script: Building. (line 6)
+* build system, design of: Overview of build system.
+ (line 6)
+* BUILDCC, BUILDCFLAGS, ...: Cross configuring. (line 42)
+* building: Building. (line 6)
+* C, ANSI, required: Declarations and definitions.
+ (line 6)
+* C99, avoided: Declarations and definitions.
+ (line 6)
+* cache for 'configure': Building. (line 58)
+* callexe.c: Macros for Windows. (line 32)
+* CC: Variables for configure.
+ (line 10)
+* CC_BUILD: Cross problems. (line 13)
+* chktex: Declarations and definitions.
+ (line 18)
+* clisp: Variables for configure.
+ (line 18)
+* CLISP: Variables for configure.
+ (line 17)
+* CLISP <1>: Configure options for 'utils/xindy'.
+ (line 14)
+* 'clisp', required by 'xindy': Prerequisites. (line 30)
+* coding conventions: Coding conventions. (line 6)
+* compilers, C and C++: Prerequisites. (line 6)
+* config.guess, config.sub: Top-level directories.
+ (line 30)
+* config.guess, config.sub <1>: Variables for configure.
+ (line 57)
+* 'configure' options: Configure options. (line 6)
+* 'configure' options, for 'bibtex-x': Configure options for 'texk/bibtex-x'.
+ (line 6)
+* 'configure' options, for 'dvipdfm-x': Configure options for 'texk/dvipdfm-x'.
+ (line 6)
+* 'configure' options, for 'dvisvgm': Configure options for 'texk/dvisvgm'.
+ (line 6)
+* 'configure' options, for 'kpathsea': Configure options for 'kpathsea'.
+ (line 6)
+* 'configure' options, for system 'poppler': Configure options for system 'poppler'.
+ (line 6)
+* 'configure' options, for 'texk/texlive': Configure options for 'texk/texlive'.
+ (line 6)
+* 'configure' options, for 'web2c': Configure options for 'texk/web2c'.
+ (line 6)
+* 'configure' options, for 'xdvik': Configure options for 'texk/xdvik'.
+ (line 6)
+* 'configure' options, for 'xindy': Configure options for 'utils/xindy'.
+ (line 6)
+* 'configure' options, global: Global configure options.
+ (line 6)
+* 'configure' options, library-specific: Library-specific configure options.
+ (line 6)
+* 'configure' options, program-specific: Program-specific configure options.
+ (line 6)
+* 'configure' variables: Variables for configure.
+ (line 6)
+* configuring, for cross compilation: Cross configuring. (line 6)
+* 'const': Const. (line 6)
+* conventions, coding: Coding conventions. (line 6)
+* CPPFLAGS: Variables for configure.
+ (line 12)
+* cross compilation: Cross compilation. (line 6)
+* cross compilation configuring: Cross configuring. (line 6)
+* cross compilation problems: Cross problems. (line 6)
+* cross compilation, with host binary: 'xdvik' package. (line 14)
+* ctangle: Cross problems. (line 26)
+* CXX: Variables for configure.
+ (line 11)
+* declarations and definitions, in source code: Declarations and definitions.
+ (line 6)
+* DESTDIR: '--prefix' '--bindir' ....
+ (line 9)
+* directories, for installation: Installation directories.
+ (line 6)
+* directories, top-level: Top-level directories.
+ (line 6)
+* discards qualifiers warning: Const. (line 30)
+* distribution tarball, making: Building. (line 65)
+* distro, building for: Distro builds. (line 6)
+* dvipdfmx: Configure options for 'texk/dvipdfm-x'.
+ (line 6)
+* dvisvgm: Configure options for 'texk/dvisvgm'.
+ (line 6)
+* environment variables, for 'configure': Configure options. (line 16)
+* exec_prefix: '--enable-multiplatform'.
+ (line 6)
+* extending TeX Live: Extending TeX Live. (line 6)
+* 'extern' functions: Declarations and definitions.
+ (line 43)
+* 'extra/' top-level directory: Top-level directories.
+ (line 39)
+* 'ffcall', required by 'xindy': Prerequisites. (line 30)
+* flags, macros for library and header: Macros for library and header flags.
+ (line 6)
+* 'fontconfig' library, required by 'xetex': Prerequisites. (line 27)
+* FreeType: Prerequisites. (line 11)
+* 'freetype' cross compiling: Cross problems. (line 13)
+* freetype library: 'freetype' library. (line 6)
+* freetype-config: 'freetype' library. (line 6)
+* freetype-config <1>: Variables for configure.
+ (line 24)
+* FT2_CONFIG: Variables for configure.
+ (line 21)
+* general setup macros: General setup macros. (line 6)
+* generic library module, adding: Adding a new generic library module.
+ (line 6)
+* global 'configure' options: Global configure options.
+ (line 6)
+* 'gmake', required: Prerequisites. (line 11)
+* GNU 'make', required: Prerequisites. (line 11)
+* GNU tools, needed for building: Build system tools. (line 6)
+* GNU/Linux distro: Distro builds. (line 6)
+* Gnulib, used for common files: Top-level directories.
+ (line 30)
+* iconv: Configure options for 'utils/xindy'.
+ (line 23)
+* ICU cross compiling: Cross problems. (line 20)
+* ICU libraries: Variables for configure.
+ (line 24)
+* icu-config: Variables for configure.
+ (line 24)
+* ICU_CONFIG: Variables for configure.
+ (line 22)
+* infrastructure, tools needed for: Build system tools. (line 6)
+* install-tl, TeX Live installer: Installing. (line 8)
+* installation directories: Installation directories.
+ (line 6)
+* installing: Installing. (line 6)
+* interprocess communication: Configure options for 'texk/web2c'.
+ (line 31)
+* introduction: Introduction. (line 6)
+* iteration through sources, by 'configure' and 'make': Building.
+ (line 21)
+* kpathsea library: 'kpathsea' library. (line 6)
+* kpathsea.ac: 'kpathsea' library. (line 20)
+* kpse-libpng-flags.m4: 'png' library. (line 43)
+* kpse-pkgs.m4: Overview of build system.
+ (line 30)
+* kpse-zlib-flags.m4: 'zlib' library. (line 6)
+* kpsewhich: Variables for configure.
+ (line 30)
+* KPSEWHICH: Variables for configure.
+ (line 29)
+* KPSE_ADD_FLAGS: Macros for library and header flags.
+ (line 18)
+* KPSE_ALL_SYSTEM_FLAGS: Adding a new generic library module.
+ (line 34)
+* KPSE_BASIC: General setup macros. (line 8)
+* KPSE_CHECK_LATEX: Macros for programs. (line 8)
+* KPSE_CHECK_PDFLATEX: Macros for programs. (line 15)
+* KPSE_CHECK_PERL: Macros for programs. (line 18)
+* KPSE_CHECK_WIN32: Macros for Windows. (line 9)
+* KPSE_COMMON: General setup macros. (line 16)
+* KPSE_COMPILER_VISIBILITY: Macros for compilers. (line 18)
+* KPSE_COMPILER_WARNINGS: Macros for compilers. (line 8)
+* KPSE_COND_MINGW32: Macros for Windows. (line 19)
+* KPSE_COND_WIN32: Macros for Windows. (line 15)
+* KPSE_COND_WIN32_WRAP: Macros for Windows. (line 24)
+* kpse_cv_cxx_hack: Macros for compilers. (line 34)
+* kpse_cv_have_win32: Macros for Windows. (line 10)
+* kpse_cv_visibility_c[xx]flags: Macros for compilers. (line 25)
+* kpse_cv_warning_cflags: Macros for compilers. (line 15)
+* KPSE_CXX_HACK: Macros for compilers. (line 28)
+* KPSE_ENABLE_PROG: Adding a new program module.
+ (line 14)
+* KPSE_LARGEFILE: Macros for libraries. (line 8)
+* KPSE_LIBPNG_FLAGS: Macros for library and header flags.
+ (line 10)
+* KPSE_LIBPNG_FLAGS <1>: 'png' library. (line 43)
+* kpse_libs_pkgs: Adding a new generic library module.
+ (line 6)
+* KPSE_LIB_FLAGS: Macros for library and header flags.
+ (line 6)
+* KPSE_LIB_FLAGS <1>: Adding a new generic library module.
+ (line 26)
+* KPSE_LIB_SYSTEM_FLAGS: Adding a new generic library module.
+ (line 34)
+* KPSE_PROG_LEX: Macros for programs. (line 21)
+* KPSE_RESTORE_FLAGS: Macros for library and header flags.
+ (line 22)
+* kpse_texk_pkgs: Adding a new program module.
+ (line 6)
+* kpse_texlibs_pkgs: Adding a new TeX-specific library module.
+ (line 11)
+* KPSE_TRY_LIB: 'png' library. (line 18)
+* KPSE_TRY_LIB <1>: Adding a new generic library module.
+ (line 20)
+* KPSE_TRY_LIBXX: 'png' library. (line 31)
+* KPSE_TRY_LIBXX <1>: Adding a new generic library module.
+ (line 20)
+* kpse_utils_pkgs: Adding a new program module.
+ (line 10)
+* KPSE_WIN32_CALL: Macros for Windows. (line 31)
+* KPSE_WITH_LIB: Adding a new generic library module.
+ (line 11)
+* KPSE_WITH_TEXLIB: Adding a new TeX-specific library module.
+ (line 14)
+* large file support: '--disable-largefile'.
+ (line 6)
+* LATEX: Variables for configure.
+ (line 40)
+* layout of sources: Layout and infrastructure.
+ (line 6)
+* LFS (large file support): '--disable-largefile'.
+ (line 6)
+* 'libffcall', required by 'xindy': Prerequisites. (line 30)
+* libfreetype: Variables for configure.
+ (line 24)
+* 'libfreetype', and 'const': Const. (line 21)
+* libpng library: 'png' library. (line 6)
+* library module, generic, adding: Adding a new generic library module.
+ (line 6)
+* library module, TeX-specific, adding: Adding a new TeX-specific library module.
+ (line 6)
+* library modules: Library modules. (line 6)
+* library-specific 'configure' options: Library-specific configure options.
+ (line 6)
+* libstc++, statically linking: Macros for compilers. (line 29)
+* Libtool: Overview of build system.
+ (line 6)
+* libtool, hack for avoiding excessive linking: Configure options for 'texk/web2c'.
+ (line 55)
+* libXt: Configure options for 'texk/web2c'.
+ (line 22)
+* linked scripts: Linked scripts. (line 6)
+* linking C++ libraries statically: Macros for compilers. (line 29)
+* lisp.run, lisp.exe: Configure options for 'utils/xindy'.
+ (line 14)
+* LittleEndian architectures: Configure options for 'texk/web2c'.
+ (line 27)
+* 'm4/' top-level directory: Top-level directories.
+ (line 14)
+* macros, for compilers: Macros for compilers. (line 6)
+* macros, for libraries: Macros for libraries. (line 6)
+* macros, for library and header flags: Macros for library and header flags.
+ (line 6)
+* macros, for programs: Macros for programs. (line 6)
+* macros, for Windows: Macros for Windows. (line 6)
+* macros, general setup: General setup macros. (line 6)
+* MAKE: Variables for configure.
+ (line 33)
+* make -t: Build system tools. (line 39)
+* mf-nowin: Configure options for 'texk/web2c'.
+ (line 34)
+* 'mingw32': Cross configuring. (line 27)
+* MINGW32, Automake conditional: Macros for Windows. (line 20)
+* mktex.ac: 'kpathsea' library. (line 20)
+* mktextfm: 'kpathsea' library. (line 20)
+* modules, for libraries: Library modules. (line 6)
+* modules, for programs: Program modules. (line 6)
+* motif: Configure options for 'texk/xdvik'.
+ (line 9)
+* native cross compilation: Cross compilation. (line 10)
+* OpenGL, required for Asymptote: 'asymptote'. (line 6)
+* operating system distribution, building for: Distro builds. (line 6)
+* opl2ofm, et al.: Configure options for 'texk/web2c'.
+ (line 37)
+* otangle: Cross problems. (line 26)
+* overall build process: Building. (line 6)
+* Par::Packer: Variables for configure.
+ (line 46)
+* parallel build: Building. (line 58)
+* paths, for installation: Installation directories.
+ (line 6)
+* PDF files, size of: '--disable-largefile'.
+ (line 10)
+* PDFLATEX: Variables for configure.
+ (line 41)
+* PERL: Variables for configure.
+ (line 39)
+* 'perl', required by 'biber', etc.: Prerequisites. (line 19)
+* PKG_CONFIG: Variables for configure.
+ (line 23)
+* plain.tex, not in source tree: Installing. (line 8)
+* platform, current: Variables for configure.
+ (line 57)
+* png library: 'png' library. (line 6)
+* poppler: Configure options for system 'poppler'.
+ (line 6)
+* PostScript files, size of: '--disable-largefile'.
+ (line 10)
+* Preining, Norbert: Distro builds. (line 54)
+* preloaded binaries: Configure options for 'texk/web2c'.
+ (line 50)
+* prerequisites for building: Prerequisites. (line 6)
+* program module, adding: Adding a new program module.
+ (line 6)
+* program modules: Program modules. (line 6)
+* program-specific 'configure' options: Program-specific configure options.
+ (line 6)
+* reautoconf: Build system tools. (line 28)
+* recode: Configure options for 'utils/xindy'.
+ (line 23)
+* requirements for building: Prerequisites. (line 6)
+* runscript.exe: Macros for Windows. (line 25)
+* scripts, linked and not maintained: Linked scripts. (line 6)
+* SED: Variables for configure.
+ (line 34)
+* setup macros, general: General setup macros. (line 6)
+* shared libraries, using vs. avoiding: Distro builds. (line 11)
+* size of PDF and PS files: '--disable-largefile'.
+ (line 10)
+* source code declarations: Declarations and definitions.
+ (line 6)
+* source directory building, not supported: Building. (line 17)
+* source tree: Layout and infrastructure.
+ (line 6)
+* squeeze: Cross problems. (line 13)
+* squeeze/configure.ac: 'xdvik' package. (line 14)
+* 'static' functions: Declarations and definitions.
+ (line 37)
+* static linking for C++: Macros for compilers. (line 29)
+* stpcpy: Declarations and definitions.
+ (line 18)
+* Subversion repository: Build system tools. (line 34)
+* support files, separate from build: Installing. (line 8)
+* symlinks, used for scripts: Linked scripts. (line 6)
+* synctex: Configure options for 'texk/web2c'.
+ (line 64)
+* system distribution, building for: Distro builds. (line 6)
+* t1utils package: 't1utils' package. (line 6)
+* tangle: Cross problems. (line 26)
+* tests, running: Overview of build system.
+ (line 6)
+* TeX-specific library module, adding: Adding a new TeX-specific library module.
+ (line 6)
+* texlive.tlpdb, TeX Live database: Installing. (line 8)
+* tie: Cross problems. (line 26)
+* timestamps, in repository: Build system tools. (line 34)
+* TLConfig.pm: Variables for configure.
+ (line 57)
+* TLUtils.pm: Variables for configure.
+ (line 57)
+* TL_PLATFORM: Variables for configure.
+ (line 45)
+* tools, for building: Build system tools. (line 6)
+* top-level directories: Top-level directories.
+ (line 6)
+* touching files to avoid rerunning: Build system tools. (line 39)
+* type cast, avoiding: Const. (line 38)
+* use-commit-times, Subversion: Build system tools. (line 34)
+* variable declarations, in source code: Declarations and definitions.
+ (line 54)
+* variables for 'configure': Variables for configure.
+ (line 6)
+* warning, discards qualifiers: Const. (line 30)
+* WARNING_C[XX]FLAGS: Macros for compilers. (line 9)
+* web2c program: Cross problems. (line 13)
+* web2c.ac: Configure options for 'texk/web2c'.
+ (line 42)
+* WIN32, Automake conditional: Macros for Windows. (line 16)
+* WIN32_WRAP, Automake conditional: Macros for Windows. (line 25)
+* Windows, invoking scripts on: Linked scripts. (line 6)
+* Windows, macros for: Macros for Windows. (line 6)
+* withenable.ac, for new modules: Adding a new program module.
+ (line 14)
+* wrapper binary for scripts on Windows: Linked scripts. (line 6)
+* X toolkit: Configure options for 'texk/web2c'.
+ (line 22)
+* X11 headers, and 'const': Const. (line 21)
+* X11, required by X clients: Prerequisites. (line 23)
+* xasy: 'asymptote'. (line 6)
+* xaw: Configure options for 'texk/xdvik'.
+ (line 9)
+* xdvik: 'xdvik' package. (line 6)
+* xdvik <1>: Configure options for 'texk/xdvik'.
+ (line 6)
+* xdvipdfmx: Configure options for 'texk/dvipdfm-x'.
+ (line 6)
+* xindy: 'xindy' package. (line 6)
+* xindy <1>: Configure options for 'utils/xindy'.
+ (line 6)
+* 'xindy' cross compiling impossible: Cross problems. (line 33)
+* Xlib: Configure options for 'texk/web2c'.
+ (line 22)
+* xpdf as library: Configure options for system 'poppler'.
+ (line 6)
+* zlib library: 'zlib' library. (line 6)
+
+
+
+Tag Table:
+Node: Top987
+Node: Introduction1780
+Node: Overview of build system2815
+Node: Prerequisites4879
+Node: Building6981
+Node: Installing10631
+Node: Installation directories11659
+Node: Linked scripts13479
+Node: Distro builds14627
+Node: Layout and infrastructure17007
+Node: Build system tools17796
+Node: Top-level directories19808
+Node: Autoconf macros21875
+Node: General setup macros22576
+Node: Macros for programs23443
+Node: Macros for compilers24255
+Node: Macros for libraries25689
+Node: Macros for library and header flags26115
+Node: Macros for Windows27984
+Node: Library modules29561
+Node: 'png' library30058
+Node: 'zlib' library32351
+Node: 'freetype' library32872
+Node: 'kpathsea' library33406
+Node: Program modules34830
+Node: 't1utils' package35266
+Node: 'xindy' package35833
+Node: 'xdvik' package37012
+Node: 'asymptote'38091
+Node: Extending TeX Live38546
+Node: Adding a new program module38914
+Node: Adding a new generic library module40433
+Node: Adding a new TeX-specific library module42646
+Node: Configure options43333
+Node: Global configure options44724
+Node: '--disable-native-texlive-build'45292
+Node: '--prefix' '--bindir' ...46288
+Node: '--disable-largefile'46836
+Node: '--disable-missing'47603
+Node: '--enable-compiler-warnings='LEVEL48010
+Node: '--enable-cxx-runtime-hack'48755
+Node: '--enable-maintainer-mode'49188
+Node: '--enable-multiplatform'49723
+Node: '--enable-shared'50284
+Node: '--enable-silent-rules'50661
+Node: '--without-ln-s'51123
+Node: '--without-x'51480
+Node: Program-specific configure options51672
+Node: '--enable-PROG' '--disable-PROG'52335
+Node: '--disable-all-pkgs'52618
+Node: Configure options for 'texk/web2c'53071
+Node: Configure options for 'texk/bibtex-x'55738
+Node: Configure options for 'texk/dvipdfm-x'56314
+Node: Configure options for 'texk/dvisvgm'56924
+Node: Configure options for 'texk/texlive'57814
+Node: Configure options for 'texk/xdvik'58241
+Node: Configure options for 'utils/xindy'58730
+Node: Library-specific configure options59792
+Node: Configure options for 'kpathsea'60806
+Node: Configure options for system 'poppler'61519
+Node: Variables for configure62286
+Node: Cross compilation64792
+Node: Cross configuring66057
+Node: Cross problems67730
+Node: Coding conventions69371
+Node: Declarations and definitions70035
+Node: Const72218
+Node: Index74081
+
+End Tag Table