Imported Upstream version 2.3.1
[platform/upstream/harfbuzz.git] / docs / html / building.html
index ea051f9..6454786 100644 (file)
@@ -2,13 +2,13 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Building: HarfBuzz Manual</title>
+<title>Building HarfBuzz: HarfBuzz Manual</title>
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="HarfBuzz Manual">
-<link rel="up" href="install-harfbuzz.html" title="Install HarfBuzz">
-<link rel="prev" href="install-harfbuzz.html" title="Install HarfBuzz">
-<link rel="next" href="hello-harfbuzz.html" title="Hello, HarfBuzz">
-<meta name="generator" content="GTK-Doc V1.27.1 (XML mode)">
+<link rel="up" href="install-harfbuzz.html" title="Installing HarfBuzz">
+<link rel="prev" href="install-harfbuzz.html" title="Installing HarfBuzz">
+<link rel="next" href="getting-started.html" title="Getting started with HarfBuzz">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="install-harfbuzz.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="install-harfbuzz.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="hello-harfbuzz.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="getting-started.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="building"></a>Building</h2></div></div></div>
+<a name="building"></a>Building HarfBuzz</h2></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="building.linux"></a>Building on Linux</h3></div></div></div>
+<p>
+      <span class="emphasis"><em>(1)</em></span> To build HarfBuzz on Linux, you must first install the
+      development packages for FreeType, Cairo, and GLib. The exact
+      commands required for this step will vary depending on
+      the Linux distribution you use.
+    </p>
 <p>
-      On Linux, install the development packages for FreeType, Cairo, and GLib.
-      For example, on Ubuntu / Debian, you would do:
+      For example, on an Ubuntu or Debian system, you would run:
       </p>
 <pre class="programlisting">
-<span class="command"><strong>sudo apt-get install</strong></span> <span class="package">gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</span>
+       <span class="command"><strong>sudo apt install</strong></span> <span class="package">gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev</span>
       </pre>
 <p>
-      whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
+      On Fedora, RHEL, CentOS, or other Red-Hat–based systems, you would run:
+      </p>
+<pre class="programlisting">
+       <span class="command"><strong>sudo yum install</strong></span> <span class="package">gcc gcc-c++ freetype-devel glib2-devel cairo-devel</span>
+      </pre>
+<p>
+
+    </p>
+<p>
+      <span class="emphasis"><em>(2)</em></span> The next step depends on whether you
+      are building from the source in a downloaded release tarball or
+      from the source directly from the git repository.
+    </p>
+<p>
+      <span class="emphasis"><em>(2)(a)</em></span> If you downloaded the HarfBuzz
+      source code in a tarball, you can now extract the source.
+    </p>
+<p>
+      From a shell in the top-level directory of the extracted source
+      code, you can run <span class="command"><strong>./configure</strong></span> followed by
+      <span class="command"><strong>make</strong></span> as with any other standard package.
+    </p>
+<p>
+      This should leave you with a shared
+      library in the <code class="filename">src/</code> directory, and a few
+      utility programs including <span class="command"><strong>hb-view</strong></span> and
+      <span class="command"><strong>hb-shape</strong></span> under the <code class="filename">util/</code>
+      directory.
+    </p>
+<p>
+      <span class="emphasis"><em>(2)(b)</em></span> If you are building from the source in the HarfBuzz git
+      repository, rather than installing from a downloaded tarball
+      release, then you must install two more auxiliary tools before you 
+      can build for the first time: <span class="package">pkg-config</span> and
+      <a class="ulink" href="http://www.complang.org/ragel/" target="_top">ragel</a>.
+    </p>
+<p>
+      On Ubuntu or Debian, run:
       </p>
 <pre class="programlisting">
-<span class="command"><strong>sudo yum install</strong></span> <span class="package">gcc gcc-c++ freetype-devel glib2-devel cairo-devel</span>
+       <span class="command"><strong>sudo apt-get install</strong></span> <span class="package">autoconf automake libtool pkg-config ragel gtk-doc-tools</span>
       </pre>
 <p>
-      or using MacPorts:
+      On Fedora, RHEL, CentOS, run:
       </p>
 <pre class="programlisting">
-<span class="command"><strong>sudo port install</strong></span> <span class="package">freetype glib2 cairo</span>
+       <span class="command"><strong>sudo yum install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
       </pre>
 <p>
+      
     </p>
 <p>
-      If you are using a tarball, you can now proceed to running
-      <span class="command"><strong>configure</strong></span> and <span class="command"><strong>make</strong></span> as with any
-      other standard package. That should leave you with a shared library in
-      <code class="filename">src/</code>, and a few utility programs including hb-view
-      and hb-shape under <code class="filename">util/</code>.
+      With <span class="package">pkg-config</span> and <span class="package">ragel</span>
+      installed, you can now run <span class="command"><strong>./autogen.sh</strong></span>,
+      followed by <span class="command"><strong>./configure</strong></span> and
+      <span class="command"><strong>make</strong></span> to build HarfBuzz.
     </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="building.windows"></a>Building on Windows</h3></div></div></div>
 <p>
