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


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

You will need reasonably recent versions of the build tools:

  * A C compiler. Such as GNU GCC.
    + Homepage:
      https://gcc.gnu.org/

  * GNU automake
    + Homepage:
      https://www.gnu.org/software/automake/

  * GNU autoconf
    + Homepage:
      https://www.gnu.org/software/autoconf/

  * GNU m4
    + Homepage:
      https://www.gnu.org/software/m4/

  * GNU gperf
    + Homepage:
      https://www.gnu.org/software/gperf/

  * GNU groff 1.17 or newer
    + Homepage:
      https://www.gnu.org/software/groff/

  * Perl
    + Homepage:
      https://www.perl.org/

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

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=libiconv .

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


Adding new encodings
====================

For an indication which encodings are acceptable in the official version of
GNU libiconv, take a look at NOTES.

For an indication which files need to be modified when adding a new encoding,
look for example at the 2007-05-25 ChangeLog entry for RK1048.  The lib/*.h
file for an encoding is usually generated by one of the tools in the tools/
directory.  All you need to provide is the conversion table in the format of
the many *.TXT files.
