2 dnl fontconfig/configure.in
4 dnl Copyright © 2003 Keith Packard
6 dnl Permission to use, copy, modify, distribute, and sell this software and its
7 dnl documentation for any purpose is hereby granted without fee, provided that
8 dnl the above copyright notice appear in all copies and that both that
9 dnl copyright notice and this permission notice appear in supporting
10 dnl documentation, and that the name of the author(s) not be used in
11 dnl advertising or publicity pertaining to distribution of the software without
12 dnl specific, written prior permission. The authors make no
13 dnl representations about the suitability of this software for any purpose. It
14 dnl is provided "as is" without express or implied warranty.
16 dnl THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17 dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18 dnl EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19 dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20 dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21 dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22 dnl PERFORMANCE OF THIS SOFTWARE.
24 dnl Process this file with autoconf to create configure.
28 dnl ==========================================================================
30 dnl ==========================================================================
32 dnl This is the package version number, not the shared library
33 dnl version. This same version number must appear in fontconfig/fontconfig.h
34 dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
35 dnl not possible to extract the version number here from fontconfig.h
36 AC_INIT([fontconfig], [2.14.2], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new])
37 AM_INIT_AUTOMAKE([1.11 parallel-tests dist-xz])
38 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
40 dnl ==========================================================================
42 AC_CONFIG_HEADERS(config.h)
43 AC_CONFIG_MACRO_DIR([m4])
46 AC_USE_SYSTEM_EXTENSIONS
52 m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
54 AM_MISSING_PROG([GIT], [git])
55 AM_MISSING_PROG([GPERF], [gperf])
58 AC_MSG_CHECKING([for RM macro])
59 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
60 if test "x$_predefined_rm" = "x"; then
61 AC_MSG_RESULT([no predefined RM])
62 AC_CHECK_PROG(RM, rm, [rm -f])
64 AC_MSG_RESULT($_predefined_rm)
67 dnl Initialize libtool
69 LT_INIT([disable-static win32-dll])
71 dnl libtool versioning
73 dnl bump revision when fixing bugs
74 dnl bump current and age, reset revision to zero when adding APIs
75 dnl bump current, leave age, reset revision to zero when changing/removing APIS
78 AC_SUBST(LIBT_CURRENT)
79 AC_SUBST(LIBT_REVISION)
82 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
83 AC_SUBST(LIBT_VERSION_INFO)
85 LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
86 AC_SUBST(LIBT_CURRENT_MINUS_AGE)
89 PKGCONFIG_REQUIRES_PRIVATELY=
91 dnl ==========================================================================
103 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
104 AM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes")
106 dnl ==========================================================================
108 dnl ==========================================================================
109 GETTEXT_PACKAGE=$PACKAGE
110 AC_SUBST(GETTEXT_PACKAGE)
111 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
113 AM_GNU_GETTEXT_VERSION([0.19.7])
114 AM_GNU_GETTEXT([external])
116 dnl ==========================================================================
118 if test "$os_win32" = "yes"; then
119 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
121 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
123 AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
125 WARNING_CPP_DIRECTIVE="no"
126 if test "x$GCC" = "xyes"; then
127 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
128 -Wmissing-prototypes -Wmissing-declarations \
129 -Wnested-externs -fno-strict-aliasing"
130 WARNING_CPP_DIRECTIVE="yes"
131 elif test "x$SUNCC" = "xyes"; then
133 WARNING_CPP_DIRECTIVE="yes"
135 if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then
136 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
137 [Can use #warning in C files])
139 AC_SUBST(WARN_CFLAGS)
142 dnl ==========================================================================
145 AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
146 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
147 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
149 dnl ==========================================================================
152 [AC_HELP_STRING([--with-arch=ARCH],
153 [Force architecture to ARCH])],
154 arch="$withval", arch=auto)
156 if test "x$arch" != xauto; then
157 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
161 dnl ==========================================================================
163 # Checks for header files.
166 AC_CHECK_HEADERS([dirent.h fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
167 AX_CREATE_STDINT_H([src/fcstdint.h])
169 # Checks for typedefs, structures, and compiler characteristics.
172 AC_C_FLEXIBLE_ARRAY_MEMBER
175 # Checks for library functions.
178 AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink fstatvfs fstatfs lstat strerror strerror_r])
180 dnl AC_CHECK_FUNCS doesn't check for header files.
181 dnl posix_fadvise() may be not available in older libc.
182 AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
183 AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
186 AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
189 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
190 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
191 [#include <sys/statvfs.h>])
193 if test "x$ac_cv_func_fstatfs" = "xyes"; then
194 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
195 #ifdef HAVE_SYS_VFS_H
198 #ifdef HAVE_SYS_STATFS_H
199 #include <sys/statfs.h>
201 #ifdef HAVE_SYS_PARAM_H
202 #include <sys/param.h>
204 #ifdef HAVE_SYS_MOUNT_H
205 #include <sys/mount.h>
208 AC_CHECK_MEMBERS([struct dirent.d_type],,,
209 [#include <dirent.h>])
211 # Check the argument type of the gperf hash/lookup function
212 AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function])
213 fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
214 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
217 const char *in_word_set(register const char *, register size_t);
219 ]])], [FC_GPERF_SIZE_T=size_t],
220 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
223 const char *in_word_set(register const char *, register unsigned int);
225 ]])], [FC_GPERF_SIZE_T="unsigned int"],
226 [AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])]
228 AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function])
229 AC_MSG_RESULT($FC_GPERF_SIZE_T)
235 [AC_HELP_STRING([--enable-iconv],
236 [Use iconv to support non-Unicode SFNT name])],
238 AC_ARG_WITH(libiconv,
239 [AC_HELP_STRING([--with-libiconv=DIR],
240 [Use libiconv in DIR])],
241 [if test "x$withval" = "xyes"; then
242 libiconv_prefix=$prefix
244 libiconv_prefix=$withval
246 [libiconv_prefix=auto])
247 AC_ARG_WITH(libiconv-includes,
248 [AC_HELP_STRING([--with-libiconv-includes=DIR],
249 [Use libiconv includes in DIR])],
250 [libiconv_includes=$withval],
251 [libiconv_includes=auto])
252 AC_ARG_WITH(libiconv-lib,
253 [AC_HELP_STRING([--with-libiconv-lib=DIR],
254 [Use libiconv library in DIR])],
255 [libiconv_lib=$withval],
258 # if no libiconv,libiconv-includes,libiconv-lib are specified,
259 # libc's iconv has a priority.
260 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
261 libiconv_cflags="-I${libiconv_includes}"
262 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
263 libiconv_cflags="-I${libiconv_prefix}/include"
268 if test "x$libiconv_cflags" != "x"; then
269 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
270 libiconv_libs="-L${libiconv_lib} -liconv"
271 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
272 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
274 libiconv_libs="-liconv"
279 if test "x$enable_iconv" != "xno"; then
280 AC_MSG_CHECKING([for a usable iconv])
281 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
282 iconvsaved_CFLAGS="$CFLAGS"
283 iconvsaved_LIBS="$LIBS"
284 CFLAGS="$CFLAGS $libiconv_cflags"
285 LIBS="$LIBS $libiconv_libs"
287 AC_TRY_LINK([#include <iconv.h>],
288 [iconv_open ("from", "to");],
289 [iconv_type="libiconv"
291 ICONV_CFLAGS="$libiconv_cflags"
292 ICONV_LIBS="$libiconv_libs"
296 CFLAGS="$iconvsaved_CFLAGS"
297 LIBS="$iconvsaved_LIBS"
299 if test "x$use_iconv" = "x0"; then
300 AC_TRY_LINK([#include <iconv.h>],
301 [iconv_open ("from", "to");],
304 [iconv_type="not found"
308 AC_MSG_RESULT([$iconv_type])
309 AC_SUBST(ICONV_CFLAGS)
312 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
314 # Checks for FreeType
316 dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
317 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
318 PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15"
320 AC_SUBST(FREETYPE_LIBS)
321 AC_SUBST(FREETYPE_CFLAGS)
323 fontconfig_save_libs="$LIBS"
324 fontconfig_save_cflags="$CFLAGS"
325 LIBS="$LIBS $FREETYPE_LIBS"
326 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
327 AC_CHECK_FUNCS(FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Done_MM_Var)
329 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
330 #include <ft2build.h>
331 #include FT_CONFIG_OPTIONS_H
332 #ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
333 # error "No pcf long family names support"
335 ]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no])
336 AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes)
338 LIBS="$fontconfig_save_libs"
339 CFLAGS="$fontconfig_save_cflags"
342 # Check expat configuration
345 [AC_HELP_STRING([--with-expat=DIR],
346 [Use Expat in DIR])],
347 [expat_prefix=$withval],
349 AC_ARG_WITH(expat-includes,
350 [AC_HELP_STRING([--with-expat-includes=DIR],
351 [Use Expat includes in DIR])],
352 [expat_includes=$withval],
353 [expat_includes=auto])
354 AC_ARG_WITH(expat-lib,
355 [AC_HELP_STRING([--with-expat-lib=DIR])],
356 [expat_lib=$withval],
359 if test "$enable_libxml2" != "yes"; then
360 use_pkgconfig_for_expat=yes
361 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
362 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
364 use_pkgconfig_for_expat=no
366 if test "x$use_pkgconfig_for_expat" = "xno"; then
367 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
368 EXPAT_CFLAGS="-I${expat_includes}"
369 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
370 EXPAT_CFLAGS="-I${expat_prefix}/include"
374 if test "$expat_lib" != "auto"; then
375 EXPAT_LIBS="-L${expat_lib} -lexpat"
376 elif test "$expat_prefix" != "auto"; then
377 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
381 PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
382 PKG_EXPAT_LIBS=$EXPAT_LIBS
384 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
389 expatsaved_CPPFLAGS="$CPPFLAGS"
390 expatsaved_LIBS="$LIBS"
391 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
392 LIBS="$LIBS $EXPAT_LIBS"
394 AC_CHECK_HEADER(expat.h)
395 if test "$ac_cv_header_expat_h" = "no"; then
396 AC_CHECK_HEADER(xmlparse.h)
397 if test "$ac_cv_header_xmlparse_h" = "yes"; then
399 AC_SUBST(HAVE_XMLPARSE_H)
400 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
401 [Use xmlparse.h instead of expat.h])
404 *** expat is required. or try to use --enable-libxml2])
407 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
408 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
410 *** expat is required. or try to use --enable-libxml2])
412 CPPFLAGS="$expatsaved_CPPFLAGS"
413 LIBS="$expatsaved_LIBS"
415 AC_SUBST(EXPAT_CFLAGS)
417 AC_SUBST(PKG_EXPAT_CFLAGS)
418 AC_SUBST(PKG_EXPAT_LIBS)
422 # Check libxml2 configuration
424 AC_ARG_ENABLE(libxml2,
425 [AC_HELP_STRING([--enable-libxml2],
426 [Use libxml2 instead of Expat])])
428 if test "$enable_libxml2" = "yes"; then
429 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
430 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6"
431 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
433 AC_SUBST(LIBXML2_CFLAGS)
434 AC_SUBST(LIBXML2_LIBS)
436 fc_saved_CFLAGS="$CFLAGS"
437 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
438 AC_MSG_CHECKING([SAX1 support in libxml2])
439 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
440 #include <libxml/xmlversion.h>
441 #if !defined(LIBXML_SAX1_ENABLED)
442 # include "error: No SAX1 support in libxml2"
444 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
445 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
446 CFLAGS="$fc_saved_CFLAGS"
452 PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no])
454 AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes")
455 AC_SUBST(JSONC_CFLAGS)
459 # Set default sub-pixel rendering
462 AC_ARG_WITH(default-sub-pixel-rendering,
463 [AC_HELP_STRING([--with-default-sub-pixel-rendering=NAME],
464 [Enable your preferred sub-pixel rendering configuration (none/bgr/rgb/vbgr/vrgb) [default=none]])],
465 preferred_sub_pixel_rendering="$withval", preferred_sub_pixel_rendering=none)
467 case "$preferred_sub_pixel_rendering" in
468 none|bgr|rgb|vbgr|vrgb)
469 PREFERRED_SUB_PIXEL_RENDERING="$preferred_sub_pixel_rendering"
470 AC_SUBST(PREFERRED_SUB_PIXEL_RENDERING)
473 AC_MSG_ERROR([Invalid sub-pixel rendering. please choose one of none, bgr, rgb, vbgr, or vrgb])
478 # Set default hinting
481 AC_ARG_WITH(default-hinting,
482 [AC_HELP_STRING([--with-default-hinting=NAME],
483 [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
484 preferred_hinting="$withval", preferred_hinting=slight)
486 case "$preferred_hinting" in
487 none|slight|medium|full)
488 PREFERRED_HINTING="$preferred_hinting"
489 AC_SUBST(PREFERRED_HINTING)
492 AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
497 # Set default font directory
500 AC_ARG_WITH(default-fonts,
501 [AC_HELP_STRING([--with-default-fonts=DIR1,DIR2,...],
502 [Use fonts from DIR1,DIR2,... when config is busted])],
503 default_fonts="$withval", default_fonts=yes)
505 case "$default_fonts" in
507 if test "$os_win32" = "yes"; then
508 default_fonts="WINDOWSFONTDIR,WINDOWSUSERFONTDIR"
509 elif test "$os_darwin" = "yes"; then
510 default_fonts="/System/Library/Fonts,/Library/Fonts,~/Library/Fonts,/System/Library/Assets/com_apple_MobileAsset_Font3,/System/Library/Assets/com_apple_MobileAsset_Font4"
512 default_fonts="/usr/share/fonts"
518 if test x${default_fonts+set} = xset; then
521 for p in $default_fonts; do
522 if test x"$FC_DEFAULT_FONTS" != x; then
523 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS "
525 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS<dir>$p</dir>"
530 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$FC_DEFAULT_FONTS",
531 [System font directory])
533 AC_SUBST(FC_DEFAULT_FONTS)
536 # Add more fonts if available. By default, add only the directories
537 # with outline fonts; those with bitmaps can be added as desired in
538 # local.conf or ~/.fonts.conf
540 AC_ARG_WITH(add-fonts,
541 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
542 [Find additional fonts in DIR1,DIR2,... ])],
543 add_fonts="$withval", add_fonts=yes)
548 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
549 case x"$FC_ADD_FONTS" in
552 if test -d "$sub"; then
553 case x$FC_ADD_FONTS in
558 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
565 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
571 FC_ADD_FONTS="$add_fonts"
572 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
576 AC_SUBST(FC_ADD_FONTS)
580 case "$FC_ADD_FONTS" in
584 FC_FONTPATH=`echo $FC_ADD_FONTS |
585 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
589 AC_SUBST(FC_FONTPATH)
592 # Set default cache directory path
594 AC_ARG_WITH(cache-dir,
595 [AC_HELP_STRING([--with-cache-dir=DIR],
596 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
597 fc_cachedir="$withval", fc_cachedir=yes)
601 if test "$os_win32" = "yes"; then
602 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
604 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
610 AC_SUBST(fc_cachedir)
611 FC_CACHEDIR=${fc_cachedir}
612 AC_SUBST(FC_CACHEDIR)
614 FC_FONTDATE=`LC_ALL=C date`
616 AC_SUBST(FC_FONTDATE)
619 # Set configuration paths
622 AC_ARG_WITH(templatedir,
623 [AC_HELP_STRING([--with-templatedir=DIR],
624 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
625 [templatedir="$withval"],
627 AC_ARG_WITH(baseconfigdir,
628 [AC_HELP_STRING([--with-baseconfigdir=DIR],
629 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
630 [baseconfigdir="$withval"],
632 AC_ARG_WITH(configdir,
633 [AC_HELP_STRING([--with-configdir=DIR],
634 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
635 [configdir="$withval"],
638 [AC_HELP_STRING([--with-xmldir=DIR],
639 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
643 case "$templatedir" in
645 templatedir='${datadir}'/fontconfig/conf.avail
650 case "$baseconfigdir" in
652 baseconfigdir='${sysconfdir}'/fonts
659 configdir='${BASECONFIGDIR}'/conf.d
666 xmldir='${datadir}'/xml/fontconfig
672 TEMPLATEDIR=${templatedir}
673 BASECONFIGDIR=${baseconfigdir}
674 CONFIGDIR=${configdir}
676 AC_SUBST(TEMPLATEDIR)
677 AC_SUBST(BASECONFIGDIR)
682 dnl ===========================================================================
685 # Thread-safety primitives
688 AC_CACHE_CHECK([stdatomic.h atomic primitives], fc_cv_have_stdatomic_atomic_primitives, [
689 fc_cv_have_stdatomic_atomic_primitives=false
691 #include <stdatomic.h>
693 void memory_barrier (void) { atomic_thread_fence (memory_order_acq_rel); }
694 int atomic_add (atomic_int *i) { return atomic_fetch_add_explicit (i, 1, memory_order_relaxed); }
695 int mutex_trylock (atomic_flag *m) { return atomic_flag_test_and_set_explicit (m, memory_order_acquire); }
696 void mutex_unlock (atomic_flag *m) { atomic_flag_clear_explicit (m, memory_order_release); }
697 ], [], fc_cv_have_stdatomic_atomic_primitives=true
700 if $fc_cv_have_stdatomic_atomic_primitives; then
701 AC_DEFINE(HAVE_STDATOMIC_PRIMITIVES, 1, [Have C99 stdatomic atomic primitives])
704 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
705 fc_cv_have_intel_atomic_primitives=false
707 void memory_barrier (void) { __sync_synchronize (); }
708 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
709 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
710 void mutex_unlock (int *m) { __sync_lock_release (m); }
711 ], [], fc_cv_have_intel_atomic_primitives=true
714 if $fc_cv_have_intel_atomic_primitives; then
715 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
718 AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
719 fc_cv_have_solaris_atomic_ops=false
722 /* This requires Solaris Studio 12.2 or newer: */
723 #include <mbarrier.h>
724 void memory_barrier (void) { __machine_rw_barrier (); }
725 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
726 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
727 ], [], fc_cv_have_solaris_atomic_ops=true
730 if $fc_cv_have_solaris_atomic_ops; then
731 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
734 if test "$os_win32" = no && ! $have_pthread; then
735 AC_CHECK_HEADERS(sched.h)
736 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
740 if test "$os_win32" = no; then
741 AX_PTHREAD([have_pthread=true])
743 if $have_pthread; then
744 LIBS="$PTHREAD_LIBS $LIBS"
745 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
747 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
749 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
752 dnl ===========================================================================
755 # Let people not build/install docs if they don't have docbook
758 AC_ARG_ENABLE(docbook,
759 [AS_HELP_STRING([--disable-docbook],
760 [Disable building docs with docbook2html (default: no)])],,)
762 if test x$enable_docbook != xno; then
763 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
766 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
770 # Check if docs exist or can be created
772 if test x$HASDOCBOOK = xno; then
773 if test -f $srcdir/doc/fonts-conf.5; then
781 [AC_HELP_STRING([--disable-docs],
782 [Don't build and install documentation])],
784 enable_docs=$default_docs)
786 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
788 if test "x$enable_docs" = xyes; then
790 cat $srcdir/doc/*.fncs | awk '
791 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
792 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
793 /^@@/ { done = 0; }' > $tmp
794 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
795 echo DOCMAN3 $DOCMAN3
802 dnl ===========================================================================
803 default_cache_build="yes"
804 if test $cross_compiling = "yes"; then
805 default_cache_build="no"
807 AC_ARG_ENABLE(cache-build,
808 [AC_HELP_STRING([--disable-cache-build],
809 [Don't run fc-cache during the build])],
811 enable_cache_build=$default_cache_build)
813 AM_CONDITIONAL(ENABLE_CACHE_BUILD, test "x$enable_cache_build" = xyes)
816 dnl Figure out what cache format suffix to use for this architecture
818 AC_CHECK_SIZEOF([void *])
819 AC_CHECK_ALIGNOF([double])
820 AC_CHECK_ALIGNOF([void *])
822 dnl include the header file for workaround of miscalculating size on autoconf
823 dnl particularly for fat binaries
824 AH_BOTTOM([#include "config-fixups.h"])
828 AC_SUBST(PKGCONFIG_REQUIRES)
829 AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)