diff options
Diffstat (limited to 'Build')
-rw-r--r-- | Build/source/README.0overview | 10 | ||||
-rw-r--r-- | Build/source/README.1prerequisites | 8 | ||||
-rw-r--r-- | Build/source/README.2building | 48 | ||||
-rw-r--r-- | Build/source/README.4layout | 59 | ||||
-rw-r--r-- | Build/source/README.7coding | 5 |
5 files changed, 71 insertions, 59 deletions
diff --git a/Build/source/README.0overview b/Build/source/README.0overview index efdd1e87a12..5065317b637 100644 --- a/Build/source/README.0overview +++ b/Build/source/README.0overview @@ -33,8 +33,8 @@ list of all 'configure' options. 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'). +seen at the top level, and more. An explicit list of all available +modules is kept in only one central place, namely '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 @@ -46,7 +46,7 @@ version of that library. 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.) + All this is for the sake of simplifying both upgrading of modules 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 index 80f0186cde6..6d7ea74d589 100644 --- a/Build/source/README.1prerequisites +++ b/Build/source/README.1prerequisites @@ -10,13 +10,17 @@ 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 + 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: +'dvisvgm' + requires a C++11 compiler, such as gcc 4.8.1 (or later) or clang + 3.3 (or later). + 'web2c' requires 'perl' for some tests run by 'make check'. diff --git a/Build/source/README.2building b/Build/source/README.2building index 0e256d93a65..12ddd9a9391 100644 --- a/Build/source/README.2building +++ b/Build/source/README.2building @@ -47,7 +47,7 @@ done unless some source files have been modified. If configuring or building a module fails, you should first find and fix the problem, then perhaps remove the subdirectory for that module from -the build tree, and finally rerun the top-level 'make' (or 'Build' with +the build tree, and finally rerun the top level 'make' (or 'Build' with '--no-clean' as its first argument). 4.3 Build in parallel @@ -65,7 +65,7 @@ gained by using a configure cache file, i.e., with the option '-C' 4.4 Build distribution ====================== -Running 'make dist' at the top-level creates a tarball +Running 'make dist' at the top level creates a tarball 'tex-live-YYYY-MM-DD.tar.xz' from the TL source tree. Running 'make distcheck' also verifies that this tarball suffices to build and install all of TL. @@ -128,28 +128,24 @@ debugging purposes. things are working. There are many 'configure' options you can tweak as desired; check the output from 'configure --help'. - Finally, the above retrieves the entire TL source tree (some 300mb). -It is natural to ask if this is really necessary. Strictly speaking, -the answer is no, but it is vastly more convenient to do so. If you cut -down the source tree, you must also give additional 'configure' flags to -individually disable using system versions of libraries, or the -intricacies of the dependencies (such as 'teckit' requiring 'zlib') will -have undesired side effects. For an example, see the 'build-pdftex.sh' -script in the 'pdftex' development sources (<http://pdftex.org>), which -are indeed a cut-down TL source tree. - - Caveat 1: even with '--disable-all-pkgs', dependencies will be -checked. For instance, if a non-MacOSX system does not have -'fontconfig', XeTeX cannot be built (*note Prerequisites::) and -'configure' will terminate. To proceed without such dependencies, -specify '--enable-missing' also. (Arguably this should happen -automatically.) - - Caveat 2: unless 'CC' and 'CXX' and 'OBJCXX' are explicitly -specified, each package will configure its own compiler(s). In -practice, this results in a conflict in only one instance: the ICU -('libs/icu') library will prefer 'clang' and 'clang++' over all others -if they are installed, whereas everything else prefers 'gcc' and 'g++'. -Usually the results will be interoperable, but it can cause extra -confusion and problems when debugging a program that uses ICU. + Finally, the above retrieves the entire TL source tree (several +hundred megabytes). It is natural to ask if this is really necessary. +Strictly speaking, the answer is no, but it is vastly more convenient to +do so. If you cut down the source tree, you must also give additional +'configure' flags to individually disable using system versions of +libraries, or the intricacies of the dependencies (such as 'teckit' +requiring 'zlib') will have undesired side effects. For an example, see +the 'build-pdftex.sh' script in the 'pdftex' development source +(<http://pdftex.org>), which is indeed a cut-down TL source tree. + + Even with '--disable-all-pkgs', dependencies will be checked. For +instance, if a non-MacOSX system does not have 'fontconfig', XeTeX +cannot be built (*note Prerequisites::) and 'configure' will terminate. +To proceed without such dependencies, specify '--enable-missing' also. +(Arguably this should happen automatically.) + + By default, the 'gcc' compilers will be used if present; otherwise, +individual packages may use something different. You can explicitly +specify the compilers to be used with the environment variables 'CC', +'CXX', and 'OBJCXX'. diff --git a/Build/source/README.4layout b/Build/source/README.4layout index d2585430bbc..aa691532f51 100644 --- a/Build/source/README.4layout +++ b/Build/source/README.4layout @@ -32,7 +32,7 @@ many extra hassles, so don't do that, tempting as it may be. bison (GNU Bison) 3.0.4 flex 2.6.0 ltmain.sh (GNU libtool) 2.4.6 - m4 (GNU M4) 1.4.17 + m4 (GNU M4) 1.4.18 makeinfo (GNU texinfo) 6.1 These versions should be used to update the generated files (e.g., @@ -63,11 +63,11 @@ 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.) + In addition, 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 @@ -80,17 +80,23 @@ 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 +'compile', 'config.guess', 'config.sub', 'depcomp', etc. used by most +packages. These are 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). +and a few other 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 just for (someone's) convenience, e.g., -'epstopdf' which is developed here. +build, but are present just for (someone's) convenience, e.g., is +'epstopdf' development source is here. + + When the top-level './Build' script is used to build TL, two more two +more top-level directories appear: 'Work/' for the build tree, and +'inst/' for the install tree (from 'make install'). These names (and +everything else about 'Build''s operation) can be changed by setting +environment variables before running it; see the script file. 6.3 Autoconf macros =================== @@ -278,9 +284,8 @@ structure and variation. ---------------------------------------- This generic library uses the source tree in, e.g., the subdirectory -'libpng-1.6.16' with all modifications for TL recorded in -'libpng-1.6.16-PATCHES/*'. The 'configure.ac' fragment -'ac/withenable.ac' contains +'libpng-src/' with all modifications for TL recorded in 'TLpatches/*'. +The 'configure.ac' fragment 'ac/withenable.ac' contains KPSE_WITH_LIB([libpng], [zlib]) @@ -377,9 +382,9 @@ 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.39' with -modifications documented in 't1utils-1.39-PATCHES/*' and a proxy build -system consisting of 'configure.ac' and 'Makefile.am'. The fragment +Once again we use the distributed source tree 't1utils-src' with +modifications documented in 'TLpatches/*' and a proxy build system +consisting of 'configure.ac' and 'Makefile.am'. The fragment 'ac/withenable.ac' contains KPSE_ENABLE_PROG([t1utils]) @@ -390,12 +395,11 @@ configure option '--disable-t1utils'. 6.5.2 The 'xindy' package in 'utils/xindy' ------------------------------------------ -This module uses the distributed source tree 'xindy-2.5.1' with -modifications documented in 'xindy-2.5.1-PATCHES/*', a proxy -'configure.ac', and a wrapper 'Makefile.am' that descends into -'xindy-2.5.1'. 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 +This module uses the distributed source tree 'xindy-src/' with +modifications documented in 'TLpatches/*', a proxy 'configure.ac', and a +wrapper 'Makefile.am' that descends into 'xindy-src'. The 'xindy' build +requires a 'make' that supports 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]) @@ -446,6 +450,13 @@ but are included on the TL DVD together with their support files. This section outlines the basic process for adding new packages to the TL build system. + In any case, a new package directory 'foo' should contain the +original sources, as modified for TL, in 'foo/foo-src', and the changes +should be documented in 'foo/TLpatches/*'; changes should also be +submitted upstream whenever reasonable, of course. In addition, 'foo/' +will need the usual Automake build-related files ('configure.ac', +'Makefile.am', etc. Please keep a 'ChangeLog' for all TL changes. + 6.6.1 Adding a new program module --------------------------------- diff --git a/Build/source/README.7coding b/Build/source/README.7coding index 9d0e2291d8d..8fd3ed0d2a4 100644 --- a/Build/source/README.7coding +++ b/Build/source/README.7coding @@ -10,8 +10,9 @@ 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. +'const'. These rules should be applied to most of the TeX Live tree, +the exception being code that is maintained independently and whose +maintainers don't want to accept patches. 9.1 Declarations and definitions ================================ |