Installation on Win32 (WinNT, Win95/98):

- Requires MS Visual C/C++ 4.0 or 5.0 or 6.0.

- Cannot build in a separate directory.

- Build instructions:

   Make sure that the MSVC4.0 or MSVC5.0 or MSVC6.0 utilities ("cl" etc.) are
   found in PATH.

   For shared library (DLL):

        nmake -f Makefile.msvc DLL=1 MFLAGS=-MD

   For static library:

        nmake -f Makefile.msvc

   If you want to build both the shared and static library, you have to
   unpack the libiconv sources twice in different directories.

- Installation:

   Copy include/libcharset.h to your header file repository.
   Copy lib/charset.lib to your library repository.
   If you built for shared library, also copy lib/charset.dll into one of
   the directories listed in your PATH, or into the directory containing
   the executable which shall make use of libcharset.
