= Build instructions =

== From a distribution tarball ==

Building this package from a distribution tarball should be as simple as:

-------------------------------------------
    ./configure
    make check
-------------------------------------------

The "make check" command builds the software, then runs regression tests.

Note that automake currently generates Makefiles containing some GNUmake
specific syntax.  If you're having troubles building with your system
provided make, please install GNU make and try rebuilding.

Install with "make install".

== From the version-control repository ==

giflib presently uses autoconf, automake, and libtool in order to build
shared libraries for a wide variety of platforms.  The distributed tarball has
files prebuilt from these tools.  The repository does not.  If you want to
build giflib you will need to have these tools available.  

You will also need xmlto to build the derived forms of the
documentation from the DocBook-XML sources.  If you are going no
modify the website, you will also need to have asciidoc and the
ImageMagick convert(1) utility installed.

The build and test procedure is:

-------------------------------------------
   ./autogen.sh
   make check
-------------------------------------------

As before, install with "make install".

== Testing ==

You can run "make check" after the library and utilities have been built
to see a regression test of the codebase. No output (other than
the test header lines) is good news.

== Debugging ==

Because autotools (and libtool in particular) are perversely horrible,
you may need to configure with "--disable-shared" to get actual 
binaries that can be fed to gdb.

== Portability note ==

This codebase now assumes your compiler is C99-conformant.  If it
isn't, the most likely trouble spot is "#include <stdint.h>"; your
compiler may be looking for "inttypes.h" instead.  If your compiler
has a C99 conformance option, turn it on.

== Release Procedure ==

1. Check the SourceForge tracker for bugs and patches.

2. Run a Coverity scan before shipping.

3. The version needs to be bumped in two places, configure.ac
and lib/gif_lib.h.

4. Version-stamp the top entry in the NEWS file. 

5. The shared-library version is also set in configure.ac and must
   be bumped if object or source-API compatibility changes.

6. If you are changing major versions, sync the XBS-SourceForge-Folder
attribute in the control file.

7. 'make distcheck' to verify the build and make a tarball.

8. Tag the release in the repo.

9. Ship the release tarball.

The last three steps can be done with "make release" if you have shipper
installed.

