This is a port of GNU libiconv 1.14  to MSDOS/DJGPP.

  LIBICONV is a character set conversion library and provides
  an iconv() implementation, for use on systems which don't
  have one, or whose implementation cannot convert from/to Unicode.
  This library provides the requiered functionality to recode on-the-fly
  from UNIX charsets to MSDOS codepages. The mapping from language codes
  to DOS codepages is contained in the charset.alias file located in the
  /dev/env/DJDIR/lib subdir. Please inspect this file carefully and tell
  me if the selected DOS codepage is correct for your language.


  ATTENTION:  to compile and use this port with DJGPP 2.03 you will have to
  replace some headers in your installation and replace some object files in
  your libc.a  This is required to update unsetenv and locale support to the
  DJGPP 2.04 level.  This is NOT optional.
  The DJGPP 2.04 version of this port provides the libraries as DXE3 modules
  instead of static libraries.  To be able to produce working DXE3 modules it
  is necessary to use a freshly compiled libc.a from the CVS respository.
  This is NOT optional.



1.:     DJGPP specific changes.
        =======================

        There are no DJGPP specific changes to the sources at all.  Starting
        with version 1.6, the official GNU distribution has build-in DJGPP
        support so this package should compile out-of-the-box.  Unfortunatly
        this is no longer true for the configuration step.  This package can
        no longer be configured out-of-the-box using the djgpp specific files
        provided by the GNU distribution.  The djgpp specific configuration
        files are no longer maintained and thus useless.  I have renamed the
        original /djgpp directories into /djgpp.old and kept it for
        completeness reasons.  Their content is completely useless nowadays.
        Do not use them.  The new configuration files are stored now in the
        new /djgpp directory.

        It is important to understand that this port does not have nor will
        ever provide code to identify SFN aliases that have numeric tails.
        IOW, it is the user's responsability to disable numeric tail generation
        on all OS where this is possible before installing packages that have
        NLS support or the program compiled with this library will fail when
        LFN support has been disabled.  E.g.: the port will be able to find a
        file like charset.alias if LFN support is enabled and it will be able
        to find charset.ali if LFN support is disabled but it will __NEVER__ be
        able to find charset~1.ali.  On WIN95/98 systems and plain DOS with
        DOSLFN, the user _must_ always turn off the generation of numeric tails
        for 8.3 aliases the OS creats for long file names _before_ package
        installation or the package will not work in a dual DOS/WIN9X (SFN/LFN)
        environment (it will work on Win[9X|2K|XP] where the long file name
        (charset.alias) is available but it will not work on plain DOS where an
        alias like charset~1.ali will be visible instead of the 8.3 truncated
        short file name, this is charset.ali).

        The port has been configured to be build using DJGPP 2.03 or DJGPP 2.04.
        The port using DJGPP 2.03 provides static libraries only.  But the port
        compiled using DJGPP 2.04 will provide both static libraries and dynamic
        libraries using DJGPP's DXE3 feature.  Building with stock djdev204 is
        no longer supported due to bugs in different LFN functions that makes
        the port useless on plain DOS together with LFN drivers that do not
        implement the full set of 0x71NN functions.

        The following applies to DJGPP 2.03 users _ONLY_:
        To be able to compile and use libiconv (and GNU gettext) with your
        applications that shall be compiled using djdev203, you will need to
        update the locale and unsetenv support of libc.a to the level provided
        by DJGPP 2.04 and later.  It is also usefull to resolve a function name
        clash that exists in libc.a from djdev203.
        The port provides all required locale and unsetenv specific files in
        the djgpp/djgpp-2.03 directory of the binary archive.  These are the
        header files:
          locale.h and stdlib.h
        and the object files:
          lconv.o, setlocal.o, strcoll.o, strftime.o and unsetenv.o
        All source files used are from the CVS repository and are the same
        object files that have been created when I compiled libc.a from the
        CVS repository to create the DJGPP 2.04 port of libiconv.
        To update your DJGPP 2.03 C library and headers proceed as follow:
        1: change into the gnu/libiconv-1.14/djgpp/djgpp-2.03 directory.
        2: replace the locale and stdlib header with the new one like this:
             cp -vf locale.h /dev/env/DJDIR/include/locale.h
             cp -vf stdlib.h /dev/env/DJDIR/include/stdlib.h
        3: replace the object files in your libc.a with the new ones like this:
             ar -rv /dev/env/DJDIR/lib/libc.a *.o
        Now you have enough locale and unsetenv support to use libiconv.a,
        libunistring.a and GNU gettext together with DJGPP 2.03.
        Please note that this procedure is __NOT__ optional and must be done
        before you start using the libraries.  If you do not update libc.a as
        described the port will be useless for you.

        It is also usefull to fix a function name clash existing in DJGPP 2.03.
        The function name gettext from the GNU gettext library collides with
        BORLAND-compatibility gettext function name declared in conio.h.  To
        resolve this, conio.h and conio.o must be replaced in your DJGPP 2.03
        installation.
        To update your DJGPP 2.03 C library and header proceed as follow:
        1: extract the binary archive of the gettext port into some temporary
           directory and change into the gnu/gettext-0.18.3.2/djgpp/djgpp-2.03
           directory.
        2: replace the conio header with the new one like this:
             cp -vf conio.h /dev/env/DJDIR/include/conio.h
        3: replace the object file in your libc.a with the new one like this:
             ar -rv /dev/env/DJDIR/lib/libc.a *.o

        It is also worth to update the getpwnam function and the passwd
        structure.  They are required for gettext anyway.  To update your
        DJGPP 2.03 C library and header proceed as follow:
        1: extract the binary archive of the gettext port into some temporary
           directory and change into the gnu/gettext-0.18.3.2/djgpp/djgpp-2.03
           directory.
        2: replace the conio header with the new one like this:
             cp -vf pwd.h /dev/env/DJDIR/include/pwd.h
        3: replace the object file in your libc.a with the new one like this:
             ar -rv /dev/env/DJDIR/lib/libc.a *.o
        You are done.
        Again, all this concerns the DJGPP 2.03 users only.

        The following applies to DJGPP 2.04 users _ONLY_:
        You can build and use the iconv library either as static library or as
        a DXE3 loadble module.  To compile this version of the port a libc.a
        version compiled from the repository code is requiered.  To this purpose
        you can check out the code from the CVS repository or use the daily
        checkout archive provided by Martin Stromberg:
          <http://www.ludd.luth.se/~ams/djgpp/cvs/djgpp.cvs.tar.gz>
        Please note that the 2.04 port of iconv has been configured and compiled
        as DXE3 module but it contains both versions of the libraries.
        The static version of the library and the binaries are stored in the
        /gnu/libiconv-1.14/djgpp/static directory of the binary archive.
        The DXE3 module of the libraries and binaries compiled with it are stored
        in their usual place so they will be used as defaults.  If you want to
        use the static version instead of the DXE3 modules copy the contents of
        the /static directory to your installation tree.  The DXE3 versions of
        the libraries are always paires of files.  One is the import library
        used during the linking of the application, the other one is the DXE3
        module loaded at runtime.  The names are:
          /lib/libcharset.a
          /lib/libcharset.dxe
          /lib/libiconv.a
          /lib/libiconv.dxe
        The files with the ".a" extension are the import libraries created by
        the dxe3gen tool. The ".a" extension for the import libraries has been
        choosed intentionaly so that linking rules in existing Makefiles do not
        need to be adjusted.  The sources have been configured for the repository
        version of libc.a.  To compile DXE3 modules you must compile like this:
          make  MAKE_DXE3=y
        If MAKE_DXE3 is omitted then the normal static libraries will be build
        no matter which libc.a has been installed.  To run the test suite you
        must start make like this:
          make check  MAKE_DXE3=y
        If MAKE_DXE3 is omitted then LD_LIBRARY_PATH will not be set to point
        to the freshly build but still not installed DXE3 modules and the
        testsuite will fail because the test binaries cannot load the modules
        at run-time.  To install the products start make like this:
          make install prefix=/some/dir  MAKE_DXE3=y
        If MAKE_DXE3 is omitted then every thing will be installed except for
        the DXE3 modules.
        Again, all this concerns the DJGPP 2.04 users only.



        As usual, all djgpp specific files (config.bat, diffs, README files,
        etc.) are located in the djgpp subdir.

        For further information about GNU libiconv please read the info docs and NEWS file.


