************************************************************************
         HDF5 Build and Install Instructions for Cygwin
************************************************************************

This document is an instruction on how to build, test and install HDF5 library
on Cygwin.

NOTE: HDF5 2.0 and later requires CMake for building. See INSTALL_CMake.txt
      for complete build instructions using CMake Presets (recommended method).

Preconditions:
--------------

1. Cygwin 3.5.1 or higher Installed

   To install the Cygwin net release, go to http://www.cygwin.com and
   click on "setup-x86_64.exe" under the heading
    "Current Cygwin DLL version". This will download a GUI
   installer called setup-x86_64.exe which can be run to download a complete
   Cygwin installation via the internet. Then follow the instructions
   on each screen to install Cygwin.

   Cygwin uses packages to manage installing various software. Users can
   choose to install or uninstall certain packages by running setup.exe.
   http://www.cygwin.com/packages/ provides detailed information about
   Cygwin packages.

   Most required dependencies can be satisfied by installing all packages in
   the "Devel" category.  However, please verify that you have installed all
   packages listed below.

2. Compilers, Libraries and Utilities Installed

   2.1 Compilers Supported

    The following compilers are supported by HDF5 and included in the Cygwin
    package system:
       gcc, which includes:
            gcc-core    : C compiler
            gcc-g++     : C++ compiler
            gcc-fortran : Fortran compiler


   2.1.1 Using Compilers Not Supported

       By default the current configuration uses vendor compilers; to use
        another compiler run the following commands before running
        configure:

        setenv CC   "foo -flags"
        setenv FC  "fffoo -flags"

       For example, if users want to use pgf90 as fortran compiler, then

            setenv FC pgf90

        See the configure help page (configure --help) for a list of
        environment variables that have an affect on building the
        library.

    2.2 HDF5 External Library Dependencies

    2.2.1 zlib

         zlib-1.2.8 or later is supported and tested.

    2.2.2 Szip

         libaec-1.1.2 or later is supported and tested.

    2.3 Additional Utilities

    The following standard utilities are also required to build and test HDF5:

        bison           : yacc implementation
        flex            : flex utility
        make            : make utility

    2.4 Alternate Build Process

    Download the CMake package and follow the notes in the "INSTALL_CMake.txt"
    file to build HDF5 with the CMake utilities.



Build, Test and Install HDF5 on Cygwin
--------------------------------------

1. Get HDF5 source code package
   Users can download the HDF5 source code from the official GitHub repository
   (https://github.com/HDFGroup/hdf5).

2. Unpacking the distribution

   The HDF5 source code is distributed in a variety of formats which
   can be unpacked with the following commands, each of which creates
   an `hdf5-2.0.x' directory.

   2.1 Non-compressed tar archive (*.tar)

          $ tar xf hdf5-2.0.x.tar

   2.2 Gzip'd tar archive (*.tar.gz)

          $ gunzip < hdf5-2.0.x.tar.gz | tar xf -

   2.3 Bzip'd tar archive (*.tar.bz2)

          $ bunzip2 < hdf5-2.0.x.tar.bz2 | tar xf -

2. Setup Environment

    In Cygwin, most compilers and setting are automatically detected during
    the configure script. However, if you are building Fortran, we recommend
    that you explicitly set the "FC" variable in your environment to use the
    gfortran compiler. For example, issue the command:

          $ export FC=gfortran

3. Follow build and test steps in the INSTALL_CMake.txt file.

4. Check installed HDF5 library

   After step 6, go to your installation directory, there should be
   three subdirectories: "bin" "include" and "lib".

5. Known Problems

   cache_api tests may fail. This is a known issue with Cygwin.

   "make check" fails when building shared lib files is enabled.  The default
   on Cygwin has been changed to disable shared.  It can be enabled with
   the BUILD_SHARED_LIBS configure option but is likely to fail "make check"
   with GCC compilers.

-----------------------------------------------------------------------

    HDF Forum:     https://forum.hdfgroup.org/
    HDF Helpdesk:  https://help.hdfgroup.org/
