GStreamer uses a *large* array of tools and libraries, most of which are
optional.  We have attempted to make sure that any code that depends on
optional libraries doesn't get built unless you have those libraries.  If
you find this not to be the case, please, let us know by filing a bug
report at http://sourceforge.net/bugs/?group_id=1936.


Required libraries:
===================

glib2
libxml2         (also called gnome-xml, available from http://xmlsoft.org/)

These libraries are all central parts of gnome, and are available from the
ftp.gnome.org or its mirrors, amongst other places.


Optional libraries for Plugins:
==============================

The vast number of optional libraries that can be used for plugins are
listed in the REQUIREMENTS document in the gst-plugins package.


Required tools:
===============

bison >= 1.35
flex

An extra set of tools is required if you wish to build GStreamer out of
CVS (using autogen.sh):

autoconf 2.52
automake 1.6
libtool v1.4 or better
pkgconfig 0.9.0 (http://www.freedesktop.org/software/pkgconfig/)


Optional tools:
===============

gtkdoc
db2html
fig2dev
xsltproc

To build pdf and ps version of docs
===================================
passivetex
xmltex
tetex-dvips

Optional debian packages:
=========================

(This is an incomplete list, made only of problems which have been reported,
rather than by an audit.)
task-helix-gnome-dev   OR libgnome-dev

gtk-doc-tools 0.4-0.2  -- needed to build documentation

Alternatively, the docbook-gnome-bin package, which is available by adding the
following lines to apt's sources.list (/etc/apt/sources.list):

deb ftp://ftp.home-of-linux.org/pub/debian gnome/
deb-src ftp://ftp.home-of-linux.org/pub/debian gnome/