2.:     Installing the binary package.
        ==============================

2.1.:   Copy the binary distribution into the top DJGPP installation directory,
        just unzip it preserving the directory structure running *ONE* of the
        following commands:
          unzip32 licv114b.zip      or
          djtarx licv114b.zip       or
          pkunzip -d licv114b.zip


3.:     Building the binaries from sources.
        ===================================

3.1.:   Create a temporary directory and copy the source package into the
        directory.  If you download the source distribution from one of the
        DJGPP sites, just unzip it preserving the directory structure
        running *ONE* of the following commands:
          unzip32 licv114s.zip      or
          djtarx licv114s.zip       or
          pkunzip -d licv114s.zip

3.2.:   To build the binaries you will need the following binary packages:
          djdev203.zip (or a later but NOT a prior version)
          bsh205bbr3.zip (or a later but NOT a prior version)
          gccNNNb.zip, gppNNN.zip, bnuNNNb.zip, makNNNb.zip, filNNNb.zip,
          shlNNNb.zip, txtNNNb.zip, txiNNNb.zip, grepNNNb.zip, sedNNNb.zip,
          pcreNNNb.zip, mktmpNNb.zip and gwkNNNb.zip.

        To build with NLS support enabled you will also need to install:
          gtxNNNb.zip

        If you want to run the check you will need also:
          difNNNb.zip and mktmpNNNb.zip

        NNN represents the latest version number of the binary packages.  All
        this packages can be found in the /v2gnu directory of any
        ftp.delorie.com mirror.
        You will need bsh205bbr3.zip or later and *NOT* a prior version or
        the build will fail.  The same applies to djdev203.zip.

