Simple install procedure
========================

  % gzip -cd glib-2.0.1.tar.gz | tar xvf -  # unpack the sources
  % cd glib-2.0.1                           # change to the toplevel directory
  % ./configure                             # run the `configure' script
  % make                                    # build GLIB

  [ Become root if necessary ]
  % rm -rf /install-prefix/include/glib.h /install-prefix/include/gmodule.h
  % make install                            # install GLIB

Requirements
============

GLib-2.0 requires pkg-config, which is tool for tracking the
compilation flags needed for libraries. (For each library, a small .pc
text file is installed in a standard location that contains the
compilation flags needed for that library along with version number
information.) Information about pkg-config can be found at:

  http://www.freedesktop.org/software/pkgconfig/

GNU make (http://www.gnu.org/software/make) is also recommended.

In order to implement conversions between character sets,
GLib requires an implementation of the standard iconv() routine.
Most modern systems will have a suitable implementation, however
many older systems lack an iconv() implementation. On such systems, 
you must install the libiconv library. This can be found at:

 http://www.gnu.org/software/libiconv/

If your system has an iconv implementation but you want to use
libiconv instead, you can pass the --with-libiconv option to
configure. This forces libiconv to be used. 

Note that if you have libiconv installed in your default include
search path (for instance, in /usr/local/), but don't enable
it, you will get an error while compiling GTK+ because the
iconv.h that libiconv installs hides the system iconv.

Finally, for message catalog handling, GTK+ requires an implementation
of gettext(). If your system doesn't provide this functionality,
you should use the libintl library from the GNU gettext package,
available from:

 http://www.gnu.org/software/gettext/

The Nitty-Gritty
================

The 'configure' script can be given a number of options to enable
and disable various features. For a complete list, type:

  ./configure --help

A few of the more important ones:

*  --prefix=PREFIX         install architecture-independent files in PREFIX
                           [ Defaults to /usr/local ]

*  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                           [ Defaults to the value given to --prefix ]

*  --enable-gc-friendly    When enabled all memory freed by the application,
                           but retained by GLib for performance reasons  
                           is set to zero, thus making deployed garbage
                           collection or memory profiling tools detect 
                           unlinked memory correctly. This will make GLib 
                           slightly slower.
                           [ Disabled by default ]

* --disable-threads        Do not compile GLib to be multi thread safe. GLib
                           will be slightly faster then. This is however not
                           recommended, as many programs rely on GLib being 
                           multi thread safe.
                           [ Enabled by default ]

* --with-threads=[none/posix/dce/solaris/win32] Specify a thread 
                           implementation to use. 
                           * 'posix' and 'dce' can be used interchangeable 
                             to mean the different versions of posix 
                             threads. configure tries to find out, which 
                             one is installed. 
                           * 'solaris' uses the native Solaris thread
                             implementation. 
                           * 'none' means that GLib will be thread safe, 
                             but does not have a default thread 
                             implementation. This has to be supplied to 
                             g_thread_init() by the programmer. 
                           [ Determined by configure by default ]

Options can be given to the compiler and linker by setting
environment variables before running configure. A few of the more
important ones:

 CC       : The C compiler to use
 CPPFLAGS : Flags for the C preprocesser such as -I and -D
 CFLAGS   : C compiler flags

The most important use of this is to set the
optimization/debugging flags. For instance, to compile with no
debugging information at all, run configure as:

 CFLAGS=-O2 ./configure           # Bourne compatible shells (sh/bash/zsh)

or,

 setenv CFLAGS -O2 ; ./configure  # csh and variants


Installation directories
========================

The location of the installed files is determined by the --prefix
and --exec-prefix options given to configure. There are also more
detailed flags to control individual directories. However, the
use of these flags is not tested.

One particular detail to note, is that the architecture-dependent
include file glibconfig.h is installed in:

  $exec_prefix/lib/glib/include/

if you have a version in $prefix/include, this is out of date
and should be deleted.

.pc files for the various libraries are installed in 
$exec_prefix/lib/pkgconfig to provide information when compiling
other packages that depend on GTK+. If you set PKG_CONFIG_PATH
so that it points to this directory, then you can get the 
correct include flags and library flags for compiling a GLib
application with:

 pkg-config --cflags glib-2.0
 pkg-config --libs glib-2.0