-      If you are bootstrapping from git, you need a few more tools before you
-      can run <code class="filename">autogen.sh</code> for the first time. Namely,
-      pkg-config and <a class="ulink" href="http://www.complang.org/ragel/" target="_top">ragel</a>.
-      Again, on Ubuntu / Debian:
+       On Windows, consider using Microsoft's free <a class="ulink" href="https://github.com/Microsoft/vcpkg" target="_top">vcpkg</a> utility
+       to build HarfBuzz, its dependencies, and other open-source
+       libraries. 
+      </p>
+<p>
+       If you need to build HarfBuzz from source, first put the
+       <span class="package">ragel</span> binary on your
+       <code class="literal">PATH</code>, then follow the appveyor CI cmake
+       <a class="ulink" href="https://github.com/harfbuzz/harfbuzz/blob/master/appveyor.yml" target="_top">build
+       instructions</a>. 
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="building.macos"></a>Building on macOS</h3></div></div></div>
+<p>
+       There are two ways to build HarfBuzz on Mac systems: MacPorts
+       and Homebrew. The process is similar to the process used on a
+       Linux system.
+      </p>
+<p>
+       <span class="emphasis"><em>(1)</em></span> You must first install the
+       development packages for FreeType, Cairo, and GLib. If you are
+       using MacPorts, you should run:
       </p>
 <pre class="programlisting">
-<span class="command"><strong>sudo apt-get install</strong></span> <span class="package">autoconf automake libtool pkg-config ragel gtk-doc-tools</span>
+       <span class="command"><strong>sudo port install</strong></span> <span class="package">freetype glib2 cairo</span>
       </pre>
 <p>
-      and on Fedora, RHEL, CentOS:
       </p>
+<p>
+       If you are using Homebrew, you should run:
+       </p>
+<pre class="programlisting">   
+         <span class="command"><strong>brew install</strong></span> <span class="package">freetype glib cairo</span>
+       </pre>
+<p>
+      </p>
+<p>
+       <span class="emphasis"><em>(2)</em></span> The next step depends on whether you are building from the
+       source in a downloaded release tarball or from the source directly
+       from the git repository.
+      </p>
+<p>
+       <span class="emphasis"><em>(2)(a)</em></span> If you are installing HarfBuzz
+       from a downloaded tarball release, extract the tarball and
+       open a Terminal in the extracted source-code directory. Run:
+       </p>
 <pre class="programlisting">
-<span class="command"><strong>sudo yum install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
-      </pre>
+         <span class="command"><strong>./configure</strong></span>
+       </pre>
+<p>
+       followed by:
+       </p>
+<pre class="programlisting">   
+         <span class="command"><strong>make</strong></span>
+       </pre>
+<p>
+       to build HarfBuzz.
+      </p>
 <p>
-      or using MacPorts:
+       <span class="emphasis"><em>(2)(b)</em></span> Alternatively, if you are building
+       HarfBuzz from the source in the HarfBuzz git repository, then
+       you must install several built-time dependencies before
+       proceeding.
+      </p>
+<p>If you are
+       using MacPorts, you should run:
       </p>
 <pre class="programlisting">
-<span class="command"><strong>sudo port install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
+       <span class="command"><strong>sudo port install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span> 
       </pre>
 <p>
