<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % version-entities SYSTEM "version.entities">
%version-entities;
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
]>
<refentry id="gst-building" revision="25 mar 2009">
<refmeta>
<refentrytitle>Building GStreamer and GStreamer Applications</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GStreamer Core</refmiscinfo>
</refmeta>

<refnamediv>
<refname>Building GStreamer and GStreamer Applications</refname>
<refpurpose>
How to build the GStreamer framework and applications using it.
</refpurpose>
</refnamediv>

<refsect1>
<title>Building GStreamer on UNIX</title>

  <!-- this has been borrowed from the glib docs -->
  <para>
    On UNIX, GStreamer uses the standard GNU build system,
    using <application>autoconf</application> for package
    configuration and resolving portability issues,
    <application>automake</application> for building makefiles
    that comply with the GNU Coding Standards, and
    <application>libtool</application> for building shared
    libraries on multiple platforms.  The normal sequence for
    compiling and installing the GStreamer library is thus:

    <literallayout>
      <userinput>./configure</userinput>
      <userinput>make</userinput>
      <userinput>make install</userinput>
    </literallayout>
  </para>

  <para>
    The standard options provided by <application>GNU
    autoconf</application> may be passed to the
    <command>configure</command> script.  Please see the
    <application>autoconf</application> documentation or run
    <command>./configure --help</command> for information about
    the standard options.
  </para>

  <para>
    In addition there are several options to activate or deactivate features.
    E.g. passing <option>--disable-gst-debug</option> to <command>configure</command>
    will turn the debugging subsystem into a non-functional stub and remove all
    macro based invocations from within the library (and anything compiled
    against the library afterwards.)
  </para>
  <para>
    If library size matters and one builds in a controlled environment, it is
    also possible to totally remove subsystem code. This is intentionally not
    offered as a configure option as it causes an ABI break. Code built against
    a version of GStreamer without these modifications needs to be recompiled.

    <literallayout>
      <userinput>make CFLAGS="-DGST_REMOVE_DEPRECATED -DGST_REMOVE_DISABLED"</userinput>
    </literallayout>

    <itemizedlist>
      <listitem>
        <para>
          <symbol>GST_REMOVE_DEPRECATED</symbol> - Omit deprecated functions
          from the library.
        </para>
      </listitem>
      <listitem>
        <para>
          <symbol>GST_REMOVE_DISABLED</symbol> - Omit stubs for disabled
          subsystems from the library.
        </para>
      </listitem>
    </itemizedlist>
  </para>

</refsect1>

<refsect1>
<title>Building GStreamer Applications</title>

<para>
Applications and libraries can use <command>pkg-config</command> to get all the
needed compiler and linker flags to build against GStreamer. Please note that
GStreamer is split into several libraries itself.
<command>pkg-config --list-all | grep gstreamer</command> will list the
available libraries.
</para>

</refsect1>

</refentry>
