summaryrefslogtreecommitdiff
path: root/Build/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-04-21 22:45:37 +0000
committerKarl Berry <karl@freefriends.org>2014-04-21 22:45:37 +0000
commitea58320b10f549a61236be100fc97925aea6b489 (patch)
tree595b52817d7543a14e0e38883508a27b7534120c /Build/source
parentd67cd9824523dc725b1cdf9229c38dfa69812e65 (diff)
rename and update README* files, now generated from tlbuild.texi
git-svn-id: svn://tug.org/texlive/trunk@33605 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source')
-rw-r--r--Build/source/README53
-rw-r--r--Build/source/README.0overview52
-rw-r--r--Build/source/README.1prerequisites56
-rw-r--r--Build/source/README.2building73
-rw-r--r--Build/source/README.3installing141
-rw-r--r--Build/source/README.4layout531
-rw-r--r--Build/source/README.5configure443
-rw-r--r--Build/source/README.6cross105
-rw-r--r--Build/source/README.7coding111
-rw-r--r--Build/source/README.coding69
-rw-r--r--Build/source/README.config320
-rw-r--r--Build/source/README.cross37
-rw-r--r--Build/source/README.distro146
-rw-r--r--Build/source/README.hacking187
-rw-r--r--Build/source/README.layout242
15 files changed, 1518 insertions, 1048 deletions
diff --git a/Build/source/README b/Build/source/README
index c70fbb909ff..134aa512d3a 100644
--- a/Build/source/README
+++ b/Build/source/README
@@ -7,56 +7,15 @@ http://tug.org/texlive/build.html. In brief:
To configure and make the source tree, run ./Build.
To build (mostly) without optimization, run ./Build --debug.
To make without configuring, run TL_CONFIGURE=true ./Build.
+Email tlbuild@tug.org if problems.
(Nearly everything the Build script does can be overridden via
-environment variables; just take a look to see all the names.)
+environment variables; just take a look to see the names.)
-Prerequisites:
-- C and C++ compilers.
-
-- GNU make. If your GNU make is invoked by some name other than `make',
- try: env TL_MAKE=/your/gnu/make ./Build
-
-- GNU clisp and GNU libffcall, for xindy. See more
- details in utils/README. (Alternative: Build --disable-xindy.)
- Also perl, latex, and pdflatex to build the rules and/or documentation.
-
-- Perl to autodetect the TeX Live platform name for biber.
-
-- X11 headers and libraries (often a ``development'' package, not
- installed by default), for pdfopen and xdvi.
- (Alternative: Build --without-x.)
-
-- libfontconfig (again both headers and library), for XeTeX,
- except on MacOSX. (Alternative: Build --disable-xetex.)
- While on MacOSX, an Objective C++ compiler is needed for XeTeX.
-
-- If you modify any .y or .l source files, then Bison and Flex (or maybe
- equivalents) are needed. The distributed .c and .h files are generated
- with bison-3.0 and flex-2.5.37.
-
-The binaries will be left in ./inst/bin/<stdplatform>.
-For TeX Live, ignore the other files and directories that end up in ./inst.
-
-The new binaries are not directly usable from that location. Instead,
-copy them to Master/bin/<tlplatformname>/.
-
-That should be it for normal builds. Email tex-live@tug.org if problems.
-
-To make a usable TeX installation, you have to have (thousands of)
-support files as well as the binaries that are built here. The support
-files are maintained completely independently. The best basis for
-dealing with them is the TeX Live (plain text) database,
-Master/tlpkg/texlive.tlpdb, and/or our installer. More information is
-under Master/tlpkg. See also http://tug.org/texlive/distro.html.
-
-If your C++ needs to find the standard library in, say, /usr/local/lib,
-(i.e., configure fails saying the compiler doesn't work), try:
-env LD_OPTIONS=-R/usr/local/lib ./Build
-
-Many more details about the TL build system, such as adding new
-programs or libraries, recompiling after fixing problems, etc., are in
-doc/texlive.pdf and in the other README.* files here.
+Many more details about the TL build system, such as configuring to work
+on a single program, adding new programs or libraries, recompiling after
+fixing problems, etc., are in the doc/tlbuild* document and the sibling
+README* files here (which are generated from that document).
Build information for some of the platforms.
diff --git a/Build/source/README.0overview b/Build/source/README.0overview
new file mode 100644
index 00000000000..efdd1e87a12
--- /dev/null
+++ b/Build/source/README.0overview
@@ -0,0 +1,52 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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.)
+
diff --git a/Build/source/README.1prerequisites b/Build/source/README.1prerequisites
new file mode 100644
index 00000000000..d82f64f7700
--- /dev/null
+++ b/Build/source/README.1prerequisites
@@ -0,0 +1,56 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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.
+
diff --git a/Build/source/README.2building b/Build/source/README.2building
new file mode 100644
index 00000000000..6111516eead
--- /dev/null
+++ b/Build/source/README.2building
@@ -0,0 +1,73 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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.)
+
diff --git a/Build/source/README.3installing b/Build/source/README.3installing
new file mode 100644
index 00000000000..c65ebde5d9d
--- /dev/null
+++ b/Build/source/README.3installing
@@ -0,0 +1,141 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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>.
+
+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.
+
+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.
+
+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.)
+
diff --git a/Build/source/README.4layout b/Build/source/README.4layout
new file mode 100644
index 00000000000..acf1bc24dbc
--- /dev/null
+++ b/Build/source/README.4layout
@@ -0,0 +1,531 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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.
+
+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.
+
+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.
+
+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::.
+
+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.
+
+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'.
+
+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.
+
+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.
+
+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'
+
+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.
+
+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.
+
+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.
+
+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.
+
+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'.
+
+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.
+
+6.5 Program modules
+===================
+
+As with libraries (*note Library modules::), here we discuss the details
+for a few of the programs in TL.
+
+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'.
+
+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'.
+
+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.
+
+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.
+
+6.6 Extending TeX Live
+======================
+
+This section outlines the basic process for adding new packages to the
+TL build system.
+
+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'.
+
+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])'
+
+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'.
+
diff --git a/Build/source/README.5configure b/Build/source/README.5configure
new file mode 100644
index 00000000000..f94b0ae674d
--- /dev/null
+++ b/Build/source/README.5configure
@@ -0,0 +1,443 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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.
+
+7.1 Global configure options
+============================
+
+Here are the 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.
+
+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.).
+
+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.
+
+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.
+
+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.
+
+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::.
+
+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.
+
+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.
+
+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).
+
+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.
+
+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.
+
+7.1.12 '--without-x'
+--------------------
+
+Disable all programs using the X Window System.
+
+7.2 Program-specific configure options
+======================================
+
+Here are (some of) the 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'.
+
+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.
+
+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'.
+
+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).
+
+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).
+
+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.
+
+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'.
+
+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'.
+
+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.
+
+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.
+
+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.
+
+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'::.
+
+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.
+
diff --git a/Build/source/README.6cross b/Build/source/README.6cross
new file mode 100644
index 00000000000..8527564f7f2
--- /dev/null
+++ b/Build/source/README.6cross
@@ -0,0 +1,105 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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''
+
+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=...
+
+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.
+
diff --git a/Build/source/README.7coding b/Build/source/README.7coding
new file mode 100644
index 00000000000..e8f725ca456
--- /dev/null
+++ b/Build/source/README.7coding
@@ -0,0 +1,111 @@
+(This file was generated by makeinfo and splitinfo.gawk.)
+(Released under the old-style GNU documentation license;
+ see sources or other output files for full text.)
+
+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.
+
+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.
+
+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.
+
diff --git a/Build/source/README.coding b/Build/source/README.coding
deleted file mode 100644
index 3a1f19cf594..00000000000
--- a/Build/source/README.coding
+++ /dev/null
@@ -1,69 +0,0 @@
-Copyright (C) 2009-2011 Peter Breitenlohner <tex-live@tug.org>
-You may freely use, modify and/or distribute this file.
-
- TeX Live (TL) coding rules
- ==========================
-
-Ideally, building all of TL 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 and variables) and the use of `const'. These rules should be
-applied to all parts of the TL tree, except in some of those maintained
-independently.
-
-1. Declarations
-===============
-
-1.1. ANSI C function prototypes and definitions
------------------------------------------------
-The TL 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).
-
-1.2. Static
------------
-Functions used in only one file should be declared `static'; no prototype is
-then required except as forward declaration.
-
-1.3. Extern
------------
-Non-static functions, e.g., used in several files, require (extern)
-prototypes to be provided by a header files. That header must be 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 of
-functions. No more `extern's sprinkled throughout the C code (with or
-without comment where that function is defined).
-
-1.4. Variables
---------------
-The declaration of global variables should follow analogous rules, they
-should either be static or declared extern in a header and instantiated in
-exactly one file.
-
-2. Const
-========
-
-2.1. 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 frequently the actual arguments are string literals.
-However, a `char **' value is not assignment compatible with a `const
-char **' variable. Getting all `const's right often is quite involved but
-usually can be done. There are, however, a few 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 zlib and freetype2.
-
-2.2. What must be avoided
--------------------------
-The compiler warnings `assignment/initialization/passing arg/return discards
-qualifiers...' must be avoided under all circumstances, except when caused
-by X11 headers/macros or third party code.
-
-2.3. What should be avoided
----------------------------
-A type cast, e.g., from `const char *' to `char *' doesn't solve any
-problems; depending on warning options, it may only hide them. Therefore
-such casts should be avoided whenever possible but some such casts may be
-unavoidable.
diff --git a/Build/source/README.config b/Build/source/README.config
deleted file mode 100644
index c18622a4a6d..00000000000
--- a/Build/source/README.config
+++ /dev/null
@@ -1,320 +0,0 @@
-Copyright (C) 2009-2013 Peter Breitenlohner <tex-live@tug.org>
-You may freely use, modify and/or distribute this file.
-
- Configure options for the TeX Live (TL) build system
- ====================================================
-
-The TL build system contains a collection of program packages, i.e.,
-subdirectories texk/PROG/ (where `PROG' is web2c, afm2pl, bibtex8, etc.) and
-utils/UTIL/ (where `UTIL' is biber, xpdfopen, etc.) as well as library
-packages, i.e., subdirectories texk/kpathsea/, texk/ptexenc/, and libs/LIB/
-(where `LIB' is zlib, libpng, t1lib, etc.) for most of the libraries
-required by the program packages. Correspondingly there are plenty of
-configure options, most of which are described below.
-
-See 'configure --help' (at the top-level) for an exhaustive list of all
-global options and a few important package specific ones or run, e.g.,
-'texk/lcdf-typetools/configure --help' to also see lcdf-typetools
-specific options not shown at the top level.
-
-The ./Build script used to make the binaries shipped with TeX Live
-invokes the top-level configure with a few additional options. Any
-defaults discussed below are those for the base configure script;
-invoking configure via ./Build may yield different results.
-
-Defaults for most options are set at the top-level and then propagated
-explicitly to all subdirectories.
-
-Options specified on the command line will never be modified.
-
-
-1. Global configure options
-===========================
-
-1.1. --disable-native-texlive-build
------------------------------------
-If enabled (as default), build for a TeX Live binary distribution as
-shipped by the user groups; this implies '--enable-multiplatform' and
-'--enable-cxx-runtime-hack' unless they are explicitly disabled and
-enforces '--disable-shared'. This also requires GNU make.
-
-If building TL for a GNU/Linux or other distribution, this would be
-disabled and system versions of most libraries would be used (see below).
-This may require GNU make, but will also try without it.
-
-The default installation directories are quite different when this option is
-enabled or disabled.
-
-A related option '--enable-texlive-build' is automatically passed to all
-subdirectories (and can not be disabled). Programs that could also be built
-independently from the TL tree (such as utils/xindy/ or texk/dvipng/) can
-use this option, e.g., to choose TL specific installation directories.
-
-1.2. --enable-multiplatform
----------------------------
-If enabled, install executables and libraries in platform dependent
-subdirectories of EPREFIX/bin and EPREFIX/lib (unless '--bindir=DIR' or
-'--libdir=DIR' is specified), where EPREFIX is the exec-prefix. This
-option automatically propagates the values for bindir and libdir to all
-subdirectories to be configured, and thus need not be used explicitly in
-any program or library package.
-
-1.3. --enable-cxx-runtime-hack
-------------------------------
-If enabled and when using g++, try to statically link with libstdc++,
-somewhat improving portability.
-
-1.4. --enable-libtool-hack
---------------------------
-If enabled prevents libtool from linking explicitly with dependency_libs.
-At present this is enabled by default for all systems.
-
-1.5. --enable-shared
----------------------
-Build shared Kpathsea and Ptexenc libraries (not allowed for a native TeX
-Live build).
-
-1.6. --disable-largefile
-------------------------
-Omit large file support (LFS), needed for files >=2GB on most 32-bit Unix
-systems. The size of DVI and GF files must always be <2GB. With LFS there
-should be no limit on the size of PDF files created by pdfTeX or PS files
-created by dvips. The size of PDF images included by pdfTeX must, however,
-be <4GB when using xpdf and <2GB when using poppler (even on 64-bit systems
-with LFS).
-
-1.7. --without-x
-----------------
-Do not use the X Window System.
-
-1.8. --enable-compiler-warnings=[no|min|yes|max|all]
-----------------------------------------------------
-Enable various degrees of compiler warnings for (Objective) C and C++. The
-default is 'yes' in maintainer-mode and 'min' otherwise. This option
-defines WARNING_[OBJ]C[XX]FLAGS but these flags are not yet used by all
-library and program packages. Using them should help to resolve portability
-problems.
-
-At the moment these warning flags are only defined for the GNU compilers
-but flags for other compilers could be added when needed.
-
-1.9. --disable-missing
-----------------------
-Immediately terminate the build process if a requested program or feature
-must be disabled, e.g., due to missing libraries.
-
-1.10. --enable-silent-rules
----------------------------
-Enable the use of less verbose build rules. When using GNU make or another
-'make' implementation that supports nested variable expansions you can
-always specify 'V=1' on the make command line to get more respectively 'V=0'
-to get less verbosity.
-
-1.11. --without-ln-s
---------------------
-Required to build for a Unix-like system without working 'ln -s'. But note
-that 'make install' will not create anything useful and might even fail.
-
-2. Configure options for program packages
-=========================================
-
-2.1. --disable-PROG and --disable-UTIL
---------------------------------------
-Do not build and install the program(s) of the package `PROG' or `UTIL'.
-
-2.2. --disable-all-pkgs
------------------------
-Do not build any program packages, except those explicitly enabled.
-Without this option, all packages are built except those explicitly
-disabled and except for utils/xindy/ (which is disabled by default due to
-its requirement for clisp et al.).
-
-2.3. Configure options for texk/web2c/
---------------------------------------
-2.3.1. --with-banner-add=STR
-Add STR to the default version string ('TeX Live YEAR' or 'Web2C YEAR')
-appended to banner lines. The Build script for a native TL build doesn't
-use this option, but distro builds should specify this as, e.g.,
-'/SomeDistro'.
-
-2.3.2. --with-editor=CMD
-Specify the command CMD to invoke from the `e' option, replacing the default
-`vi +%d '%s'' for Unix or `texworks --position=%d "%s"' for Windows.
-
-2.3.3. --enable-auto-core
-This option causes TeX & MF to produce a core dump when a particular
-hacky filename is encountered.
-
-2.3.4. --disable-dump-share
-Make the fmt/base dump files architecture dependent (somewhat faster on
-little-endian architectures).
-
-2.3.5. --disable-ipc
-If enabled (by default) allow TeX's '--ipc' option.
-
-2.3.6. --disable-tex, --enable-etex, --disable-aleph, --disable-pdftex,
- --disable-luatex, --disable-xetex, --disable-ptex, --disable-eptex,
- --disable-uptex, --disable-euptex, --disable-mf, --disable-mp
-Do or do not build the various TeX, METAFONT, and MetaPost engines
-(defaults for the TeX engines are defined in texk/web2c/ac/web2c.ac).
-
-2.3.7. --enable-tex-synctex, --disable-etex-synctex,
- --disable-ptex-synctex, --disable-eptex-synctex
- --disable-uptex-synctex, --disable-euptex-synctex
- --disable-pdftex-synctex, --disable-xetex-synctex
-Build the various TeX engines with or without SyncTeX support (ignored for a
-native TeX Live build, defaults are defined in texk/web2c/ac/web2c.ac).
-
-2.3.8. --with-mf-x-toolkit
-Use the X toolkit (libXt) for METAFONT (default is yes).
-
-2.3.9. --enable-*win
-Include various types of other window support for METAFONT.
-
-2.3.10. --disable-mf-nowin
-Do not build a separate non-graphically-capable METAFONT.
-
-2.3.11. --disable-web-progs
-Do not build the WEB programs bibtex ... weave, e.g., if you just
-want to rebuild some engines.
-
-2.3.12. --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.
-
-2.4. Configure options for texk/bibtex-x/
------------------------------------------
-2.4.1. --disable-bibtex8
-Do not build the bibtex8 program.
-
-2.4.2. --disable-bibtexu
-Do not build the bibtexu program.
-
-The former packages bibtex8 and bibtexu have been merged into bibtex-x
-(extended BibTeX). Building bibtexu requires icu libraries.
-
-2.5. Configure options for texk/dvisvgm/
-----------------------------------------
-2.5.1. --with-system-libgs
-Build dvisvgm with installed gs headers and library (not allowed for a
-native TeX Live build). The default is to load the gs library at runtime,
-or otherwise disable support for PostScript specials.
-
-2.5.2. --with-libgs-includes=DIR, --with-libgs-libdir=DIR
-Non standard search locations for libgs.
-
-2.6. Configure options for texk/xdvik/
---------------------------------------
-2.6.1. --with-gs=PATH
-Hardwire the location of Ghostscript (gs).
-
-2.6.2. --with-xdvi-x-toolkit=KIT
-Use toolkit KIT (motif/xaw/xaw3d/neXtaw) for xdvi, default: Motif if
-available, else Xaw.
-
-2.7. Configure options for utils/xindy/
----------------------------------------
-2.7.1. --enable-xindy-rules
-Build and install xindy rules (default: yes, except for a native TeX Live
-build).
-
-2.7.2. --enable-xindy-docs
-Build and install xindy documentation (default: yes, except for a native TeX
-Live build).
-
-2.7.3. --with-clisp-runtime=PATH
-Specifies the full PATH of the CLISP runtime (lisp.run or lisp.exe) to be
-installed. When specified as `default' (the default for a native TeX Live
-build) the path is determined by the CLISP executable; the value `system'
-(not allowed for a native TeX Live build, but the default for a non-native
-one) indicates that xindy will use the installed version of clisp (that must
-be identical to the one used to build xindy).
-
-2.7.4. --with-recode
-Use `recode' instead of `iconv' to build the xindy rules and documentation,
-required for some systems where iconv is missing or broken.
-
-3. Configure options for libraries
-==================================
-
-3.1. --with-system-LIB
-----------------------
-Use an installed (system) version of the library `LIB'; this option exists
-for most libraries (not allowed for a native TeX Live build).
-
-For many libraries there are in addition '--with-LIB-includes=DIR' and
-'--with-LIB-libdir=DIR' to indicate non standard search locations.
-
-The top-level configure script performs a consistency check for all required
-system libraries and bails out early if some of these tests fail.
-
-3.2. Configure options for fontconfig
--------------------------------------
-Building XeTeX and xdvipdfmx on non-Mac systems requires fontconfig headers
-and library.
-
-3.2.1. --with-fontconfig-includes=DIR, --with-fontconfig-libdir=DIR
-If one or both of these options are given, the flags are derived from them.
-Otherwise, the flags are determined via pkg-config (if present).
-
-3.3. Configure options for system freetype2 (libfreetype)
----------------------------------------------------------
-The flags for a system freetype2 library are determined via freetype-config.
-
-3.4. Configure options for xpdf and poppler
--------------------------------------------
-Building LuaTeX and XeTeX requires poppler either from the TL tree or
-installed (system) headers and library; pdfTeX requires either xpdf from the
-TL tree or installed poppler headers and library.
-
-3.4.1. --with-system-poppler
-Use an installed (system) version >=0.12 of poppler for LuaTeX and XeTeX
-(and pkg-config to obtain the required flags).
-
-3.4.2. --with-system-xpdf
-Use an installed (system) version >=0.12 of poppler instead of xpdf for
-pdfTeX (and pkg-config to obtain the required flags).
-
-See information at --disable-largefile for a minor deficiency resulting
-from using poppler instead of TL's xpdf library.
-
-4. Interesting and/or important VAR=value configure arguments
-=============================================================
-Used instead of searching for programs in PATH.
-
-4.1. FT2_CONFIG=/path/to/freetype-config
-----------------------------------------
-For system freetype2 library.
-
-4.2. ICU_CONFIG=/path/to/icu-config
------------------------------------
-For system icu libraries.
-
-4.3. PKG_CONFIG=/path/to/pkg-config
------------------------------------
-For most system libraries.
-
-4.4. CLISP=/path/to/clisp
--------------------------
-For xindy.
-
-4.5. PERL=/path/to/perl, LATEX=/path/to/latex, PDFLATEX=/path/to/pdflatex
--------------------------------------------------------------------------
-To build xindy docs.
-
-4.6. PERL=/path/to/perl or TL_PLATFORM=TeX_Live_platform_name
--------------------------------------------------------------
-Set the TeX Live platform name for biber.
-
-4.7. KPSEWHICH=/path/to/kpsewhich
----------------------------------
-For `make check'.
-
-4.8. MAKE=/path/to/GNU_make, SED=/path/to/GNU_sed
--------------------------------------------------
-For the top-level.
-
-
-Happy building. Please use the tlbuild list for questions or
-discussion: http://lists.tug.org/tlbuild.
diff --git a/Build/source/README.cross b/Build/source/README.cross
deleted file mode 100644
index f39f4f4b8d9..00000000000
--- a/Build/source/README.cross
+++ /dev/null
@@ -1,37 +0,0 @@
-Copyright (C) 2009-2011 Peter Breitenlohner <tex-live@tug.org>
-You may freely use, modify and/or distribute this file.
-
- Cross compiling
- ===============
-
-In order to build the TL libraries and programs for a HOST system, e.g.,
-i386-pc-mingw32, on a (different) BUILD system, e.g, x86_64-linux-gnu,
-specify the configure options
- --host=i386-pc-mingw32 --build=x86_64-linux-gnu
-
-You should have `cross' tools properly installed as, e.g.,
-i386-pc-mingw32-cc in your PATH or specify them as configure arguments,
-e.g., CC=<mingw32-cross-compiler>; arguments such as CFLAGS=... refer to
-this cross compiler. Here a preliminary 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
-
-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=...
-
-Building the Web2C programs requires sufficiently recent installed versions
-of tangle, ctangle, and tie (and possibly otangle).
diff --git a/Build/source/README.distro b/Build/source/README.distro
deleted file mode 100644
index ff4548bdc24..00000000000
--- a/Build/source/README.distro
+++ /dev/null
@@ -1,146 +0,0 @@
-Copyright (C) 2011, 2012 Peter Breitenlohner <tex-live@tug.org>
-You may freely use, modify and/or distribute this file.
-
- Building TeX Live (TL) for a distro
- ===================================
-
-Although they use the same code base, building for a TL binary distribution
-as shipped by the user groups may be quite different from a `distro' build
-for, e.g., some kind of Linux distribution, a *Bsd or Mac OS X port, or
-similar.
-
-While a TL binary distribution uses shared libraries (libc, libm, X11
-libraries, and libfontconfig) only when absolutely necessary, a distro might
-use as many shared libraries as possible, including the TL specific
-libkpathsea and libptexenc.
-
-In addition the installation paths will, in general, be quite different.
-
-1. Configuring for a distro
-===========================
-Here we give some hints how to configure TL for a distro (see README.config
-for a fairly complete description of all configure options).
-
-1.1. General setup
-------------------
-You must use
- --disable-native-texlive-build
-otherwise many options described below are rejected, and should use, e.g.,
- --with-banner-add=/SomeDistro
-to identify your distro.
-
-You may specify
- --enable-shared
-to build the TL specific kpathsea and ptexenc libraries as shared libraries
-and may add
- --disable-static
-to not build the static libraries.
-
-You should use
- --with-system-LIB
-(for LIB=zlib, libpng, zziplib, etc.) to use installed libraries (including
-kpathsea and ptexenc for the TL specific libraries, e.g., when rebuilding
-individual programs) and you may have to add
- --with-LIB-includes=DIR
-and/or
- --with-LIB-libdir=DIR
-to locate the installed headers and libraries.
-
-1.2. Installation paths
------------------------
-If you specify, e.g.,
- --prefix=/usr
-binaries will be installed under
- /usr/bin
-libraries under
- /usr/lib
-header files under
- /usr/include
-info pages under
- /usr/share/info
-mnual pages under
- /usr/share/man
-and the principal TEXMF trees under
- /usr/share/texmf{,-dist}
-
-Moreover you can use
- --exec-prefix=DIR
-and
- --{bin,lib,include,info,man,dataroot}dir=DIR
-to modify these default choices. Depending on your distro you might want to
-specify
- --libdir=/usr/lib64
-or similar on 64bit bi-arch (Linux) systems.
-
-The top-level configure script displays the actual installation paths.
-
-For a `staged install' (see Automake manual 12.4), e.g.,
- mkdir /tmp/staging && make DESTDIR=/tmp/staging install-strip
-all installation paths are prefixed by the value of DESTDIR.
-
-
-2. Packaging for a distro
-=========================
-From Norbert Preining <preining@logic.at>, 2011-11-04, email to tldistro.
-
-This describes Debian packaging, but the basic ideas are the same for all
-distros.
-
-Let us discuss the few important things in turn:
-- ls-R files
-- updmap-sys/updmap.cfg
-- fmtutil-sys/fmtutil.cnf
-- fmtutil-sys/language.dat/def/lua.def
-
-All these files depend on the actually installed packages. So you
-should never never use the pre-shipped files (updmap.cfg, ...), because
-they refer to *all* fonts in a full installation.
-
-But if you want to allow for smooth upgrades etc, and partial installs,
-you cannot do that.
-
-So the Debian way for these files is:
-- at package build time we know which formats/font maps/hyphen patterns
- there are, and create snippets for these configuration files, and
- at install time put them into /etc/texmf/updmap.d, fmtutil.d, hyphen.d
-- after the package has been installed the configuration routine does:
- . assemble the pieces together to updmap.cfg/fmtutil.cnf/language.*
- . run the necessary commands (also determined at package *build* time,
- that is updmap-sys, fmtutil --whatever, etc)
-Furthermore, in Debian there is another requirement, namely that
-if a sysadm changes configuration files (hereafter called conffiles)
-in /etc, and the package is only removed (that is, the conffiles are
-*NOT* deleted) but NOT purged (purged = also conffiles removed),
-then a later installation of the package has to honor the changes the
-sysadm made.
-
-That means, there will remain snippets in /etc/updmap.d (for example)
-if a font package has been removed, but not purged. These snippets
-should of course NOT be merged into the main config file. So we ship
-in addition a file /var/lib/texmf/fmt.d/.... and check at assemble
-time if this file is present. If it is present, then the snippet
-is used, if not, then it is NOT used.
-(BTW, this also happens during partial upgrades, so if you are serious
-about packaging, think about that, too).
-
-Well, that is the story at least till 2007. In later version of the Debian
-packages we now use something called "triggers", where a central package
-(in our case "tex-common") shows interest in a certain directory, namely
-the directories /etc/texmf/fmtutil.d etc (all of them), and if a file
-is dropped there or changed there, only some specific code in tex-common
-is executed. This way we can reduce the calls to mktexlsr and updmap-sys
-a *LOT* (think about installing every collection of TeX Live, and run
-mktexlsr, fmtutil-sys --all, updmap-sys after *EACH* collection, versus
-running it only once or twice!). But this is Debian specific, and probably
-no other distribution has a similar system (although very useful).
-
-Puuuuh, long email. BTW, there are loads of documents in the tex-common
-package of Debian: http://packages.debian.org/sid/tex-common, especially
-the main documents Debian-TeX-Policy and TeX-on-Debian. Although a bit
-outdated, they describe the reality quite closely. Get the .deb and
-unpack it with ar ;-)
-
-
-
-Happy building. Please use the tldistro list for questions or
-discussion: http://lists.tug.org/tldistro.
diff --git a/Build/source/README.hacking b/Build/source/README.hacking
deleted file mode 100644
index ff893aa6490..00000000000
--- a/Build/source/README.hacking
+++ /dev/null
@@ -1,187 +0,0 @@
-Copyright (C) 2009-2014 Peter Breitenlohner <tex-live@tug.org>
-You may freely use, modify and/or distribute this file.
-
- Modifying the TeX Live (TL) build system
- ========================================
-
-1. Currently used versions of tools
-===================================
-
-In general, we use the latest released versions of GNU build tools. We
-install these directly from the original GNU releases (e.g., by building
-them with configure --prefix=/usr/local/gnu and having
-/usr/local/gnu/bin first in our PATH).
-
-autoconf (GNU Autoconf) 2.69
-
-automake (GNU automake) 1.14.1
-
-ltmain.sh (GNU libtool) 2.4.2
-
-bison (GNU Bison) 3.0.2
-
-flex 2.5.39
-
-m4 (GNU M4) 1.4.17
-
-makeinfo (GNU texinfo) 5.2
-
-2. Updating the TL build system
-===============================
-
-When anything in the TL build system (configure.ac and Makefile.am files
-with their fragments or M4 macros in m4/) has been modified you have to
-rebuild the coresponding configure, Makefile.in, config.h or c-auto.h, or
-other generated files. You should use the versions mentioned above. This
-is most easily done automatically using maintainer-mode.
-
-The files in the SVN repository are all up to date, but some of them may be
-rebuilt in maintainer-mode due to their timestamps (this is somewhat tedious
-to avoid due to SVN's handling of timestamps).
-
-Alternatively, you can run the 'reautoconf' script from the top-level.
-
-The 'config.guess', 'config.sub', etc. files for most packages are kept
-centrally in build-aux/, sourced from GNU Gnulib
-(http://www.gnu.org/software/gnulib), which in turn pulls them from
-their ultimate upstream source repository. There are, however,
-independent copies in, e.g., libs/freetype2/freetype-*/builds/unix/, and
-similar places. The 'reautoconf' script does not take care of those,
-but a TL cron job does keep them in sync (nightly).
-
-3. Extending the TL build system
-================================
-
-3.1 Adding a new program directory
-----------------------------------
-
-To add a new program directory utils/Util/ (not using Kpathsea) or
-texk/Prog/ (possibly using Kpathsea and Ptexenc) you must add the directory
-Util to the M4 list kpse_utils_pkgs or Prog to the M4 list kpse_texk_pkgs
-defined in m4/kpse-pkgs.m4. In addition you must create a configure.ac
-fragment utils/Util/ac/withenable.ac or texk/Prog/ac/withenable.ac defining
-any required libraries from the TL tree and whether this new program is to
-be built by default (in the absence of the corresponding
-'--enable-Util/Prog' or '--disable-Util/Prog' configure options).
-
-If a program in texk/Prog/ or utils/Util/ requires specific configure
-options to be seen at the top-level, they should be defined in an
-additional configure.ac fragment texk/Prog/ac/Prog.ac or
-utils/Util/ac/Util.ac (included from texk/Prog/ac/withenable.ac and
-texk/Prog/configure.ac or utils/Util/ac/withenable.ac and
-utils/Util/configure.ac) as, e.g., for texk/web2c/, texk/xdvik/, and
-utils/xindy/.
-
-As an example, the file texk/dvipdfmx/ac/withenable.ac contains
- KPSE_ENABLE_PROG([dvipdfmx], [kpathsea libpng])
-where KPSE_ENABLE_PROG, defined in m4/kpse-setup.m4, has one required
-argument -- the name of the subdirectory -- and three optional arguments: a
-list of required TL libraries (zlib is implied by libpng and need not be
-mentioned), a list of options ('disable' if this program is not to be built
-by default, 'native' if cross compilation is not possible, 'x' if this
-program requires X11), and a comment added to the help text for the disable
-or enable configure option for this program.
-
-3.2 Adding a new generic library directory
-------------------------------------------
-
-To add a new generic library directory libs/Lib/ you must add the directory
-Lib to the M4 list kpse_libs_pkgs defined in m4/kpse-pkgs.m4. In addition
-you must create a configure.ac fragment libs/Lib/ac/withenable.ac defining
-any required libraries from the TL tree and whether an installed (system)
-version of this library can be used. If that is the case, another
-configure.ac fragment libs/Lib/ac/Lib.ac should specify a small program as
-test for a system version to be acceptable. Finally you must create a file
-m4/kpse-Lib-flags.m4 defining the M4 macro KPSE_LIB_FLAGS (where 'LIB' is a
-sanitized uppercase version of 'Lib') setting up the Make variables
-LIB_INCLUDES, LIB_LIBS, and LIB_DEPEND with the required values for
-CPPFLAGS, LDADD, and dependencies, as well as LIB_RULE with a (multiline)
-Make rule to rebuild that library when necessary.
-
-If a system version of the library can be used, another M4 macro
-KPSE_LIB_SYSTEM_FLAGS in m4/kpse-Lib-flags.m4 must define values for
-LIB_INCLUDES and LIB_LIBS, and you must add the line
-'AC_REQUIRE([KPSE_LIB_SYSTEM_FLAGS])' to the definition of the M4 macro
-KPSE_ALL_SYSTEM_FLAGS in m4/kpse-pkgs.m4. In many cases LIB_INCLUDES and
-LIB_LIBS are constructed from values for the configure options
-'--with-Lib-includes' and/or '--with-Lib-libdir'; alternatively they may
-result from running pkg-config, freetype-config, or similar.
-
-As an example, the file libs/libpng/ac/withenable.ac contains
- KPSE_WITH_LIB([libpng], [zlib])
-where KPSE_WITH_LIB, defined in m4/kpse-setup.m4, has one required argument
--- the name of the subdirectory -- and two optional arguments: a list of
-required TL libraries, and a list of options ('tree' if only the library
-from the TL tree can be used). The file libs/libpng/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);])
-where KPSE_TRY_LIB, defined in m4/kpse-setup.m4, has three required
-arguments -- the name of the subdirectory and two AC_LANG_PROGRAM arguments.
-This causes the configure script to compile and link the C program
- #include <png.h>
- int main ()
- { png_structp png; png_voidp io; png_rw_ptr fn;
- png_set_read_fn(png, io, fn);
- return 0; }
-as sanity check for using an installed PNG library. The analogous macro
-KPSE_TRY_LIBXX uses the C++ compiler.
-
-3.3 Adding a new TeX specific library directory
------------------------------------------------
-
-To add a new TeX specific library directory texk/Lib/ proceed as for a
-generic library (described above) with these exceptions:
-
-(*) Add the directory Lib to the M4 list kpse_texlibs_pkgs (also defined in
-m4/kpse-pkgs.m4) instead of kpse_libs_pkgs.
-
-(*) The configure.ac fragment libs/Lib/ac/withenable.ac must use
-KPSE_WITH_TEXLIB instead of KPSE_WITH_LIB.
-
-(*) The new library must not depend on any generic libraries.
-
-4. Using libraries from the TL tree
-===================================
-
-The TL build system provides Autoconf macros for all libraries in the TL
-tree. A program requiring additional libraries must use standard Autoconf
-and Automake features (such as AC_ARG_WITH to specify their installation
-directories, AC_CHECK_LIB and AC_CHECK_FUNCS for library functions,
-AC_CHECK_HEADERS for header files).
-
-4.1 configure.ac
-----------------
-
-In order to use, e.g., libpng (either an installed version or from the TL
-tree) configure.ac must use KPSE_ZLIB_FLAGS and KPSE_LIBPNG_FLAGS. As a
-consequence the Make variables LIBPNG_DEPEND, LIBPNG_INCLUDES, LIBPNG_LIBS,
-and LIBPNG_RULE (and analogous ZLIB_* variables) will be defined.
-
-A program may wish to examine features of the PNG library. To do so
-configure.ac must use
- KPSE_ADD_FLAGS([zlib])
-followed by test for zlib features (if any) and
- KPSE_ADD_FLAGS([libpng])
-followed by tests for libpng features. These macros temporarily add
-appropriate values to CPPFLAGS and LIBS. The tests must be terminated by
- KPSE_RESTORE_FLAGS
-in order to restore CPPFLAGS and LIBS to their former values.
-
-4.2 Makefile.am
----------------
-
-In order to use, e.g., libpng (and zlib) the Make variables mentioned above
-must be used in Makefile.am as follows
-
-$(LIBPNG_INCLUDES) $(ZLIB_INCLUDES) must be added to AM_CPPFLAGS (or target
-specific target_CPPFLAGS).
-
-$(LIBPNG_LIBS) $(ZLIB_LIBS) must be added to LDADD or target_LDADD.
-
-$(LIBPNG_DEPEND) $(ZLIB_DEPEND) should be added to target_DEPENDENCIES such
-that rebuilding zlib and/or libpng causes the target to be rebuilt.
-
-Two lines containing @ZLIB_RULE@ and @LIBPNG_RULE@ create the rules required
-to (re-)build zlib and libpng when necessary.
diff --git a/Build/source/README.layout b/Build/source/README.layout
deleted file mode 100644
index 5eb9c923135..00000000000
--- a/Build/source/README.layout
+++ /dev/null
@@ -1,242 +0,0 @@
-Copyright (C) 2009-2012 Peter Breitenlohner <tex-live@tug.org>
-You may freely use, modify and/or distribute this file.
-
- Design of the TeX Live (TL) build system
- ========================================
-
-The TL build system has been completely redesigned, using Autoconf,
-Automake, and Libtool. The main components are TeX specific or utility
-program modules (directories texk/*/ and utils/*/), and TeX specific or
-generic library modules (directories texk/kpathsea/, texk/ptexenc/, and
-libs/*/) providing libraries required by the program modules.
-
-The primary design goal was modularity. Each module 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. Consequently an explicit list of all
-available modules is kept only in one central place.
-
-A second, related goal was to configure and build each library before
-configuring any (program or other library) module depending on that library.
-This allows to check 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.
-
-Most generic libraries and several programs that are maintained independently
-use the distributed source tree, with any patches to that source tree
-also kept separately as precise documentation of our changes.
-
-All this should simplify upgrading of modules maintained independently
-and/or integrating new modules into the TL build system.
-
- Layout of the TL build system
- =============================
-
-1. Layout of directories
-========================
-
-1.1. Overall layout
--------------------
-
-texk/kpathsea/ the two TeX specific libraries, Kpathsea
-texk/ptexenc/ and Ptexenc
-libs/Lib/ generic library Lib (zlib, libpng, t1lib, etc.)
-texk/Prog/ TeX specific program package Prog (web2c, afm2pl, etc.)
-utils/Util/ utility program package Util (chktex, ps2eps, etc.)
-
-auxdir/auxsub/ dummy module used to configure the real modules
-
-*/*/ac/*.ac various configure.ac fragments (configure options)
-
-build-aux/ auxiliary build scripts (config.guess etc.)
-
-m4/kpse-pkgs.m4 Autoconf macros defining lists of library and program
- modules and handling loops over these lists
-m4/*.m4 other Autoconf macros
-
-texk/am/*.am Makefile.am fragments
-texk/web2c/am/*.am for the Kpathsea library
-texk/web2c/*/am/*.am and the Web2C programs
-
-1.1.1. The TeX specific libraries
-
-texk/kpathsea/ac/withenable.ac defines that kpathsea requires no other libraries
-texk/kpathsea/ac/kpathsea.ac defines basic tests for a system version of kpathsea
-texk/kpathsea/ac/mktex.ac configure options also seen at the top-level
-m4/kpse-kpathsea-flags.m4 defines Autoconf macros for configure options
- as well as KPSE_KPATHSEA_FLAGS defining
- Make variables and to be used in configure.ac
- files for modules depending on kpathsea.
-
-texk/ptexenc/ac/withenable.ac defines that ptexenc requires kpathsea
-texk/ptexenc/ac/ptexenc.ac defines basic tests for a system version of ptexenc
-m4/kpse-ptexenc-flags.m4 defines Autoconf macros for configure options
- as well as KPSE_PTEXENC_FLAGS defining
- Make variables and to be used in configure.ac
- files for modules depending on ptexenc.
-
-1.1.2 A generic library `Lib'
-
-libs/Lib/ac/withenable.ac defines libraries required by Lib (if any)
-libs/Lib/ac/Lib.ac defines basic tests for a system version of Lib
-m4/kpse-Lib-flags.m4 defines Autoconf macros for configure options
- as well as KPSE_LIB_FLAGS defining
- Make variables and to be used in configure.ac
- files for modules depending on this library.
-
-1.1.3. A TeX specific program `Prog'
-
-texk/Prog/ac/withenable.ac defines libraries required by Prog,
- provides the configure option --disable-Prog
-texk/Prog/ac/Prog.ac optionally defines Prog specific configure
- option that should be seen at the top-level
-
-1.1.4. A utility program `Util'
-
-utils/Util/ac/withenable.ac defines libraries required by Util, provides
- the configure option --disable-Util
-
-1.2. The individual modules
----------------------------
-
-All generic libraries and many programs are maintained independently and use
-the distributed source tree, with any patches to that source tree kept as
-documentation of our changes. There are several types of proxy or wrapper
-build systems for these modules.
-
-1.2.1. A proxy build system, e.g., for libs/zlib/
-
-libs/zlib/zlib-1.2.7/ (almost) unmodified source tree
-libs/zlib/zlib-1.2.7-PATCHES/ modifications applied to that source tree
-libs/zlib/Makefile.am proxy Makefile.am
-libs/zlib/configure.ac and configure.ac
-
-In these cases the build system of the distributed source tree is ignored.
-The header files for many libraries are `installed' (as symlinks) under
-libs/Lib/include/ in the build tree exactly as they are for a system version
-under, e.g., /usr/include/.
-
-1.2.2. A wrapper build system, e.g., for libs/freetype2/
-
-libs/freetype2/freetype-2.4.9/ (almost) unmodified source tree
-libs/freetype2/freetype-2.4.9-PATCHES/ modifications applied to that source tree
-libs/freetype2/Makefile.am wrapper Makefile.am
-libs/freetype2/configure.ac and configure.ac
-
-Configuring libs/freetype2/ will create the wrapper Makefile handling all
-targets except 'all'. For 'make all' this will run the configure script of
-the distribution and then run 'make all' and usually also 'make install' to
-`install' the library and headers in the build tree
-
-1.2.3. A mixed build system, e.g., for utils/xindy/
-
-utils/xindy/xindy-2.4/ (almost) unmodified source tree
-utils/xindy/xindy-2.4-PATCHES/ modifications applied to that source tree
-utils/xindy/Makefile.am wrapper Makefile.am
-utils/xindy/configure.ac proxy configure.ac
-
-Configuring utils/xindy/ (or texk/lcdf-typetools/) will create the wrapper
-Makefile and the Makefiles of the distribution. The wrapper Makefile will
-essentially just invoke the top-level Makefile of the distribution. This
-requires that the Makefiles of the distribution allow a VPATH build, can
-handle all targets, and do not refer to $(top_srcdir) or $(top_builddir).
-
-2. Running `configure'
-======================
-
-Running 'configure' for the top-level directory will in addition configure
-the directories auxdir/auxsub/, libs/, utils/, and texk/. This will
-determine the programs (utils/Util/ and texk/Prog/) to be built and
-libraries from the TL tree (texk/kpathsea/, texk/ptexenc/, and libs/Lib/)
-required by these programs.
-
-3. Running `make' at the top-level
-==================================
-
-First, if texk/kpathsea/ or texk/ptexenc/ is not yet configured, this runs
-`configure' and if required `make all' in that directory. Then this
-recurses into all required subdirectories texk/kpathsea/, texk/ptexenc/,
-libs/, utils/, and texk/ for the selected Make target: `default' or `all' to
-(re-)build, `check' to run tests, `install' etc.
-
-3.1. Running `make' in libs/
-----------------------------
-
-First, for each subdirectory libs/Lib/ not yet configured, this runs
-`configure' and if required `make all' in that directory. Then this
-recurses into all required subdirectories for the selected Make target:
-`default' or `all' to (re-)build, `check' to run tests, `install' etc.
-
-3.2. Running `make' in utils/ and texk/
----------------------------------------
-
-Quite similarly, for each subdirectory utils/Util/ and texk/Prog/ not yet
-configured, this first runs `configure' and if required `make all' in that
-directory. Subsequently, this recurses into all required subdirectories to
-(re-)build, run tests, install, etc.
-
-3.3 Parallel builds
--------------------
-
-The TL build system allows for parallel builds ('make -j n' with n>1),
-carefully formulating dependencies as well as Make rules when a tool
-(such as 'tangle' or 'convert') creates several output files. This can
-considerably speed up a TL build on multi core systems. I usually use
-'make j 4 -l 8.0' or even 'make -j' with up to 50 compilations in parallel.
-
-3.4 Using a Configure Cache File
---------------------------------
-
-Further speed up of a TL build can be achieved by using a configure cache
-file, e.g., running 'configure -C' at the top level.
-
-3.5 Comments
-------------
-
-3.5.1 Comment 1
----------------
-
-After successfully running 'make' from the top-level, as second 'make'
-has nothing to rebuild.
-
-When configure scripts or source files have been modified, a second 'make'
-will rebuild only as required.
-
-3.5.2 Comment 2
----------------
-
-If running 'make' from the top-level fails in a subdirectory libs/*/,
-utils/*/, or /texk/*/ you can remove that directory from the build tree,
-fix the problem, and once again run 'make' from the top-level.
-
-3.5.3 Comment 3
----------------
-
-The TL build system successfully runs 'make dist' and 'make distcheck'
-(at least on my {i686,x86_64}-linux-gnu systems), producing tarballs
-tex-live-20YY-MM-DD.tar.{gz,xz} from which everything can be (re-)built;
-please keep it that way!
-
-3.5.4 Comment 4
----------------
-
-The process described above configures all directories, even for libraries
-and programs not to be built. This is necessary for Make targets such as
-`dist' or `distcheck' that have to recurse into all subdirectories, whereas
-the normal targets `all', `check', or `install' only recurse into the
-required subdirectories.
-
-As a side effect, this allows building all programs `on demand'. If, e.g.,
-building in utils/Util/ or texk/Prog/ has been disabled, the Makefile in
-that directory still contains all build rules. Thus running 'make' and
-'make install' in that directory will build and install everything.
-
-Similarly, when, e.g., building e-TeX has been disabled (as by default), you
-can run 'make etex' (or 'make etex.exe') in the subdirectory texk/web2c/ to
-build e-TeX (although there is no simple way to have e-TeX installed).
-
-Consider the extreme case of running configure with '--disable-all-pkgs',
-i.e., no programs and consequently no libraries are to be built. Running
-'make' will then configure all library and program directories but build
-nothing; similarly 'make install' will install nothing. Nevertheless next
-running, e.g., 'make tex' in the subdirectory texk/web2c/ will build first
-the Kpathsea library, then tangle, and finally tex.