Behdad Esfahbod | e21921a | 2016-05-06 15:24:39 +0100 | [diff] [blame] | 1 | On Linux, install the development packages for FreeType, |
Ebrahim Byagowi | 2fb95a0 | 2015-10-19 22:02:12 +0330 | [diff] [blame] | 2 | Cairo, and GLib. For example, on Ubuntu / Debian, you would do: |
Bruce Mitchener | 4f6754a | 2018-01-03 00:15:18 +0700 | [diff] [blame] | 3 | |
Ebrahim Byagowi | 0fc52d3 | 2020-07-06 16:47:50 +0430 | [diff] [blame] | 4 | sudo apt-get install meson pkg-config ragel gtk-doc-tools gcc g++ libfreetype6-dev libglib2.0-dev libcairo2-dev |
Ebrahim Byagowi | 2fb95a0 | 2015-10-19 22:02:12 +0330 | [diff] [blame] | 5 | |
| 6 | whereas on Fedora, RHEL, CentOS, and other Red Hat based systems you would do: |
Bruce Mitchener | 4f6754a | 2018-01-03 00:15:18 +0700 | [diff] [blame] | 7 | |
Ebrahim Byagowi | 0fc52d3 | 2020-07-06 16:47:50 +0430 | [diff] [blame] | 8 | sudo dnf install meson pkgconfig gtk-doc gcc gcc-c++ freetype-devel glib2-devel cairo-dev |
Ebrahim Byagowi | 2fb95a0 | 2015-10-19 22:02:12 +0330 | [diff] [blame] | 9 | |
Ebrahim Byagowi | 0fc52d3 | 2020-07-06 16:47:50 +0430 | [diff] [blame] | 10 | and on ArchLinux and Manjaro: |
ebraminio | dfeccd0 | 2017-10-12 12:11:47 +0330 | [diff] [blame] | 11 | |
Ebrahim Byagowi | 0fc52d3 | 2020-07-06 16:47:50 +0430 | [diff] [blame] | 12 | sudo pacman -Suy meson pkg-config ragel gcc freetype2 glib2 cairo |
Bruce Mitchener | 4f6754a | 2018-01-03 00:15:18 +0700 | [diff] [blame] | 13 | |
Ebrahim Byagowi | 0fc52d3 | 2020-07-06 16:47:50 +0430 | [diff] [blame] | 14 | then use meson to build the project like `meson build && meson test -Cbuild`. |
Ebrahim Byagowi | 2fb95a0 | 2015-10-19 22:02:12 +0330 | [diff] [blame] | 15 | |
Ebrahim Byagowi | 28554cb | 2020-07-06 17:04:54 +0430 | [diff] [blame] | 16 | On macOS, `brew install pkg-config ragel gtk-doc freetype glib cairo meson` then use |
| 17 | meson like above. |
Bruce Mitchener | 4f6754a | 2018-01-03 00:15:18 +0700 | [diff] [blame] | 18 | |
Ebrahim Byagowi | e5dd7d3 | 2020-07-06 21:40:19 +0430 | [diff] [blame] | 19 | On Windows, meson can build the project like above if a working MSVC's cl.exe (`vcvarsall.bat`) |
| 20 | or gcc/clang is already on your path, and if you use something like `meson build --wrap-mode=default` |
| 21 | it fetches and compiles most of the dependencies also. |
Ebrahim Byagowi | 28554cb | 2020-07-06 17:04:54 +0430 | [diff] [blame] | 22 | |
Ebrahim Byagowi | b0a4860 | 2020-08-02 11:15:15 +0430 | [diff] [blame] | 23 | Our CI configurations is also a good source of learning how to build HarfBuzz. |
| 24 | |
Ebrahim Byagowi | e5dd7d3 | 2020-07-06 21:40:19 +0430 | [diff] [blame] | 25 | There is also amalgam source provided with HarfBuzz which reduces whole process of building |
| 26 | HarfBuzz like `g++ src/harfbuzz.cc -fno-exceptions` but there is not guarantee provided |
| 27 | with buildability and reliability of features you get. |