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

  % gzip -cd glib-2.15.5.tar.gz | tar xvf -  # unpack the sources
  % cd glib-2.15.5                           # 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 GLib because the
iconv.h that libiconv installs hides the system iconv.

If you are using the native iconv implementation on Solaris
instead of libiconv, you'll need to make sure that you have 
the converters between locale encodings and UTF-8 installed.
At a minimum you'll need the SUNWuiu8 package. You probably
should also install the SUNWciu8, SUNWhiu8, SUNWjiu8, and
SUNWkiu8 packages.

The native iconv on Compaq Tru64 doesn't contain support for
UTF-8, so you'll need to use GNU libiconv instead. (When
using GNU libiconv for GLib, you'll need to use GNU libiconv
for GNU gettext as well.) This probably applies to related
operating systems as well.

Finally, for message catalog handling, GLib 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/


Support for extended attributes and SELinux in GIO requires
libattr and libselinux. 


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

Complete information about installing GLib can be found 
in the file:
  
 docs/reference/glib/html/glib-building.html
  
Or online at:
  
 http://developer.gnome.org/doc/API/2.0/glib/glib-building.html


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 GLib. 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


Cross-compiling GLib
====================

Information about cross-compilation of GLib can be found 
in the file:
  
 docs/reference/glib/html/glib-cross-compiling.html
  
Or online at:
