<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/harfbuzz/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 bootstrapping 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>
