# Code Dependencies

&app; has a number of dependencies on other packages. If you install the dependencies using a package manager, be certain to install the development versions of the packages. The normal versions often lack the headers &app; needs to compile.

Some dependencies have other dependencies: for instance, GTK also needs glib2, atk, and pango to produce a fully linked executable. Different distributions also use differing dependencies, sometimes a package will depend on libxml2 on one system, but libexpat on another.

## Code Dependency Table

Name | Level | Version | Description | Explanation | apt-get package | RPM/Yum package | BSD package
--- | --- | --- | --- | --- | --- | --- | ---
Boost | Required | 1.32 or higher | Boost is a library of portable C++ classes and templates. | In &app;, Boost libraries are used extensively, primarily boost-gthread and boost-date-time. Boost is used for thread and mutext handling. | `libboost-thread-dev, libboost-date-time-dev libboost-dev` | `libboost-thread-devel, libboost-date-time-devel` | `boost-headers, boost-libs, or just boost`
AGG | Possibly Required | 2.4 or higher | AGG is the AntiGrain low-level 2D graphics library. | &app; requires the installation of at least one renderer. AGG is considered the best supported renderer for &app;. | `libagg-dev` | `agg-devel` | `agg`

OpenGL

Possibly Required

OpenGL is a standard specification defining a cross-language cross-platform API for writing applications which produce 3D and 2D graphics. It supports hardware acceleration. You can download a free implementation from http://www.mesa3d.org, although it doesn't support hardware acceleration.

&app; requires the installation of at least one renderer. If you don't have a hardware accelerated driver, you're better off using AGG for the renderer.

`libgl1-mesa-dev`

`libmesa-devel`

`mesa`

Cairo | Possibly Required |  | Cairo is a 2D graphics library with support for multiple output devices. It will automatically use graphic card acceleration when available, and has an experimental OpenGL backend. | &app; requires the installation of at least one renderer. Cairo is considered the least supported renderer for &app;. | `libcairo2-dev` | `cairo-devel` | `cairo`

GTK

Possibly Required

2.2 or higher

GTK is the GIMP Toolkit GUI library used by the GNOME desktop. It uses Cairo internally. Gtk enables better integration with Firefox, as well as better event handling and higher level GUI constructs like menus and dialog boxes.

&app; requires the installation of at least one GUI library. GTK is considered to be the best supported GUI library option for &app;.

`libgtk2.0-dev`

`gtk-devel`

`gtk+2`

GtkGlExt | Possibly Required |  | GtkGlExt integrates OpenGL into GTK. | This library is required in order to use the GTK GUI library in conjunction with the OpenGL renderer. | `libgtkglext1-dev` | `gtkglext-devel` | `gtkglext`

SDL

Possibly Required

The Simple DirectMedia Layer is a cross-platform multimedia library which provides abstraction for audio, graphics, sound and input APIs. SDL is available from http://www.libsdl.org.

&app; requires the installation of at least one GUI library. SDL may also be used as a sound handler regardless of whether it is employed as a GUI library. The GUI library is poorly supported in &app;, but the sound handler is the best supported in &app;.

`libsdl1.2-dev`

`SDL-devel`

`SDL-1.2`

FLTK | Possibly Required | 2.0 or higher | The Fast Light ToolKit is a portable GUI library which is intended as a replacement for the SDL GUI. | &app; requires the installation of at least one GUI library. FLTK may be used in conjunction with the Cairo and AGG renderers. | No distribution packages are available. | No distribution packages are available. | No distribution packages are available.
KDE | Possibly Required |  | Kdelibs is a collection of libraries needed to compile KDE applications. | &app; requires the installation of at least one GUI library. Kdelibs is also required for the Kpart plugin for Konqueror. | `kdelibs3-dev, kdebase-dev` | `kdelibs-devel, kdebase-devel` | `kdelibs, kdebase`
Gstreamer | Optional |  | Gstreamer is a video handler. | If you would like video playback, you must install one of the video handlers. | `libgstreamer0.8-dev` | `gstreamer-devel` | `gstreamer-0.10`
gst-ffmpeg | Possibly Required |  | gst-ffmpeg allows you to use the FFmpeg decoder with Gstreamer. | This package is required if you would like to use Gstreamer as a video handler. | `gstreamer0.8-ffmpeg-dev` | `gstreamer-ffmpeg-devel` | `gstreamer-ffmpeg`
FFmpeg | Possibly Required |  | FFmpeg is a video handler. | If you would like video playback, you must install one of the video handlers. When using the gstreamer-ffmpeg plugin, ffmpeg doesn't need to be installed, as it's part of the plugin. For systems without Gstreamer support, FFmpeg can be used directly. | `ffmpeg-dev` | `ffmpeg-devel` | `ffmpeg`
JPEG | Required |  | JPEG is a lossy image format which is heavily used for images. | This library is used for reading external JPEGs and JPEG data embedded in SWF files. | `libjpeg62-dev` | `libjpeg` | `jpeg`
PNG | Required |  | PNG is a patent-free image format which is comparable to GIF. | This library is used for loading external PNG images (part of the SWF8 specification) and for writing images in the PNG format. | `libpng12-dev` | `libpng` | `png`
GIF | Required |  | GIF is a common image format that should now be free of patent restrictions. GIF. | This library is used for loading external GIF images (part of the SWF8 specification). | `libungif-dev` | `libungif-devel` | `gif`
libcurl | Optional |  | libcurl is the multiprotocal file transfer library. | This library is used for URL downloading. | `libcurl4-gnutls` | `libcurl` | `curl`
Glib2 | Optional |  | Glib2 is a dependency of Gtk, and is a collection of commonly used functions. | This library is used for convenience. | `glib2-dev` | `glib2-devel` | `glib2`
Atk | Optional |  | Atk is a dependency of Gtk, and is used for accessibility support. | This library is used for accessiblity.. | `atk-dev` | `atk-devel` | `atk`
Pango | Optional |  | Pango is a dependency of Gtk, and is used for font handling. | This library is used for font handling. | `pango-dev` | `pango-devel` | `pango`
automake | Possibly Required | 1.6.0 | Automake is a tool for generating Makefile.in files. | This package is required to run autogen.sh, which is a requirement if you are using the development source from CVS. | `automake` | `automake` | `automake`
autoconf | Possibly Required | 2.59 | Autoconf is a package for generating configure scripts. | This package is required to run autogen.sh, which is a requirement if you are using the development source from CVS. | `autoconf` | `autoconf` | `autoconf`
gettext | Possibly Required | 0.14.6 | Gettext is part of the GNU Translation Project. | This package is required to run autogen.sh, which is a requirement if you are using the development source from CVS. | `gettext` | `gettext` | `gettext`
libtool | Possibly Required | 1.5.22 | This is a generic library support script. | This package is required to run autogen.sh, which is a requirement if you are using the development source from CVS. | `libtool` | `libtool` | `libtool`
libltdl | Required |  | GNU Libtool Dynamic Module Loader | This package is used to load gnash extensions | libltdl-dev | libtool-ltdl-devel | libtool
Xulrunner SDK | optional |  | Xulrunner SDK is needed to develop plugins for Firefox | This package is required to build npapi plugin | `xulrunner-dev` | `xulrunner-devel` | `xulrunner-devel`