summaryrefslogtreecommitdiff
path: root/Build/source/README.hacking
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/README.hacking')
-rw-r--r--Build/source/README.hacking187
1 files changed, 0 insertions, 187 deletions
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.