diff options
Diffstat (limited to 'Build/source/README.layout')
-rw-r--r-- | Build/source/README.layout | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/Build/source/README.layout b/Build/source/README.layout index 62a24fb6833..c226194d442 100644 --- a/Build/source/README.layout +++ b/Build/source/README.layout @@ -1,12 +1,13 @@ -Copyright (C) 2009 Peter Breitenlohner <tex-live@tug.org> +Copyright (C) 2009, 2010 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 2009 build system has been completely redesigned, using Autoconf, -Automake, and Libtool. The main components are program modules (directories -texk/*/ and utils/*/) and library modules (directories tex/kpathsea/ and +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 @@ -20,9 +21,9 @@ 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 libraries and several programs that are mintained independently use the -distributed source tree, any modifications of that source tree are kept as -patches. +Most generic libraries and several programs that are mintained independently +use the distributed source tree, any modifications of that source tree are +kept as patches. All this should simplify upgrading of modules maintained independently and/or integrating new modules into the TL build system. @@ -36,19 +37,11 @@ and/or integrating new modules into the TL build system. 1.1. Overall layout ------------------- -texk/kpathsea/*/ the Kpathsea library -libs/*/ various other libraries - -texk/*/ programs (mostly using Kpathsea) -utils/*/ utility programs (not using Kpathsea) - -texk/am/*.am Makefile.am fragments -texk/web2c/am/*.am for the Kpathsea library -texk/web2c/*/am/*.am and the Web2C programs - -libs/Lib/ library Lib (zlib, libpng, t1lib, etc.) -texk/Prog/ program package Prog (web2c, afm2pl, bibtex8, etc.) -utils/Util/ utility program package Util (dialog, pdfopen, ps2eps, etc.) +texk/kpathsea/ the two TeX specific Kpathsea +texk/ptexenc/ and Ptexenc libraries +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 (dialog, ps2eps, etc.) auxdir/auxsub/ dummy module used to configure the real modules @@ -56,12 +49,16 @@ auxdir/auxsub/ dummy module used to configure the real modules build-aux/ auxiliary build scripts (config.guess etc.) -m4/kpse-pkgs.m4 Autoconf macros defining the lists of Lib, Prog, and Util +m4/kpse-pkgs.m4 Autoconf macros defining lists of library and program modules and handling loops over these lists m4/*.m4 other Autoconf macros -1.2. A library `Lib' --------------------- +texk/am/*.am Makefile.am fragments +texk/web2c/am/*.am for the Kpathsea library +texk/web2c/*/am/*.am and the Web2C programs + +1.2. A generic library `Lib' +---------------------------- libs/Lib/ac/withenable.ac defines libraries required by Lib libs/Lib/ac/Lib.ac defines basic tests for a system version of Lib @@ -80,8 +77,10 @@ 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.3. A program `Prog' ---------------------- +The same structure is used for the TeX specific libraries. + +1.3. A TeX specific program `Prog' +---------------------------------- texk/Prog/ac/withenable.ac defines libraries required by Prog, provides the configure option --disable-Prog @@ -98,16 +97,19 @@ utils/Util/ac/withenable.ac defines libraries required by Util, provides the ====================== Running 'configure' for the top-level directory will in addition configure -the directories auxdir/auxsub/, texk/kpathsea/, 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/ and libs/Lib/) required by -these programs. +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' -================= +3. Running `make' at the top-level +================================== -Running 'make' in the top-level directory will recurse into the directories -texk/kpathsea/, libs/, utils/, and texk/. +First, if texk/kpathsea/ and texk/ptexenc/ are 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/ ---------------------------- @@ -132,14 +134,13 @@ The TL build system allows for parallel builds ('make -j n' with n>1), carefully formulating 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; please report any failures. +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. This should work after -some initial problem have been fixed; please report any failures. +file, e.g., running 'configure -C' at the top-level. 3.5 Comments ------------ |