All you need to know when hacking (modifying) GNU libtextstyle or when building
it off the git repository.


Requirements
============

You will need reasonably recent versions of the build tools:

  * A C compiler; on Cygwin or mingw also a C++ compiler. Such as GNU GCC.
    + Homepage:
      https://gcc.gnu.org/
    + Pre-built package name:
      - On Debian and Debian-based systems: gcc, gcc-doc,
      - On Red Hat distributions: gcc.
      - Other: https://repology.org/project/gcc/versions

  * GNU automake 1.13 or newer
    + Homepage:
      https://www.gnu.org/software/automake/
    + Pre-built package name:
      - On Debian and Debian-based systems: automake,
      - On Red Hat distributions: automake.
      - Other: https://repology.org/project/automake/versions

  * GNU autoconf
    + Homepage:
      https://www.gnu.org/software/autoconf/
    + Pre-built package name:
      - On Debian and Debian-based systems: autoconf, autoconf-doc,
      - On Red Hat distributions: autoconf.
      - Other: https://repology.org/project/autoconf/versions

  * GNU m4
    + Homepage:
      https://www.gnu.org/software/m4/
    + Pre-built package name:
      - On Debian and Debian-based systems: m4, m4-doc,
      - On Red Hat distributions: m4.
      - Other: https://repology.org/project/m4/versions

  * GNU texinfo
    + Homepage:
      https://www.gnu.org/software/texinfo/
    + Pre-built package name:
      - On Debian and Debian-based systems: texinfo,
      - On Red Hat distributions: texinfo.
      - Other: https://repology.org/project/texinfo/versions

  * Perl
    + Homepage:
      https://www.perl.org/
    + Pre-built package name:
      - On Debian and Debian-based systems: perl, perl-doc,
      - On Red Hat distributions: perl.
      - Other: https://repology.org/project/perl/versions

  * TeX (for making the doc in .dvi, .ps or .pdf format)
    + Homepage:
      https://tug.org/texlive/
    + Pre-built package name:
      - On Debian and Debian-based systems: texlive-base, texlive-latex-base,
      - On Red Hat distributions: texlive-base.
      - Other: https://repology.org/project/texlive/versions

  * Either an internet connection or a recent copy of GNU gnulib.
    + Homepage:
      https://www.gnu.org/software/gnulib/

  * GNU tar (for creating distributable tarballs)
    + Homepage:
      https://www.gnu.org/software/tar/
    + Pre-built package name:
      - On Debian and Debian-based systems: tar, tar-doc,
      - On Red Hat distributions: tar.
      - Other: https://repology.org/project/tar/versions

  * GNU Wget
    + Homepage:
      https://www.gnu.org/software/wget/
    + Pre-built package name:
      - On Debian and Debian-based systems: wget,
      - On Red Hat distributions: wget.
      - Other: https://repology.org/project/wget/versions

And, of course, the packages listed in the DEPENDENCIES file.


Building off the git repository
===============================

Access to the git repository is described at
  https://savannah.gnu.org/git/?group=gettext

After fetching the sources from the repository, go into the 'libtextstyle'
directory, peek at the comments in autogen.sh, then run "./autogen.sh";
then you can proceed with "./configure" as usual.


Submitting patches
==================

Patches should be sent to bug-gettext@gnu.org, the bug/feature mailing
list.  You can subscribe to the mailing list, or see the list
archives, by following links from
https://savannah.gnu.org/mail/?group=gettext .

To email a patch you can use a shell command like 'git format-patch
-1' to create a file, and then attach the file to your email.  

Changes you commit should contain the log entries in the commit message.
For the style of a ChangeLog entry, see the "Change Logs" section of
the GNU coding standards:

  https://www.gnu.org/prep/standards/html_node/Change-Logs.html


Testing
=======

The unit tests don't cover much of the functionality.

To test the output on various terminal emulators, use the --color=test
option on the 'color-hello' or 'color-filter' program.

To test the signal handling, use the 'color-filter' program: run
  yes | ./filter '.*'
and exercise the various signals.