-    </p>
+      to install the build dependencies.
+      </p>
+<p>If you are using Homebrew, you should run:
+       </p>
+<pre class="programlisting">   
+         <span class="command"><strong>brew install</strong></span> <span class="package">autoconf automake libtool pkgconfig ragel gtk-doc</span>
+       </pre>
+<p>
+       Finally, you can run:
+       </p>
+<pre class="programlisting">
+         <span class="command"><strong>./autogen.sh</strong></span>
+       </pre>
+<p>
+      </p>
+<p>
+       <span class="emphasis"><em>(3)</em></span> You can now build HarfBuzz (on either
+       a MacPorts or a Homebrew system) by running:
+       </p>
+<pre class="programlisting">
+         <span class="command"><strong>./configure</strong></span>
+       </pre>
+<p>
+       followed by:
+       </p>
+<pre class="programlisting">
+         <span class="command"><strong>make</strong></span>
+       </pre>
+<p>
+      </p>
+<p>
+       This should leave you with a shared
+       library in the <code class="filename">src/</code> directory, and a few
+       utility programs including <span class="command"><strong>hb-view</strong></span> and
+       <span class="command"><strong>hb-shape</strong></span> under the <code class="filename">util/</code>
+       directory.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="configuration"></a>Configuration options</h3></div></div></div>
+<p>
+       The instructions in the "Building HarfBuzz" section will build
+       the source code under its default configuration. If needed,
+       the following additional configuration options are available.
+      </p>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-libstdc++</strong></span></span></p></td>
+<td>
+<p>
+             Allow linking with libstdc++. <span class="emphasis"><em>(Default = no)</em></span>
+           </p>
+<p>
+             This option enables or disables linking HarfBuzz to the
+             system's libstdc++ library.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-glib</strong></span></span></p></td>
+<td>
+<p>
+            Use <a class="ulink" href="https://developer.gnome.org/glib/" target="_top">GLib</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the GLib
+             library.  The default setting is to check for the
+             presence of GLib and, if it is found, build with
+             GLib support. GLib is native to GNU/Linux systems but is
+             available on other operating system as well.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-gobject</strong></span></span></p></td>
+<td>
+<p>
+             Use <a class="ulink" href="https://developer.gnome.org/gobject/stable/" target="_top">GObject</a>. <span class="emphasis"><em>(Default = no)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the GObject
+             library. The default setting is to check for the
+             presence of GObject and, if it is found, build with
+             GObject support. GObject is native to GNU/Linux systems but is
+             available on other operating system as well.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-cairo</strong></span></span></p></td>
+<td>
+<p>
+             Use <a class="ulink" href="https://cairographics.org/" target="_top">Cairo</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the Cairo
+             graphics-rendering library. The default setting is to
+             check for the presence of Cairo and, if it is found,
+             build with Cairo support.
+           </p>
+<p>
+             Note: Cairo is used only by the HarfBuzz
+             command-line utilities, and not by the HarfBuzz library.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-fontconfig</strong></span></span></p></td>
+<td>
+<p>
+             Use <a class="ulink" href="https://www.freedesktop.org/wiki/Software/fontconfig/" target="_top">Fontconfig</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the Fontconfig
+             library, which provides font-matching functions and
+             provides access to font properties. The default setting
+             is to check for the presence of Fontconfig and, if it is
+             found, build with Fontconfig support.
+           </p>
+<p>
+             Note: Fontconfig is used only by the HarfBuzz
+             command-line utilities, and not by the HarfBuzz library.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-icu</strong></span></span></p></td>
+<td>
+<p>
+             Use the <a class="ulink" href="http://site.icu-project.org/home" target="_top">ICU</a> library. <span class="emphasis"><em>(Default = auto)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the
+             <span class="emphasis"><em>International Components for
+             Unicode</em></span> (ICU) library, which provides access
+             to Unicode Character Database (UCD) properties as well
+             as normalization and conversion functions. The default
+             setting is to check for the presence of ICU and, if it
+             is found, build with ICU support.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-ucdn</strong></span></span></p></td>
+<td>
+<p>
+             Use HarfBuzz's <a class="ulink" href="https://github.com/harfbuzz/harfbuzz/tree/master/src/hb-ucdn" target="_top">built-in UCDN library</a>. <span class="emphasis"><em>(Default = auto)</em></span>
+           </p>
+<p>
+             The HarfBuzz source tree includes a <span class="emphasis"><em>Unicode
+             Database and Normalization</em></span> (UCDN) library
+             that provides access to basic character properties in
+             the Unicode Character Database (UCD) as well as low-level
+             normalization functions. HarfBuzz can be built without
+             this UCDN support if the usage of a different UCDN
+             library is desired.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-graphite2</strong></span></span></p></td>
+<td>
+<p>
+             Use the <a class="ulink" href="http://graphite.sil.org/" target="_top">Graphite2</a> library. <span class="emphasis"><em>(Default = no)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the Graphite2
+             library, which provides support for the Graphite shaping
+             model. 
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-freetype</strong></span></span></p></td>
+<td>
+<p>
+             Use the <a class="ulink" href="https://www.freetype.org/" target="_top">FreeType</a> library. <span class="emphasis"><em>(Default = auto)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the FreeType
+             font-rendering library. The default setting is to check for the
+             presence of FreeType and, if it is found, build with
+             FreeType support.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-uniscribe</strong></span></span></p></td>
+<td>
+<p>
+             Use the <a class="ulink" href="https://docs.microsoft.com/en-us/windows/desktop/intl/uniscribe" target="_top">Uniscribe</a>
+             library (experimental). <span class="emphasis"><em>(Default = no)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the Uniscribe
+             font-rendering library. Uniscribe is available on
+             Windows systems. Uniscribe support is used only for
+             testing purposes and does not need to be enabled for
+             HarfBuzz to run on Windows systems.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-directwrite</strong></span></span></p></td>
+<td>
+<p>
+             Use the <a class="ulink" href="https://docs.microsoft.com/en-us/windows/desktop/directwrite/direct-write-portal" target="_top">DirectWrite</a> library (experimental). <span class="emphasis"><em>(Default = no)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the DirectWrite
+             font-rendering library. DirectWrite is available on
+             Windows systems. DirectWrite support is used only for
+             testing purposes and does not need to be enabled for
+             HarfBuzz to run on Windows systems.
+           </p>
+</td>
+</tr>
+<tr>
+<td><p><span class="term"><span class="command"><strong>--with-coretext</strong></span></span></p></td>
+<td>
+<p>
+             Use the <a class="ulink" href="https://developer.apple.com/documentation/coretext" target="_top">CoreText</a> library. <span class="emphasis"><em>(Default = no)</em></span>
+           </p>
+<p>
+             This option enables or disables usage of the CoreText
+             library. CoreText is available on macOS and iOS systems.
+           </p>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.27.1</div>
+<hr>Generated by GTK-Doc V1.25</div>
 </body>
 </html>
\ No newline at end of file