Copyright 2013-2018 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 file contains information that supplements the generic installation instructions in file `INSTALL'. It is meant for people building directly from the development repository, rather than a release or snapshot tarball. If you want to start compiling the `groff' system with an existing script `configure' you won't need the information in this file. You need them only if you want to build groff from the git repository. 1. Initial build ---------------- You will need autoconf version and 2.65 or higher and automake version 1.12.2 or higher. These minimal versions are set in the bootstrap.conf file. On operating systems supporting concurrent installation of multiple versions of the autotools, set the following environment variables: export AUTOMAKE_VERSION=1.14 export AUTOCONF_VERSION=2.69 You will also need to have `pkg-config' installed on your system. First invoke the bootstrap script: $ ./bootstrap This will: - clone the gnulib repository as a git submodule in 'gnulib', add the needed gnulib sources files in 'lib', add the needed gnulib m4 macros in 'gnulib_m4' - Invoke autoreconf that will call all the `GNU autotools' (`aclocal', `autoconf', `automake') in the right order for creating the following files: -- INSTALL (a symlink to gnulib's INSTALL file) -- Makefile.in -- aclocal.m4 -- autom4te.cache/ -- build-aux/ (that contains all the helper scripts) -- configure -- src/include/config.hin Note that aclocal.m4 is generated and the groff m4 macros are included via the acinclude.m4 file. At this point you can invoke the `configure' script (that generates the `config.status' script; it is the `config.status' script generates the Makefile) and call 'make' to build the groff project. You can do it in the source tree: $ ./configure $ make You can also build groff in an out of source build tree, which is cleaner: $ mkdir build $ cd build $ ../configure $ make Note that parallel build is also supported and make can be invoked with the -j option, which will greatly speed up the build. When the build is finished you can install the whole groff installation with: $ make install Notes: If you use an old `autoreconf' version < 2.69, there might be an error warning like: /usr/share/aclocal/gtkglextmm-1.2.m4:225: warning: underquoted definition of AC_GTKGLEXTMM_SUPPORTS_MULTIHEAD /usr/share/aclocal/gtkglextmm-1.2.m4:225: run info '(automake)Extending aclocal' /usr/share/aclocal/gtkglextmm-1.2.m4:225: or see http://www.gnu.org/software/automake/manual/automake.html#Extending-aclocal Just ignore this. It doesn't occur in the actual versions of `autoreconf'. Troff errors of the types can't transparently output node at top level and can't translate character code n to special character 'c' in transparent throughput may safely be ignored. A few sanity checks can be done with the command: $ make check This will perform some tests on the generated examples. However, these checks are for the moment quite limited. The groff texinfo manual can be generated in pdf and html formats with: $ make doc and installed with: $ make install-doc 2. Modification of autotools files ---------------------------------- Previously, when groff used `autoconf' only and not `automake', you had to invoke manually the autotools, depending on what you modified. For example, to change the file `aclocal.m4', you had to run the shell command 'aclocal -I m4', to recreate the files `configure' and `Makefile', you had to use the command 'autoreconf -I m4'. Now, as groff uses `automake', you don't need to run `autoreconf'. If you make some changes in Makefile.am or configure.ac, all the files that need to be updated will be regenerated when you execute `make'. 3. Quick start on the usage of `automake' in groff -------------------------------------------------- A little document explaining the basics of automake and its usage in groff is available in doc/automake.mom. It is currently not automatically generated, to build it: pdfmom automake.mom > automake.pdf