3.3.:   The package has been configured for both DJGPP 2.03 and DJGPP 2.04.
        There is a separate build directory for DJGPP 2.03 and for DJGPP 2.04
        under the top srcdir (aka libiconv-1.14).  To build the binaries
        using the 2.03 version of DJGPP cd into _build.203; if you prefer to
        build the binaries using DJGPP 2.04 cd into _build.204.  If for some
        reason you want to reconfigure the package cd into the corresponding
        build directory and run the following commands:
          del config.cache
          make clean
          ..\djgpp\config ./..

        Please note that you *MUST* delete the config.cache file in the djgpp
        subdir or you will not really reconfigure the sources because the
        configuration informations will be read from the cache file instead
        of being newly computed.

        config.bat, among other things, will start the configure script passing
        to it a couple of arguments.  You can control these argument passing the
        following command line arguments to config.bat:
          nls or no-nls, default nls.  NLS support enabled.
          cache or no-cache, default cache.
          dep or no-dep, default no-dep.  No dependency tracking.
        All other configure specific options are not set by config.bat so their
        values are left as they are.  If no arguments are passed to config.bat
        then the default values are used.


        To build the programs in a directory other than where the sources are,
        you must add the parameter that specifies the source directory,
        e.g:
          x:\src\gnu\libiconv-1.14\djgpp\config x:/src/gnu/libiconv-1.14

        Lets assume you want to build the binaries in a directory placed on a
        different drive (z:\build in this case) from where the sources are,
        then you will run the following commands:
          z:
          md \build
          cd \build
          x:\src\gnu\libiconv-1.14\djgpp\config x:/src/gnu/libiconv-1.14

        The order of the options and the srcdir option does not matter.  You
        *MUST* use forward slashes to specify the source directory.

        The batch file will set same environment variables, make MSDOS specific
        modifications to the Makefile.in's and supply all other needed options
        to the configure script.

3.4.:   To compile the package run from the directory where you have configured
        the sources the command:
          make
        This will produce static libraries for DJGPP 2.04.  For DJGPP 2.03, the
        produced libraries are always static.  If you use DJGPP 2.04 and you
        prefer DXE3 modules use the command:
          make MAKE_DXE3

3.5.:   Now you can run the tests if you like.  Start the command:
          make check

        If the package has been compiled to produce DXE3 modules, the test suite
        must be started using the command
          make check MAKE_DXE3

        If MAKE_DXE3 is omitted, the makefile will not set the LD_LIBRARY_PATH
        environment variable and the compiled test programs will not be able to
        find and load the DXE3 modules.

3.6.:   To install the binaries and info docs run the following command from
        the directory where you have configured the sources:
          make install

        This will install the products into your DJGPP installation tree given
        by the default prefix "/dev/env/DJDIR".  If you prefer to install them
        into some other directory you will have to set prefix to the appropriate
        value:
          make install prefix=z:/some/other/place



        Send GNU Libiconv specific bug reports to <bug-gnu-libiconv@gnu.org>.
        Send suggestions and bug reports concerning the DJGPP port to
        comp.os.msdos.djgpp or <djgpp@delorie.com>.


Enjoy.

        Guerrero, Juan Manuel <juan.guerrero@gmx.de>
