tlbuild: Overview of build system

 
 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.)