Integration of this library into your package:

The preferred way is to use the Gnulib module 'localcharset'.

Here are instructions if you don't want to use Gnulib. It's tedious,
many small changes to your package:

* Copy the lib/ source file (localcharset.c) and the include file
  (include/localcharset.h) into your package.

* Add the m4/ files (codeset.m4, fcntl_h.m4) to your aclocal.m4 file
  or, if you are using automake, to your m4/ directory.

* Add the following lines to your configure.ac file:

    AC_CANONICAL_HOST
    AM_LANGINFO_CODESET
    gl_FCNTL_O_FLAGS
    AC_CHECK_HEADERS([stddef.h stdlib.h string.h])

  and make sure that it sets and AC_SUBSTs the PACKAGE variable.

* If you are not using automake, add rules to your Makefile.in:

  - Augment target "all" by
      localcharset.o

* If you are using automake, add rules to your Makefile.am:

  - Augment the main *_SOURCES variable by

        localcharset.h localcharset.c

