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"
344 if test "$os_win32" != "yes"; then
345 use_pkgconfig_for_uuid=yes
346 if test -n "${UUID_LIBS}"; then
347 save_UUID_LIBS=$UUID_LIBS
349 PKG_CHECK_MODULES([UUID], [uuid],
350 [use_pkgconfig_for_uuid=yes],
351 [use_pkgconfig_for_uuid=no])
352 if test "x$use_pkgconfig_for_uuid" = "xno"; then
353 AC_MSG_CHECKING([where uuid functions comes from])
354 AC_TRY_LINK([#include <uuid/uuid.h>],
355 [uuid_t a; uuid_generate(a);],
356 [AC_MSG_RESULT([builtin])
360 *** uuid is required. install util-linux.
363 if test -z "${save_UUID_LIBS+x}" && test "x${UUID_LIBS}" != "x"; then
364 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid"
371 AC_SUBST(UUID_CFLAGS)
375 # Check expat configuration
378 [AC_HELP_STRING([--with-expat=DIR],
379 [Use Expat in DIR])],
380 [expat_prefix=$withval],
382 AC_ARG_WITH(expat-includes,
383 [AC_HELP_STRING([--with-expat-includes=DIR],
384 [Use Expat includes in DIR])],
385 [expat_includes=$withval],
386 [expat_includes=auto])
387 AC_ARG_WITH(expat-lib,
388 [AC_HELP_STRING([--with-expat-lib=DIR])],
389 [expat_lib=$withval],
392 if test "$enable_libxml2" != "yes"; then
393 use_pkgconfig_for_expat=yes
394 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
395 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
397 use_pkgconfig_for_expat=no
399 if test "x$use_pkgconfig_for_expat" = "xno"; then
400 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
401 EXPAT_CFLAGS="-I${expat_includes}"
402 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
403 EXPAT_CFLAGS="-I${expat_prefix}/include"
407 if test "$expat_lib" != "auto"; then
408 EXPAT_LIBS="-L${expat_lib} -lexpat"
409 elif test "$expat_prefix" != "auto"; then
410 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
414 PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
415 PKG_EXPAT_LIBS=$EXPAT_LIBS
417 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
422 expatsaved_CPPFLAGS="$CPPFLAGS"
423 expatsaved_LIBS="$LIBS"
424 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
425 LIBS="$LIBS $EXPAT_LIBS"
427 AC_CHECK_HEADER(expat.h)
428 if test "$ac_cv_header_expat_h" = "no"; then
429 AC_CHECK_HEADER(xmlparse.h)
430 if test "$ac_cv_header_xmlparse_h" = "yes"; then
432 AC_SUBST(HAVE_XMLPARSE_H)
433 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
434 [Use xmlparse.h instead of expat.h])
437 *** expat is required. or try to use --enable-libxml2])
440 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
441 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
443 *** expat is required. or try to use --enable-libxml2])
445 CPPFLAGS="$expatsaved_CPPFLAGS"
446 LIBS="$expatsaved_LIBS"
448 AC_SUBST(EXPAT_CFLAGS)
450 AC_SUBST(PKG_EXPAT_CFLAGS)
451 AC_SUBST(PKG_EXPAT_LIBS)
455 # Check libxml2 configuration
457 AC_ARG_ENABLE(libxml2,
458 [AC_HELP_STRING([--enable-libxml2],
459 [Use libxml2 instead of Expat])])
461 if test "$enable_libxml2" = "yes"; then
462 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
463 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6"
464 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
466 AC_SUBST(LIBXML2_CFLAGS)
467 AC_SUBST(LIBXML2_LIBS)
469 fc_saved_CFLAGS="$CFLAGS"
470 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
471 AC_MSG_CHECKING([SAX1 support in libxml2])
472 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
473 #include <libxml/xmlversion.h>
474 #if !defined(LIBXML_SAX1_ENABLED)
475 # include "error: No SAX1 support in libxml2"
477 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
478 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
479 CFLAGS="$fc_saved_CFLAGS"
485 PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no])
487 AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes")
488 AC_SUBST(JSONC_CFLAGS)
492 # Set default sub-pixel rendering
495 AC_ARG_WITH(default-sub-pixel-rendering,
496 [AC_HELP_STRING([--with-default-sub-pixel-rendering=NAME],
497 [Enable your preferred sub-pixel rendering configuration (none/bgr/rgb/vbgr/vrgb) [default=none]])],
498 preferred_sub_pixel_rendering="$withval", preferred_sub_pixel_rendering=none)
500 case "$preferred_sub_pixel_rendering" in
501 none|bgr|rgb|vbgr|vrgb)
502 PREFERRED_SUB_PIXEL_RENDERING="$preferred_sub_pixel_rendering"
503 AC_SUBST(PREFERRED_SUB_PIXEL_RENDERING)
506 AC_MSG_ERROR([Invalid sub-pixel rendering. please choose one of none, bgr, rgb, vbgr, or vrgb])
511 # Set default hinting
514 AC_ARG_WITH(default-hinting,
515 [AC_HELP_STRING([--with-default-hinting=NAME],
516 [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
517 preferred_hinting="$withval", preferred_hinting=slight)
519 case "$preferred_hinting" in
520 none|slight|medium|full)
521 PREFERRED_HINTING="$preferred_hinting"
522 AC_SUBST(PREFERRED_HINTING)
525 AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
530 # Set default font directory
533 AC_ARG_WITH(default-fonts,
534 [AC_HELP_STRING([--with-default-fonts=DIR1,DIR2,...],
535 [Use fonts from DIR1,DIR2,... when config is busted])],
536 default_fonts="$withval", default_fonts=yes)
538 case "$default_fonts" in
540 if test "$os_win32" = "yes"; then
541 default_fonts="WINDOWSFONTDIR,WINDOWSUSERFONTDIR"
542 elif test "$os_darwin" = "yes"; then
543 default_fonts="/System/Library/Fonts,/Library/Fonts,~/Library/Fonts,/System/Library/Assets/com_apple_MobileAsset_Font3,/System/Library/Assets/com_apple_MobileAsset_Font4"
545 default_fonts="/usr/share/fonts"
551 if test x${default_fonts+set} = xset; then
554 for p in $default_fonts; do
555 if test x"$FC_DEFAULT_FONTS" != x; then
556 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS "
558 FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS<dir>$p</dir>"
563 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$FC_DEFAULT_FONTS",
564 [System font directory])
566 AC_SUBST(FC_DEFAULT_FONTS)
569 # Add more fonts if available. By default, add only the directories
570 # with outline fonts; those with bitmaps can be added as desired in
571 # local.conf or ~/.fonts.conf
573 AC_ARG_WITH(add-fonts,
574 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
575 [Find additional fonts in DIR1,DIR2,... ])],
576 add_fonts="$withval", add_fonts=yes)
581 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
582 case x"$FC_ADD_FONTS" in
585 if test -d "$sub"; then
586 case x$FC_ADD_FONTS in
591 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
598 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
604 FC_ADD_FONTS="$add_fonts"
605 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
609 AC_SUBST(FC_ADD_FONTS)
613 case "$FC_ADD_FONTS" in
617 FC_FONTPATH=`echo $FC_ADD_FONTS |
618 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
622 AC_SUBST(FC_FONTPATH)
625 # Set default cache directory path
627 AC_ARG_WITH(cache-dir,
628 [AC_HELP_STRING([--with-cache-dir=DIR],
629 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
630 fc_cachedir="$withval", fc_cachedir=yes)
634 if test "$os_win32" = "yes"; then
635 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
637 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
643 AC_SUBST(fc_cachedir)
644 FC_CACHEDIR=${fc_cachedir}
645 AC_SUBST(FC_CACHEDIR)
647 FC_FONTDATE=`LC_ALL=C date`
649 AC_SUBST(FC_FONTDATE)
652 # Set configuration paths
655 AC_ARG_WITH(templatedir,
656 [AC_HELP_STRING([--with-templatedir=DIR],
657 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
658 [templatedir="$withval"],
660 AC_ARG_WITH(baseconfigdir,
661 [AC_HELP_STRING([--with-baseconfigdir=DIR],
662 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
663 [baseconfigdir="$withval"],
665 AC_ARG_WITH(configdir,
666 [AC_HELP_STRING([--with-configdir=DIR],
667 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
668 [configdir="$withval"],
671 [AC_HELP_STRING([--with-xmldir=DIR],
672 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
676 case "$templatedir" in
678 templatedir='${datadir}'/fontconfig/conf.avail
683 case "$baseconfigdir" in
685 baseconfigdir='${sysconfdir}'/fonts
692 configdir='${BASECONFIGDIR}'/conf.d
699 xmldir='${datadir}'/xml/fontconfig
705 TEMPLATEDIR=${templatedir}
706 BASECONFIGDIR=${baseconfigdir}
707 CONFIGDIR=${configdir}
709 AC_SUBST(TEMPLATEDIR)
710 AC_SUBST(BASECONFIGDIR)
715 dnl ===========================================================================
718 # Thread-safety primitives
721 AC_CACHE_CHECK([stdatomic.h atomic primitives], fc_cv_have_stdatomic_atomic_primitives, [
722 fc_cv_have_stdatomic_atomic_primitives=false
724 #include <stdatomic.h>
726 void memory_barrier (void) { atomic_thread_fence (memory_order_acq_rel); }
727 int atomic_add (atomic_int *i) { return atomic_fetch_add_explicit (i, 1, memory_order_relaxed); }
728 int mutex_trylock (atomic_flag *m) { return atomic_flag_test_and_set_explicit (m, memory_order_acquire); }
729 void mutex_unlock (atomic_flag *m) { atomic_flag_clear_explicit (m, memory_order_release); }
730 ], [], fc_cv_have_stdatomic_atomic_primitives=true
733 if $fc_cv_have_stdatomic_atomic_primitives; then
734 AC_DEFINE(HAVE_STDATOMIC_PRIMITIVES, 1, [Have C99 stdatomic atomic primitives])
737 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
738 fc_cv_have_intel_atomic_primitives=false
740 void memory_barrier (void) { __sync_synchronize (); }
741 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
742 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
743 void mutex_unlock (int *m) { __sync_lock_release (m); }
744 ], [], fc_cv_have_intel_atomic_primitives=true
747 if $fc_cv_have_intel_atomic_primitives; then
748 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
751 AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
752 fc_cv_have_solaris_atomic_ops=false
755 /* This requires Solaris Studio 12.2 or newer: */
756 #include <mbarrier.h>
757 void memory_barrier (void) { __machine_rw_barrier (); }
758 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
759 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
760 ], [], fc_cv_have_solaris_atomic_ops=true
763 if $fc_cv_have_solaris_atomic_ops; then
764 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
767 if test "$os_win32" = no && ! $have_pthread; then
768 AC_CHECK_HEADERS(sched.h)
769 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
773 if test "$os_win32" = no; then
774 AX_PTHREAD([have_pthread=true])
776 if $have_pthread; then
777 LIBS="$PTHREAD_LIBS $LIBS"
778 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
780 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
782 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
785 dnl ===========================================================================
788 # Let people not build/install docs if they don't have docbook
791 AC_ARG_ENABLE(docbook,
792 [AS_HELP_STRING([--disable-docbook],
793 [Disable building docs with docbook2html (default: no)])],,)
795 if test x$enable_docbook != xno; then
796 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
799 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
803 # Check if docs exist or can be created
805 if test x$HASDOCBOOK = xno; then
806 if test -f $srcdir/doc/fonts-conf.5; then
814 [AC_HELP_STRING([--disable-docs],
815 [Don't build and install documentation])],
817 enable_docs=$default_docs)
819 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
821 if test "x$enable_docs" = xyes; then
823 cat $srcdir/doc/*.fncs | awk '
824 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
825 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
826 /^@@/ { done = 0; }' > $tmp
827 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
828 echo DOCMAN3 $DOCMAN3
835 dnl ===========================================================================
836 default_cache_build="yes"
837 if test $cross_compiling = "yes"; then
838 default_cache_build="no"
840 AC_ARG_ENABLE(cache-build,
841 [AC_HELP_STRING([--disable-cache-build],
842 [Don't run fc-cache during the build])],
844 enable_cache_build=$default_cache_build)
846 AM_CONDITIONAL(ENABLE_CACHE_BUILD, test "x$enable_cache_build" = xyes)
849 dnl Figure out what cache format suffix to use for this architecture
851 AC_CHECK_SIZEOF([void *])
852 AC_CHECK_ALIGNOF([double])
853 AC_CHECK_ALIGNOF([void *])
855 dnl include the header file for workaround of miscalculating size on autoconf
856 dnl particularly for fat binaries
857 AH_BOTTOM([#include "config-fixups.h"])
861 AC_SUBST(PKGCONFIG_REQUIRES)
862 AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)