blob: af0950f5365578f4ca8b30e1459e128794f5aebf [file] [log] [blame]
Javier Jardón2abe1262011-01-09 22:18:53 -05001AC_PREREQ([2.64])
Behdad Esfahbod8c5f5e62012-06-17 14:58:59 -04002AC_INIT([HarfBuzz],
Behdad Esfahbod05686b52013-02-25 18:19:20 -05003 [0.9.13],
Javier Jardón2abe1262011-01-09 22:18:53 -05004 [http://bugs.freedesktop.org/enter_bug.cgi?product=harfbuzz],
5 [harfbuzz],
Behdad Esfahbod5b21eff2011-05-25 14:49:35 -04006 [http://harfbuzz.org/])
Javier Jardón2abe1262011-01-09 22:18:53 -05007
Behdad Esfahbodc7afac02012-10-02 14:44:47 -04008AC_CONFIG_MACRO_DIR([m4])
Behdad Esfahbod29aa4002009-11-02 16:28:39 -05009AC_CONFIG_SRCDIR([harfbuzz.pc.in])
10AC_CONFIG_HEADERS([config.h])
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050011
Behdad Esfahbod52d66c22013-02-04 23:31:24 -050012AM_INIT_AUTOMAKE([1.11.1 gnits dist-bzip2 no-dist-gzip -Wall no-define color-tests])
Javier Jardón2abe1262011-01-09 22:18:53 -050013AM_SILENT_RULES([yes])
14
Behdad Esfahbodc62e41b2012-01-27 02:20:58 -050015# Initialize libtool
Behdad Esfahboda8ac1d32013-03-06 20:05:34 -050016AM_PROG_AR
Behdad Esfahbodc62e41b2012-01-27 02:20:58 -050017LT_PREREQ([2.2])
18LT_INIT([disable-static])
19
Javier Jardón2abe1262011-01-09 22:18:53 -050020# Check for programs
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050021AC_PROG_CC
Behdad Esfahbod01098162010-10-05 18:36:45 -040022AM_PROG_CC_C_O
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050023AC_PROG_CXX
Behdad Esfahbodc7afac02012-10-02 14:44:47 -040024PKG_PROG_PKG_CONFIG([0.20])
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050025
Behdad Esfahbodc78f4482011-05-05 21:31:04 -040026# Version
Behdad Esfahbod329c1572011-05-25 16:07:07 -040027m4_define(hb_version_triplet,m4_split(AC_PACKAGE_VERSION,[[.]]))
28m4_define(hb_version_major,m4_argn(1,hb_version_triplet))
29m4_define(hb_version_minor,m4_argn(2,hb_version_triplet))
30m4_define(hb_version_micro,m4_argn(3,hb_version_triplet))
31HB_VERSION_MAJOR=hb_version_major
32HB_VERSION_MINOR=hb_version_minor
33HB_VERSION_MICRO=hb_version_micro
Behdad Esfahbodc78f4482011-05-05 21:31:04 -040034HB_VERSION=AC_PACKAGE_VERSION
Behdad Esfahbodc78f4482011-05-05 21:31:04 -040035AC_SUBST(HB_VERSION_MAJOR)
36AC_SUBST(HB_VERSION_MINOR)
37AC_SUBST(HB_VERSION_MICRO)
38AC_SUBST(HB_VERSION)
39
Behdad Esfahbod329c1572011-05-25 16:07:07 -040040# Libtool version
41m4_define([hb_version_int],
42 m4_eval(hb_version_major*10000 + hb_version_minor*100 + hb_version_micro))
43m4_if(m4_eval(hb_version_minor % 2), [1],
44 dnl for unstable releases
45 [m4_define([hb_libtool_revision], 0)],
46 dnl for stable releases
47 [m4_define([hb_libtool_revision], hb_version_micro)])
48m4_define([hb_libtool_age],
49 m4_eval(hb_version_int - hb_libtool_revision))
50m4_define([hb_libtool_current],
51 m4_eval(hb_version_major + hb_libtool_age))
52HB_LIBTOOL_VERSION_INFO=hb_libtool_current:hb_libtool_revision:hb_libtool_age
53AC_SUBST(HB_LIBTOOL_VERSION_INFO)
Behdad Esfahbodc78f4482011-05-05 21:31:04 -040054
Behdad Esfahbod8c0ea7b2012-06-24 13:20:56 -040055dnl GOBJECT_INTROSPECTION_CHECK([0.9.0])
Behdad Esfahbod95ab82a2012-01-15 14:56:56 -050056dnl GTK_DOC_CHECK([1.15],[--flavour no-tmpl])
Behdad Esfahbodb9b10ad2011-09-13 13:30:39 -040057
Behdad Esfahbod174e3fe2011-05-05 19:37:53 -040058# Functions and headers
Behdad Esfahbode2aab4b2013-02-12 15:35:32 -050059AC_CHECK_FUNCS(atexit mprotect sysconf getpagesize mmap isatty)
60AC_CHECK_HEADERS(unistd.h sys/mman.h)
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050061
Behdad Esfahbod174e3fe2011-05-05 19:37:53 -040062# Compiler flags
Behdad Esfahbodc78f4482011-05-05 21:31:04 -040063AC_CANONICAL_HOST
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050064if test "x$GCC" = "xyes"; then
Behdad Esfahbod5b7f3892011-04-27 15:10:12 -040065
Behdad Esfahbod71cef142011-05-06 19:30:59 -040066 # Make symbols link locally
67 LDFLAGS="$LDFLAGS -Bsymbolic-functions"
68
Behdad Esfahbod5b7f3892011-04-27 15:10:12 -040069 # Make sure we don't link to libstdc++
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050070 CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions"
Behdad Esfahbod5b7f3892011-04-27 15:10:12 -040071
Behdad Esfahbod11c4ad42012-07-13 11:29:31 -040072 # Assorted warnings
73 CXXFLAGS="$CXXFLAGS -Wcast-align"
74
Behdad Esfahbod5b7f3892011-04-27 15:10:12 -040075 case "$host" in
Behdad Esfahbod560d68a2012-08-08 17:16:01 -040076 *-*-mingw*)
Behdad Esfahbode3320ec2012-08-06 11:44:10 -070077 ;;
78 *)
79 # Hide inline methods
80 CXXFLAGS="$CXXFLAGS -fvisibility-inlines-hidden"
81 ;;
82 esac
83
84 case "$host" in
Behdad Esfahbod5b7f3892011-04-27 15:10:12 -040085 arm-*-*)
86 # Request byte alignment on arm
87 CXXFLAGS="$CXXFLAGS -mstructure-size-boundary=8"
88 ;;
89 esac
Behdad Esfahbod29aa4002009-11-02 16:28:39 -050090fi
91
Behdad Esfahbode7846322013-01-14 00:27:21 -060092AM_CONDITIONAL(HAVE_GCC, test "x$GCC" = "xyes")
93
Behdad Esfahbod0e292eb2012-10-02 14:59:00 -040094hb_os_win32=no
Behdad Esfahbod560d68a2012-08-08 17:16:01 -040095AC_MSG_CHECKING([for native Win32])
96case "$host" in
97 *-*-mingw*)
98 hb_os_win32=yes
99 ;;
Behdad Esfahbod560d68a2012-08-08 17:16:01 -0400100esac
101AC_MSG_RESULT([$hb_os_win32])
102AM_CONDITIONAL(OS_WIN32, test "$hb_os_win32" = "yes")
103
Behdad Esfahbod66efe892012-10-02 14:55:32 -0400104have_pthread=false
Behdad Esfahbod0e292eb2012-10-02 14:59:00 -0400105if test "$hb_os_win32" = no; then
106 AX_PTHREAD([have_pthread=true])
107fi
Behdad Esfahbod66efe892012-10-02 14:55:32 -0400108if $have_pthread; then
109 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
110fi
111AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
112
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500113dnl ==========================================================================
114
Behdad Esfahbod68c75b42012-06-05 19:55:46 -0400115have_ot=true
116if $have_ot; then
117 AC_DEFINE(HAVE_OT, 1, [Have native OpenType Layout backend])
118fi
119AM_CONDITIONAL(HAVE_OT, $have_ot)
120
121dnl ===========================================================================
122
Behdad Esfahbod8fe4c742012-07-24 21:05:12 -0400123have_hb_old=true
124if $have_hb_old; then
125 AC_DEFINE(HAVE_HB_OLD, 1, [Have Old HarfBuzz backend])
126fi
127AM_CONDITIONAL(HAVE_HB_OLD, $have_hb_old)
128
129dnl ===========================================================================
130
Behdad Esfahbod3f33f0d2012-10-02 16:03:18 -0400131have_ucdn=true
132if $have_ucdn; then
133 AC_DEFINE(HAVE_UCDN, 1, [Have UCDN Unicode functions])
134fi
135AM_CONDITIONAL(HAVE_UCDN, $have_ucdn)
136
137dnl ===========================================================================
138
Behdad Esfahbode6a5b882011-05-05 16:24:42 -0400139PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, have_glib=true, have_glib=false)
Behdad Esfahbodf94cf6b2009-11-02 18:55:19 -0500140if $have_glib; then
Behdad Esfahbodd94647e2009-11-03 16:35:10 -0500141 AC_DEFINE(HAVE_GLIB, 1, [Have glib2 library])
Behdad Esfahbodf94cf6b2009-11-02 18:55:19 -0500142fi
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500143AM_CONDITIONAL(HAVE_GLIB, $have_glib)
144
Behdad Esfahbodc214cff2011-08-14 15:17:16 +0200145PKG_CHECK_MODULES(GTHREAD, gthread-2.0, have_gthread=true, have_gthread=false)
146if $have_gthread; then
147 AC_DEFINE(HAVE_GTHREAD, 1, [Have gthread2 library])
148fi
149AM_CONDITIONAL(HAVE_GTHREAD, $have_gthread)
150
Behdad Esfahbod3d0ddd12012-01-15 15:55:52 -0500151PKG_CHECK_MODULES(GOBJECT, gobject-2.0 glib-2.0 >= 2.16, have_gobject=true, have_gobject=false)
Behdad Esfahbodc214cff2011-08-14 15:17:16 +0200152if $have_gobject; then
153 AC_DEFINE(HAVE_GOBJECT, 1, [Have gobject2 library])
Behdad Esfahbodd75333f2011-08-19 19:59:24 +0200154 GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
155 AC_SUBST(GLIB_MKENUMS)
Behdad Esfahbodc214cff2011-08-14 15:17:16 +0200156fi
157AM_CONDITIONAL(HAVE_GOBJECT, $have_gobject)
158
Behdad Esfahbod174e3fe2011-05-05 19:37:53 -0400159dnl ==========================================================================
160
Behdad Esfahbod5353bf42011-02-22 18:06:19 -0500161PKG_CHECK_MODULES(CAIRO, cairo >= 1.8.0, have_cairo=true, have_cairo=false)
162if $have_cairo; then
163 AC_DEFINE(HAVE_CAIRO, 1, [Have cairo graphics library])
164fi
165AM_CONDITIONAL(HAVE_CAIRO, $have_cairo)
166
Behdad Esfahbod5353bf42011-02-22 18:06:19 -0500167PKG_CHECK_MODULES(CAIRO_FT, cairo-ft, have_cairo_ft=true, have_cairo_ft=false)
168if $have_cairo_ft; then
169 AC_DEFINE(HAVE_CAIRO_FT, 1, [Have cairo-ft support in cairo graphics library])
170fi
171AM_CONDITIONAL(HAVE_CAIRO_FT, $have_cairo_ft)
172
Behdad Esfahbod174e3fe2011-05-05 19:37:53 -0400173dnl ==========================================================================
174
Behdad Esfahbodb161bfc2012-08-16 08:09:44 -0400175PKG_CHECK_MODULES(ICU, icu-uc, have_icu=true, have_icu=false)
Behdad Esfahbod14cfab52013-03-11 19:53:44 -0400176dnl Fallback to icu-config if ICU pkg-config files could not be found
177if test "$have_icu" != "true"; then
178 AC_PATH_PROG(icu_config, icu-config, no)
179 AC_MSG_CHECKING([for ICU by using icu-config fallback])
Behdad Esfahbod8226fb52013-03-19 05:22:27 -0400180 if test "$icu_config" != "no" && "$icu_config" --version >/dev/null; then
Behdad Esfahbod14cfab52013-03-11 19:53:44 -0400181 have_icu=true
182 # We don't use --cflags as this gives us a lot of things that we don't
183 # necessarily want, like debugging and optimization flags
184 # See man (1) icu-config for more info.
185 ICU_CFLAGS=`$icu_config --cppflags`
186 ICU_LIBS=`$icu_config --ldflags-libsonly`
187 AC_SUBST(ICU_CFLAGS)
188 AC_SUBST(ICU_LIBS)
189 AC_MSG_RESULT([yes])
190 else
191 AC_MSG_RESULT([no])
192 fi
193fi
194
Behdad Esfahbodd94647e2009-11-03 16:35:10 -0500195if $have_icu; then
Behdad Esfahbode5dbf392013-01-07 17:34:24 -0600196 CXXFLAGS="$CXXFLAGS `$PKG_CONFIG --variable=CXXFLAGS icu-uc`"
Behdad Esfahbodd94647e2009-11-03 16:35:10 -0500197 AC_DEFINE(HAVE_ICU, 1, [Have ICU library])
198fi
199AM_CONDITIONAL(HAVE_ICU, $have_icu)
200
Behdad Esfahbod46377392011-08-24 02:12:05 +0200201dnl ==========================================================================
Behdad Esfahbod1f49cf32011-08-24 01:29:25 +0200202
Behdad Esfahbod2f7586c2012-08-23 23:59:55 -0400203PKG_CHECK_MODULES(ICU_LE, icu-le icu-uc, have_icu_le=true, have_icu_le=false)
Behdad Esfahbod14cfab52013-03-11 19:53:44 -0400204dnl Fallback to icu-config if ICU pkg-config files could not be found
205if test "$have_icu_le" != "true"; then
206 AC_PATH_PROG(icu_config, icu-config, no)
207 AC_MSG_CHECKING([for ICU_LE by using icu-config fallback])
Behdad Esfahbod8226fb52013-03-19 05:22:27 -0400208 if test "$icu_config" != "no" && "$icu_config" --version >/dev/null; then
Behdad Esfahbod14cfab52013-03-11 19:53:44 -0400209 have_icu_le=true
210 # We don't use --cflags as this gives us a lot of things that we don't
211 # necessarily want, like debugging and optimization flags
212 # See man (1) icu-config for more info.
213 ICU_LE_CFLAGS=`$icu_config --cppflags`
214 ICU_LE_LIBS=`$icu_config --ldflags-libsonly --ldflags-layout`
215 AC_SUBST(ICU_LE_CFLAGS)
216 AC_SUBST(ICU_LE_LIBS)
217 AC_MSG_RESULT([yes])
218 else
219 AC_MSG_RESULT([no])
220 fi
221fi
Behdad Esfahbod7d242362012-08-23 21:23:41 -0400222if $have_icu_le; then
223 AC_DEFINE(HAVE_ICU_LE, 1, [Have ICU Layout Engine library])
224fi
225AM_CONDITIONAL(HAVE_ICU_LE, $have_icu_le)
226
227dnl ==========================================================================
228
Behdad Esfahbod6bd9b472012-04-12 14:53:53 -0400229PKG_CHECK_MODULES(GRAPHITE2, graphite2, have_graphite=true, have_graphite=false)
Behdad Esfahbod46377392011-08-24 02:12:05 +0200230if $have_graphite; then
Behdad Esfahbod6bd9b472012-04-12 14:53:53 -0400231 AC_DEFINE(HAVE_GRAPHITE2, 1, [Have Graphite library])
Behdad Esfahbod1f49cf32011-08-24 01:29:25 +0200232fi
Behdad Esfahbod6bd9b472012-04-12 14:53:53 -0400233AM_CONDITIONAL(HAVE_GRAPHITE2, $have_graphite)
Behdad Esfahbod46377392011-08-24 02:12:05 +0200234
235dnl ==========================================================================
Behdad Esfahbod174e3fe2011-05-05 19:37:53 -0400236
Behdad Esfahbod0b7e4d92011-08-15 20:41:59 +0200237PKG_CHECK_MODULES(FREETYPE, freetype2 >= 2.3.8, have_freetype=true, have_freetype=false)
Behdad Esfahbodf94cf6b2009-11-02 18:55:19 -0500238if $have_freetype; then
239 AC_DEFINE(HAVE_FREETYPE, 1, [Have FreeType 2 library])
Behdad Esfahbodcd11a982009-12-20 23:05:02 +0100240 _save_libs="$LIBS"
241 _save_cflags="$CFLAGS"
242 LIBS="$LIBS $FREETYPE_LIBS"
243 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
244 AC_CHECK_FUNCS(FT_Face_GetCharVariantIndex)
245 LIBS="$_save_libs"
246 CFLAGS="$_save_cflags"
Behdad Esfahbodf94cf6b2009-11-02 18:55:19 -0500247fi
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500248AM_CONDITIONAL(HAVE_FREETYPE, $have_freetype)
249
Behdad Esfahbodc78f4482011-05-05 21:31:04 -0400250dnl ===========================================================================
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500251
Behdad Esfahbod5e7e52d2012-12-10 17:44:22 -0500252AC_MSG_CHECKING([for ScriptShapeOpenType in usp10])
253saved_LIBS=$LIBS
254LIBS="$LIBS -lusp10 -lgdi32"
255AC_LINK_IFELSE([AC_LANG_PROGRAM(
256 [[
257 #define _WIN32_WINNT 0x0600
258 #include <windows.h>
259 #include <usp10.h>
260 ]],
261 ScriptShapeOpenType)],
262 [have_uniscribe=true; AC_MSG_RESULT(yes)],
263 [have_uniscribe=false;AC_MSG_RESULT(no)])
264LIBS=$saved_LIBS
Behdad Esfahbod0fbb2dc2011-08-03 19:55:04 -0400265if $have_uniscribe; then
266 UNISCRIBE_CFLAGS=
267 UNISCRIBE_LIBS="-lusp10 -lgdi32"
268 AC_SUBST(UNISCRIBE_CFLAGS)
269 AC_SUBST(UNISCRIBE_LIBS)
Behdad Esfahbod02aeca92011-08-04 22:31:05 -0400270 AC_DEFINE(HAVE_UNISCRIBE, 1, [Have Uniscribe backend])
Behdad Esfahbod0fbb2dc2011-08-03 19:55:04 -0400271fi
272AM_CONDITIONAL(HAVE_UNISCRIBE, $have_uniscribe)
273
Behdad Esfahbod04bc1ee2012-06-05 20:16:56 -0400274dnl ===========================================================================
275
John Rallsc48a04e2012-12-10 16:24:24 -0500276AC_CHECK_TYPE(CTFontRef, have_coretext=true, have_coretext=false, [#include <ApplicationServices/ApplicationServices.h>])
Jonathan Kewaa6d8492012-07-24 15:52:32 -0400277if $have_coretext; then
278 CORETEXT_CFLAGS=
Behdad Esfahbodae4d4e12012-08-26 14:27:44 -0400279 CORETEXT_LIBS="-framework ApplicationServices"
Jonathan Kewaa6d8492012-07-24 15:52:32 -0400280 AC_SUBST(CORETEXT_CFLAGS)
281 AC_SUBST(CORETEXT_LIBS)
282 AC_DEFINE(HAVE_CORETEXT, 1, [Have Core Text backend])
283fi
284AM_CONDITIONAL(HAVE_CORETEXT, $have_coretext)
285
286dnl ===========================================================================
287
Behdad Esfahbod04bc1ee2012-06-05 20:16:56 -0400288AC_CACHE_CHECK([for Intel atomic primitives], hb_cv_have_intel_atomic_primitives, [
289 hb_cv_have_intel_atomic_primitives=false
Behdad Esfahbod12f5c0a2012-06-26 11:16:13 -0400290 AC_TRY_LINK([
Behdad Esfahbod04bc1ee2012-06-05 20:16:56 -0400291 void memory_barrier (void) { __sync_synchronize (); }
Behdad Esfahbod12f5c0a2012-06-26 11:16:13 -0400292 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
293 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
294 void mutex_unlock (int *m) { __sync_lock_release (m); }
295 ], [], hb_cv_have_intel_atomic_primitives=true
Behdad Esfahbod04bc1ee2012-06-05 20:16:56 -0400296 )
297])
298if $hb_cv_have_intel_atomic_primitives; then
299 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
300fi
301
302dnl ===========================================================================
303
Behdad Esfahbod2dcb3332013-01-10 01:17:59 -0600304AC_CACHE_CHECK([for Solaris atomic operations], hb_cv_have_solaris_atomic_ops, [
305 hb_cv_have_solaris_atomic_ops=false
306 AC_TRY_LINK([
307 #include <atomic.h>
308 /* This requires Solaris Studio 12.2 or newer: */
309 #include <mbarrier.h>
310 void memory_barrier (void) { __machine_rw_barrier (); }
311 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
312 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
313 ], [], hb_cv_have_solaris_atomic_ops=true
314 )
315])
316if $hb_cv_have_solaris_atomic_ops; then
317 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
318fi
319
320if test "$os_win32" = no && ! $have_pthread; then
321 AC_CHECK_HEADERS(sched.h)
322 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
323fi
324
325dnl ===========================================================================
326
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500327AC_CONFIG_FILES([
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500328Makefile
Behdad Esfahbodc78f4482011-05-05 21:31:04 -0400329harfbuzz.pc
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500330src/Makefile
Behdad Esfahbodc78f4482011-05-05 21:31:04 -0400331src/hb-version.h
Behdad Esfahbod7d242362012-08-23 21:23:41 -0400332src/hb-icu-le/Makefile
Behdad Esfahbod3f33f0d2012-10-02 16:03:18 -0400333src/hb-old/Makefile
334src/hb-ucdn/Makefile
Behdad Esfahbod511a1362011-08-09 15:03:00 +0200335util/Makefile
Behdad Esfahbodbbdeff52011-04-07 16:05:07 -0400336test/Makefile
Behdad Esfahbod4d6dafd2012-01-19 14:52:02 -0500337test/api/Makefile
Behdad Esfahbodd4de5622012-01-19 15:21:04 -0500338test/shaping/Makefile
Behdad Esfahbod29aa4002009-11-02 16:28:39 -0500339])
340
341AC_OUTPUT
Behdad Esfahbodd16ddbc2012-12-20 01:02:36 -0500342
343AC_MSG_NOTICE([
344
345Build configuration:
346
347Unicode callbacks (you want at least one):
348 Glib: ${have_glib}
349 ICU: ${have_icu}
350 UCDN: ${have_ucdn}
351
352Font callbacks (the more the better):
353 FreeType: ${have_freetype}
354
355Tools used for command-line utilities:
356 Cairo: ${have_cairo}
357
358Additional shapers (the more the better):
359 Graphite2: ${have_graphite}
360
361Test / platform shapers (not normally needed):
362 CoreText: ${have_coretext}
363 ICU Layout Engine: ${have_icu_le}
364 Old HarfBuzz: ${have_hb_old}
365 Uniscribe: ${have_uniscribe}
366])