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


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

You will need reasonably recent versions of the build tools:

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

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

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

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

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

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

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

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

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


Building off the CVS
====================

Access to the CVS is described at http://sourceforge.net/cvs/?group_id=51585 .

After fetching the sources from the CVS, 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.
