xref: /aosp_15_r20/external/harfbuzz_ng/BUILD.md (revision 2d1272b857b1f7575e6e246373e1cb218663db8a)
1*2d1272b8SAndroid Build Coastguard WorkerOn Linux, install the development packages for FreeType, Cairo, and GLib. For
2*2d1272b8SAndroid Build Coastguard Workerexample, on Ubuntu / Debian, you would do:
3*2d1272b8SAndroid Build Coastguard Worker
4*2d1272b8SAndroid Build Coastguard Worker    $ sudo apt-get install meson pkg-config ragel gtk-doc-tools gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev
5*2d1272b8SAndroid Build Coastguard Worker
6*2d1272b8SAndroid Build Coastguard Workerwhereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do:
7*2d1272b8SAndroid Build Coastguard Worker
8*2d1272b8SAndroid Build Coastguard Worker    $ sudo dnf install meson pkgconfig gtk-doc gcc gcc-c++ freetype-devel glib2-devel cairo-devel
9*2d1272b8SAndroid Build Coastguard Worker
10*2d1272b8SAndroid Build Coastguard Workerand on ArchLinux and Manjaro:
11*2d1272b8SAndroid Build Coastguard Worker
12*2d1272b8SAndroid Build Coastguard Worker    $ sudo pacman -Suy meson pkg-config ragel gcc freetype2 glib2 glib2-devel cairo
13*2d1272b8SAndroid Build Coastguard Worker
14*2d1272b8SAndroid Build Coastguard WorkerOn macOS:
15*2d1272b8SAndroid Build Coastguard Worker
16*2d1272b8SAndroid Build Coastguard Worker    brew install pkg-config ragel gtk-doc freetype glib cairo meson
17*2d1272b8SAndroid Build Coastguard Worker
18*2d1272b8SAndroid Build Coastguard WorkerThen use meson to build the project and run the tests, like:
19*2d1272b8SAndroid Build Coastguard Worker
20*2d1272b8SAndroid Build Coastguard Worker    meson build && ninja -Cbuild && meson test -Cbuild
21*2d1272b8SAndroid Build Coastguard Worker
22*2d1272b8SAndroid Build Coastguard WorkerOn Windows, meson can build the project like above if a working MSVC's cl.exe
23*2d1272b8SAndroid Build Coastguard Worker(`vcvarsall.bat`) or gcc/clang is already on your path, and if you use
24*2d1272b8SAndroid Build Coastguard Workersomething like `meson build --wrap-mode=default` it fetches and compiles most
25*2d1272b8SAndroid Build Coastguard Workerof the dependencies also.  It is recommended to install CMake either manually
26*2d1272b8SAndroid Build Coastguard Workeror via the Visual Studio installer when building with MSVC, using meson.
27*2d1272b8SAndroid Build Coastguard Worker
28*2d1272b8SAndroid Build Coastguard WorkerOur CI configurations are also a good source of learning how to build HarfBuzz.
29*2d1272b8SAndroid Build Coastguard Worker
30*2d1272b8SAndroid Build Coastguard WorkerThere is also amalgamated source provided with HarfBuzz which reduces whole process
31*2d1272b8SAndroid Build Coastguard Workerof building HarfBuzz to `g++ src/harfbuzz.cc -fno-exceptions` but there is
32*2d1272b8SAndroid Build Coastguard Workerno guarantee provided with buildability and reliability of features you get.
33