Codebase list texlive-bin / scrub-obsolete/main README.0overview
scrub-obsolete/main

Tree @scrub-obsolete/main (Download .tar.gz)

README.0overview @scrub-obsolete/mainraw · history · blame

(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 to consistently use
Autoconf, Automake, and Libtool.  Thus, running
   'configure && make && make check && make install'
or the essentially-equivalent top-level 'Build' script suffices 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 a single 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 and
integrating new modules into the TL build system.  (Despite all efforts,
neither task is easy.)