CHMLIB 0.40 Installation
=======================

-----
Linux/Unix and Windows (Cygwin)
-----

I. Relevant options:

   CHM_MT:              build library with synchronization for thread-safety
   CHM_USE_PREAD:       use pread instead of lseek/read
   CHM_USE_IO64:        support 64-bit file I/O

   Modify the INSTALLPREFIX to change the installation location.

    Except on platforms where they need to be disabled, I recommend leaving all
    three options enabled.  OS X, however, in particular, seems to need pread
    and io64 disabled.

II. autoconf/automake-style build

    ./configure [options]
    make
    su
    make install

III. old-style (plain Makefile) build

    cd src
    <edit Makefile.simple if necessary>
    make -f Makefile.old
    su
    make install

To use the library, see chm_lib.h, and the included example programs:

    test_chmLib.c
    enum_chmLib.c
    chm_http.c

-------
Windows (MSVC++, Win CE SDK)
-------

I. Relevant options:

   CHM_MT:              build library with synchronization for thread-safety

II. Windows Standard Build

    Unzip ChmLib-vs6.zip in the src directory, and open the ChmLib.dsw file in
    Developer Studio.  (This was developed on Developer Studio 6.  I don't know
    if that matters.)  You may wish to enable or disable certain features by
    adding preprocessor defines under the project settings dialog:

   CHM_MT:              build library with synchronization for thread-safety

   CHM_MT is enabled by default in the Windows build.

   The resultant library is called chmlib.lib.

   To use the library, see chm_lib.h, and the included example programs:

    test_chmLib.c
    enum_chmLib.c
    chm_http.c

  The example programs should also show up in the Visual Studio workspace,
  except for chm_http.  I don't know enough about Windows network programming
  to try to get that one working.  Other than that one, all the other examples
  run without any problems.

III. Windows CE Build

    Unzip ChmLib-ce.zip in the src directory.  I don't know much beyond that,
    as I have no familiarity with Windows CE, but this should be a good
    starting point.  These project files are from Rich Erwin, who also supplied
    the necessary code changes to get it running.

Sparc (Solaris)
---------------
    Andrew Hodgetts has gotten the library compilable and working on Sparc
Solaris machines, with CPUs ranging from a Sun4m (Sparc5) up through an
UltraSparcIII (SunFireV880).  He has managed the compilation using both GCC and
SunProC, although, he notes, some modification to the Makefile was required,
since SunProC does not understand the -fPIC flag, which GCC uses for Position
Independent Code.

MIPS (SGI Irix)
---------------
    Andrew Hodgetts has gotten the library compilable and working on SGI MIPS
machines running Irix; this was using only the standard MIPS compiler, not GCC.
He reported that the -n32 flag was required in the Makefile.  He also reported
that the MIPS compiler was fairly verbose with the warning messages, but that
the simple examples that came with the library seemed to work.

OS X
----
    Apparently, various people have gotten the library compiled for OS X.  From
what I've heard, the secret is to disable pread and io64, and possibly to use
the 'libtool' from fink, instead of the one included with the standard
developers kit.

BSD variants
----
    I've heard that the library has been compiled on BSD variants.  I haven't
heard of any particular difficulties.

Other Unix variants
-------------------
    The code has been written with an eye on portability.  Presently, I've only
personally compiled on Linux and Windows, albeit on a variety of Linux
configurations, but, as reported above, Andrew Hodgetts has reported successful
use of the library on both Solaris machines and MIPS machines..  After I get
version 0.3 out, I may try to get it compiling on some of the machines I have
at work.  This code may or may not compile out of the box with, for instance,
*BSD or other Unix variants.  I welcome any patches that increase the
portability of this code.

    Platforms that I have access to at work, and may attempt to support after
version 0.3:

        - AIX
        - maybe Tru64
