<chapter id="install-harfbuzz">
  <title>Install Harfbuzz</title>
  <section id="download">
    <title id="download.title">Download</title>
    <para>
      For tarball releases of HarfBuzz, look
      <ulink url="http://www.freedesktop.org/software/harfbuzz/release/">here</ulink>.
      At the same place you will
      also find Win32 binary bundles that include libharfbuzz DLL, hb-view.exe,
      hb-shape.exe, and all dependencies.
    </para>
    <para>
      The canonical source tree is available
      <ulink url="http://cgit.freedesktop.org/harfbuzz/">here</ulink>.
      Also available on <ulink url="https://github.com/behdad/harfbuzz">github</ulink>.
    </para>
    <para>
      The API that comes with <filename class='headerfile'>hb.h</filename> will
      not change incompatibly. Other, peripheral, headers are more likely to go
      through minor modifications, but again, will do our best to never change
      API in an incompatible way. We will never break the ABI.
    </para>
    <para>
      If you are not sure whether Pango or HarfBuzz is right for you, read
      <ulink url="http://mces.blogspot.in/2009/11/pango-vs-harfbuzz.html">this</ulink>.
    </para>
  </section>
  <section id="building">
    <title>Building</title>
    <para>
      On Linux, install the development packages for FreeType, Cairo, and GLib.
      For example, on Ubuntu / Debian, you would do:
      <programlisting>
<command>sudo apt-get install</command> <package>gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</package>
      </programlisting>
      whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
      <programlisting>
<command>sudo yum install</command> <package>gcc gcc-c++ freetype-devel glib2-devel cairo-devel</package>
      </programlisting>
      or using MacPorts:
      <programlisting>
<command>sudo port install</command> <package>freetype glib2 cairo</package>
      </programlisting>
    </para>
    <para>
      If you are using a tarball, you can now proceed to running
      <command>configure</command> and <command>make</command> as with any
      other standard package. That should leave you with a shared library in
      <filename>src/</filename>, and a few utility programs including hb-view
      and hb-shape under <filename>util/</filename>.
    </para>
    <para>
      If you are bootstraping from git, you need a few more tools before you
      can run <filename>autogen.sh</filename> for the first time. Namely,
      pkg-config and <ulink url="http://www.complang.org/ragel/">ragel</ulink>.
      Again, on Ubuntu / Debian:
      <programlisting>
<command>sudo apt-get install</command> <package>autoconf automake libtool pkg-config ragel gtk-doc-tools</package>
      </programlisting>
      and on Fedora, RHEL, CentOS:
      <programlisting>
<command>sudo yum install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
      </programlisting>
      or using MacPorts:
      <programlisting>
<command>sudo port install</command> <package>autoconf automake libtool pkgconfig ragel gtk-doc</package>
      </programlisting>
    </para>
  </section>
</chapter>
