Copyright 2013-2022 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This information supplements the generic installation instructions in the file 'INSTALL'. It is meant for people building from the development repository, rather than a distribution archive. Distribution archives include a 'configure' script, among other files; the repository does not. If you want to start building the 'groff' system using an existing 'configure' script, you don't need the information in this file. Dependencies ------------ The dependencies documented in the 'INSTALL.extra' file are required, as are several others. * You will need Autoconf version 2.68 or higher and Automake version 1.12.2 or higher. These requirements are asserted in the 'bootstrap.conf' file. On operating systems supporting concurrent installation of multiple versions of the GNU Autotools, set environment variables as in the following example, adjusting the version numbers as required. $ export AUTOMAKE_VERSION=1.14 $ export AUTOCONF_VERSION=2.69 * You will need a 'yacc' program. We recommend Berkeley yacc ('byacc') or GNU Bison ('bison'). * groff's Texinfo manual is generated in several formats: GNU Info, HTML, plain text, TeX DVI, and PDF. The former three require 'makeinfo' from GNU Texinfo 5.0 or later. The latter two additionally require a TeX installation, such as TeX Live. If TeX is not installed, the DVI and PDF formats of the manual cannot be generated. This will cause a build failure only if the Texinfo source file "groff.texi" is updated and the make(1) "dist" or relevant file targets are manually specified. * You will need the 'xpmtoppm', 'pnmdepth', and 'pnmtops' programs from the Netpbm distribution. Bootstrapping from a Git checkout --------------------------------- Invoke the bootstrap script. $ ./bootstrap What bootstrapping does ----------------------- The foregoing procedure will do two things: - clone the gnulib repository as a Git submodule in 'gnulib', add the needed gnulib source files in 'lib' as well as required gnulib m4 macros in 'gnulib_m4'; and - invoke 'autoreconf', which will call the GNU Autotools ('aclocal', 'autoconf', 'automake') in the right order to create the following files. -- INSTALL (a symlink to gnulib's INSTALL file) -- Makefile.in -- aclocal.m4 -- autom4te.cache/ -- build-aux/ (which contains all the helper scripts) -- configure -- src/include/config.hin 'aclocal.m4' is a generated file; groff's m4 macros are included via the 'acinclude.m4' file. Building -------- You can now invoke the 'configure' script. It produces the 'config.status' script, which generates the Makefile. Then call 'make' to build the groff project. You can do these from the source tree. $ ./configure $ make # run with -j option if desired You can alternatively build groff outside of its source tree, which is cleaner, leaving fewer files to confuse 'git status' if you aim to undertake development. $ mkdir build $ cd build $ ../configure $ make # run with -j option if desired A separate build tree need not be a subdirectory of the source. Evaluation ---------- Several dozen sanity checks can be performed within the build tree. $ make check # run with -j option if desired Installation ------------ When the build is finished you can install the groff build artifacts. $ make install install-doc # run with 'sudo' if necessary Uninstalling ------------ See "Uninstalling" in the 'INSTALL.extra' file. Rebuilding ---------- Start over from "Building" above. ##### Editor settings Local Variables: fill-column: 72 mode: text End: # vim: set autoindent textwidth=72: