+PKG_CHECK_MODULES(ICU, icu, have_icu=true, [
+ have_icu=true
+ AC_CHECK_HEADERS(unicode/uchar.h,, have_icu=false)
+ AC_MSG_CHECKING([for libicuuc])
+ LIBS_old=$LIBS
+ LIBS="$LIBS -licuuc"
+ AC_TRY_LINK([#include <unicode/uchar.h>],
+ [u_getIntPropertyValue (0, (UProperty)0);],
+ AC_MSG_RESULT(yes),
+ AC_MSG_RESULT(no);have_icu=false)
+ LIBS=$LIBS_old
+ if $have_icu; then
+ ICU_CFLAGS=-D_REENTRANT
+ ICU_LIBS="-licuuc"
+ AC_SUBST(ICU_CFLAGS)
+ AC_SUBST(ICU_LIBS)
+ fi
+])
+if $have_icu; then
+ AC_DEFINE(HAVE_ICU, 1, [Have ICU library])
+fi
+AM_CONDITIONAL(HAVE_ICU, $have_icu)
+
+dnl ==========================================================================
+
+PKG_CHECK_MODULES(GRAPHITE2, graphite2, have_graphite=true, have_graphite=false)
+if $have_graphite; then
+ AC_DEFINE(HAVE_GRAPHITE2, 1, [Have Graphite library])
+fi
+AM_CONDITIONAL(HAVE_GRAPHITE2, $have_graphite)
+
+dnl ==========================================================================
+
+PKG_CHECK_MODULES(FREETYPE, freetype2 >= 2.3.8, have_freetype=true, have_freetype=false)
+if $have_freetype; then
+ AC_DEFINE(HAVE_FREETYPE, 1, [Have FreeType 2 library])
+ _save_libs="$LIBS"
+ _save_cflags="$CFLAGS"
+ LIBS="$LIBS $FREETYPE_LIBS"
+ CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
+ AC_CHECK_FUNCS(FT_Face_GetCharVariantIndex)
+ LIBS="$_save_libs"
+ CFLAGS="$_save_cflags"
+fi
+AM_CONDITIONAL(HAVE_FREETYPE, $have_freetype)
+
+dnl ===========================================================================
+
+AC_CHECK_HEADERS(usp10.h windows.h, have_uniscribe=true, have_uniscribe=false)
+if $have_uniscribe; then
+ UNISCRIBE_CFLAGS=
+ UNISCRIBE_LIBS="-lusp10 -lgdi32"
+ AC_SUBST(UNISCRIBE_CFLAGS)
+ AC_SUBST(UNISCRIBE_LIBS)
+ AC_DEFINE(HAVE_UNISCRIBE, 1, [Have Uniscribe backend])
+fi
+AM_CONDITIONAL(HAVE_UNISCRIBE, $have_uniscribe)
+
+dnl ===========================================================================
+
+AC_CACHE_CHECK([for Intel atomic primitives], hb_cv_have_intel_atomic_primitives, [
+ hb_cv_have_intel_atomic_primitives=false
+ AC_TRY_LINK([], [
+ void memory_barrier (void) { __sync_synchronize (); }
+ int atomic_add (int i) { return __sync_fetch_and_add (&i, 1); }
+ int atomic_cmpxchg (int *i, int *j, int *k) { return __sync_bool_compare_and_swap (&i, j, k); }
+ ], hb_cv_have_intel_atomic_primitives=true
+ )
+])
+if $hb_cv_have_intel_atomic_primitives; then
+ AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
+fi
+
+dnl ===========================================================================
+