# Source for Generalised Bitmap Module

This document should be used in conjunction with the main documentation.

## Portability

This is all portable 32 bit C code.

The source has recently been compiled on OS/2 using VisualAge C++ 3.0 (with CTC306, CTD302 and CTU304), Win32 using Visual C++ (version 4.0, 4.2, 5.0 and 6.0), 32 bit DOS using Watcom C/C++ version (10.6 and 11.0b) + CauseWay 1.3, AIX using xlc, and Linux using gcc 2.7.2.3 and egcs.

It should port to any modern 32 bit platform easily enough.

## Platform specific customisation

When you unzip the source package, you get a directory full of platform independant source files, and a few subdirectories containing platform dependant files. So your first step before building should be to copy the appropriate subdirectory into the main directory. eg: when building OS2

      copy os2
      nmake

The platform dependant files are basically just `makefile`s, and the configuration file for the JPEG source.

The UNIX `makefile` supports a variety of different UNIXes. By default it supports Linux, but can be made to work on other UNIXes such as AIX, HP-UX and SunOS by invoking GNU make with a macro defined. eg: to make for HP-UX :-

      make HP=1

On platforms which don't support `ifdef` etc. in their make programs (like GNU make does), you can use my Make Pre-Processor script, called `mpp`, to produce a suitable `makefile`. `mpp` is just a little `awk` script which evaluates `ifdef`s. It is available from my home page. eg:

      mpp makefile HP > makefile.HP
      make -f makefile.HP

## JPEG support

To build with JPEG support, you need the Independant JPEG Groups library version 6a installed in a directory somewhere.

You then edit/check that the makefile you are using references this directory correctly. There is a make variable called `IJG` which must point to the correct directory. On UNIX, use of this directory is indicated by passing JPEG=1 to make. On PCs, you uncomment the `IJG` definition to make it active.

When building with JPEG support, the build process works by copying a shrunk down `makefile` called `makeijgo` to wherever the IJG 6a is installed, and also a configuration file. It then builds the library using compiler switches suitable for building objects which are to be a part of the main GBM library.

So, to build GBM for AIX, with JPEG support, assuming that IJG points to a suitable directory, remembering that vanilla `make` on AIX doesn't support `ifdef` :-

      mpp makefile AIX JPEG > makefile.AIX
      make -f makefile.AIX

This documentation was written by the GBM author, Andy Key