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.13.1], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new])
37 AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2])
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])
57 AC_MSG_CHECKING([for RM macro])
58 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
59 if test "x$_predefined_rm" = "x"; then
60 AC_MSG_RESULT([no predefined RM])
61 AC_CHECK_PROG(RM, rm, [rm -f])
63 AC_MSG_RESULT($_predefined_rm)
66 dnl Initialize libtool
68 LT_INIT([disable-static win32-dll])
70 dnl libtool versioning
72 dnl bump revision when fixing bugs
73 dnl bump current and age, reset revision to zero when adding APIs
74 dnl bump current, leave age, reset revision to zero when changing/removing APIS
77 AC_SUBST(LIBT_CURRENT)
78 AC_SUBST(LIBT_REVISION)
81 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
82 AC_SUBST(LIBT_VERSION_INFO)
84 LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
85 AC_SUBST(LIBT_CURRENT_MINUS_AGE)
88 PKGCONFIG_REQUIRES_PRIVATELY=
90 dnl ==========================================================================
98 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
100 dnl ==========================================================================
102 dnl ==========================================================================
103 GETTEXT_PACKAGE=$PACKAGE
104 AC_SUBST(GETTEXT_PACKAGE)
105 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
107 AM_GNU_GETTEXT_VERSION([0.19.8])
108 AM_GNU_GETTEXT([external])
110 dnl ==========================================================================
112 if test "$os_win32" = "yes"; then
113 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
115 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
117 AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
119 WARNING_CPP_DIRECTIVE="no"
120 if test "x$GCC" = "xyes"; then
121 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
122 -Wmissing-prototypes -Wmissing-declarations \
123 -Wnested-externs -fno-strict-aliasing"
124 WARNING_CPP_DIRECTIVE="yes"
125 elif test "x$SUNCC" = "xyes"; then
127 WARNING_CPP_DIRECTIVE="yes"
129 if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then
130 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
131 [Can use #warning in C files])
133 AC_SUBST(WARN_CFLAGS)
136 dnl ==========================================================================
139 AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
140 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
141 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
143 dnl ==========================================================================
146 [AC_HELP_STRING([--with-arch=ARCH],
147 [Force architecture to ARCH])],
148 arch="$withval", arch=auto)
150 if test "x$arch" != xauto; then
151 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
155 dnl ==========================================================================
157 # Checks for header files.
160 AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
161 AX_CREATE_STDINT_H([src/fcstdint.h])
163 # Checks for typedefs, structures, and compiler characteristics.
166 AC_C_FLEXIBLE_ARRAY_MEMBER
169 # Checks for library functions.
172 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])
174 dnl AC_CHECK_FUNCS doesn't check for header files.
175 dnl posix_fadvise() may be not available in older libc.
176 AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
177 AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
180 AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
183 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
184 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
185 [#include <sys/statvfs.h>])
187 if test "x$ac_cv_func_fstatfs" = "xyes"; then
188 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
189 #ifdef HAVE_SYS_VFS_H
192 #ifdef HAVE_SYS_STATFS_H
193 #include <sys/statfs.h>
195 #ifdef HAVE_SYS_PARAM_H
196 #include <sys/param.h>
198 #ifdef HAVE_SYS_MOUNT_H
199 #include <sys/mount.h>
202 AC_CHECK_MEMBERS([struct dirent.d_type],,,
203 [#include <dirent.h>])
205 # Check the argument type of the gperf hash/lookup function
206 AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function])
207 fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
208 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
211 const char *in_word_set(register const char *, register size_t);
213 ]])], [FC_GPERF_SIZE_T=size_t],
214 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
217 const char *in_word_set(register const char *, register unsigned int);
219 ]])], [FC_GPERF_SIZE_T="unsigned int"],
220 [AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])]
222 AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function])
223 AC_MSG_RESULT($FC_GPERF_SIZE_T)
229 [AC_HELP_STRING([--enable-iconv],
230 [Use iconv to support non-Unicode SFNT name])],
232 AC_ARG_WITH(libiconv,
233 [AC_HELP_STRING([--with-libiconv=DIR],
234 [Use libiconv in DIR])],
235 [if test "x$withval" = "xyes"; then
236 libiconv_prefix=$prefix
238 libiconv_prefix=$withval
240 [libiconv_prefix=auto])
241 AC_ARG_WITH(libiconv-includes,
242 [AC_HELP_STRING([--with-libiconv-includes=DIR],
243 [Use libiconv includes in DIR])],
244 [libiconv_includes=$withval],
245 [libiconv_includes=auto])
246 AC_ARG_WITH(libiconv-lib,
247 [AC_HELP_STRING([--with-libiconv-lib=DIR],
248 [Use libiconv library in DIR])],
249 [libiconv_lib=$withval],
252 # if no libiconv,libiconv-includes,libiconv-lib are specified,
253 # libc's iconv has a priority.
254 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
255 libiconv_cflags="-I${libiconv_includes}"
256 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
257 libiconv_cflags="-I${libiconv_prefix}/include"
262 if test "x$libiconv_cflags" != "x"; then
263 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
264 libiconv_libs="-L${libiconv_lib} -liconv"
265 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
266 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
268 libiconv_libs="-liconv"
273 if test "x$enable_iconv" != "xno"; then
274 AC_MSG_CHECKING([for a usable iconv])
275 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
276 iconvsaved_CFLAGS="$CFLAGS"
277 iconvsaved_LIBS="$LIBS"
278 CFLAGS="$CFLAGS $libiconv_cflags"
279 LIBS="$LIBS $libiconv_libs"
281 AC_TRY_LINK([#include <iconv.h>],
282 [iconv_open ("from", "to");],
283 [iconv_type="libiconv"
285 ICONV_CFLAGS="$libiconv_cflags"
286 ICONV_LIBS="$libiconv_libs"
290 CFLAGS="$iconvsaved_CFLAGS"
291 LIBS="$iconvsaved_LIBS"
293 if test "x$use_iconv" = "x0"; then
294 AC_TRY_LINK([#include <iconv.h>],
295 [iconv_open ("from", "to");],
298 [iconv_type="not found"
302 AC_MSG_RESULT([$iconv_type])
303 AC_SUBST(ICONV_CFLAGS)
306 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
308 # Checks for FreeType
310 dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
311 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
312 PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15"
314 AC_SUBST(FREETYPE_LIBS)
315 AC_SUBST(FREETYPE_CFLAGS)
317 fontconfig_save_libs="$LIBS"
318 fontconfig_save_cflags="$CFLAGS"
319 LIBS="$LIBS $FREETYPE_LIBS"
320 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
321 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)
323 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
324 #include <ft2build.h>
325 #include FT_CONFIG_OPTIONS_H
326 #ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
327 # error "No pcf long family names support"
329 ]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no])
330 AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes)
332 LIBS="$fontconfig_save_libs"
333 CFLAGS="$fontconfig_save_cflags"
338 if test "$os_win32" != "yes"; then
339 use_pkgconfig_for_uuid=yes
340 if test -n "${UUID_LIBS}"; then
341 save_UUID_LIBS=$UUID_LIBS
343 PKG_CHECK_MODULES([UUID], [uuid],
344 [use_pkgconfig_for_uuid=yes],
345 [use_pkgconfig_for_uuid=no])
346 if test "x$use_pkgconfig_for_uuid" = "xno"; then
347 AC_MSG_CHECKING([where uuid functions comes from])
348 AC_TRY_LINK([#include <uuid/uuid.h>],
349 [uuid_t a; uuid_generate(a);],
350 [AC_MSG_RESULT([builtin])
354 *** uuid is required. install util-linux.
357 if test -z "${save_UUID_LIBS+x}" && test "x${UUID_LIBS}" != "x"; then
358 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid"
365 AC_SUBST(UUID_CFLAGS)
369 # Check expat configuration
372 [AC_HELP_STRING([--with-expat=DIR],
373 [Use Expat in DIR])],
374 [expat_prefix=$withval],
376 AC_ARG_WITH(expat-includes,
377 [AC_HELP_STRING([--with-expat-includes=DIR],
378 [Use Expat includes in DIR])],
379 [expat_includes=$withval],
380 [expat_includes=auto])
381 AC_ARG_WITH(expat-lib,
382 [AC_HELP_STRING([--with-expat-lib=DIR])],
383 [expat_lib=$withval],
386 if test "$enable_libxml2" != "yes"; then
387 use_pkgconfig_for_expat=yes
388 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
389 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
391 use_pkgconfig_for_expat=no
393 if test "x$use_pkgconfig_for_expat" = "xno"; then
394 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
395 EXPAT_CFLAGS="-I${expat_includes}"
396 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
397 EXPAT_CFLAGS="-I${expat_prefix}/include"
401 if test "$expat_lib" != "auto"; then
402 EXPAT_LIBS="-L${expat_lib} -lexpat"
403 elif test "$expat_prefix" != "auto"; then
404 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
408 PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
409 PKG_EXPAT_LIBS=$EXPAT_LIBS
411 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
416 expatsaved_CPPFLAGS="$CPPFLAGS"
417 expatsaved_LIBS="$LIBS"
418 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
419 LIBS="$LIBS $EXPAT_LIBS"
421 AC_CHECK_HEADER(expat.h)
422 if test "$ac_cv_header_expat_h" = "no"; then
423 AC_CHECK_HEADER(xmlparse.h)
424 if test "$ac_cv_header_xmlparse_h" = "yes"; then
426 AC_SUBST(HAVE_XMLPARSE_H)
427 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
428 [Use xmlparse.h instead of expat.h])
431 *** expat is required. or try to use --enable-libxml2])
434 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
435 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
437 *** expat is required. or try to use --enable-libxml2])
439 CPPFLAGS="$expatsaved_CPPFLAGS"
440 LIBS="$expatsaved_LIBS"
442 AC_SUBST(EXPAT_CFLAGS)
444 AC_SUBST(PKG_EXPAT_CFLAGS)
445 AC_SUBST(PKG_EXPAT_LIBS)
449 # Check libxml2 configuration
451 AC_ARG_ENABLE(libxml2,
452 [AC_HELP_STRING([--enable-libxml2],
453 [Use libxml2 instead of Expat])])
455 if test "$enable_libxml2" = "yes"; then
456 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
457 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6"
458 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
460 AC_SUBST(LIBXML2_CFLAGS)
461 AC_SUBST(LIBXML2_LIBS)
463 fc_saved_CFLAGS="$CFLAGS"
464 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
465 AC_MSG_CHECKING([SAX1 support in libxml2])
466 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
467 #include <libxml/xmlversion.h>
468 #if !defined(LIBXML_SAX1_ENABLED)
469 # include "error: No SAX1 support in libxml2"
471 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
472 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
473 CFLAGS="$fc_saved_CFLAGS"
479 PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no])
481 AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes")
482 AC_SUBST(JSONC_CFLAGS)
486 # Set default hinting
489 AC_ARG_WITH(default-hinting,
490 [AC_HELP_STRING([--with-default-hinting=NAME],
491 [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
492 preferred_hinting="$withval", preferred_hinting=slight)
494 case "$preferred_hinting" in
495 none|slight|medium|full)
496 PREFERRED_HINTING="$preferred_hinting"
497 AC_SUBST(PREFERRED_HINTING)
500 AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
505 # Set default font directory
508 AC_ARG_WITH(default-fonts,
509 [AC_HELP_STRING([--with-default-fonts=DIR],
510 [Use fonts from DIR when config is busted])],
511 default_fonts="$withval", default_fonts=yes)
513 case "$default_fonts" in
515 if test "$os_win32" = "yes"; then
516 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
517 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
518 [Windows font directory])
520 FC_DEFAULT_FONTS="/usr/share/fonts"
521 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
522 [System font directory])
526 FC_DEFAULT_FONTS="$default_fonts"
527 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
528 [System font directory])
532 AC_SUBST(FC_DEFAULT_FONTS)
535 # Add more fonts if available. By default, add only the directories
536 # with outline fonts; those with bitmaps can be added as desired in
537 # local.conf or ~/.fonts.conf
539 AC_ARG_WITH(add-fonts,
540 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
541 [Find additional fonts in DIR1,DIR2,... ])],
542 add_fonts="$withval", add_fonts=yes)
547 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
548 case x"$FC_ADD_FONTS" in
551 if test -d "$sub"; then
552 case x$FC_ADD_FONTS in
557 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
564 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
570 FC_ADD_FONTS="$add_fonts"
571 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
575 AC_SUBST(FC_ADD_FONTS)
579 case "$FC_ADD_FONTS" in
583 FC_FONTPATH=`echo $FC_ADD_FONTS |
584 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
588 AC_SUBST(FC_FONTPATH)
591 # Set default cache directory path
593 AC_ARG_WITH(cache-dir,
594 [AC_HELP_STRING([--with-cache-dir=DIR],
595 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
596 fc_cachedir="$withval", fc_cachedir=yes)
600 if test "$os_win32" = "yes"; then
601 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
603 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
609 AC_SUBST(fc_cachedir)
610 FC_CACHEDIR=${fc_cachedir}
611 AC_SUBST(FC_CACHEDIR)
613 FC_FONTDATE=`LC_ALL=C date`
615 AC_SUBST(FC_FONTDATE)
618 # Set configuration paths
621 AC_ARG_WITH(templatedir,
622 [AC_HELP_STRING([--with-templatedir=DIR],
623 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
624 [templatedir="$withval"],
626 AC_ARG_WITH(baseconfigdir,
627 [AC_HELP_STRING([--with-baseconfigdir=DIR],
628 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
629 [baseconfigdir="$withval"],
631 AC_ARG_WITH(configdir,
632 [AC_HELP_STRING([--with-configdir=DIR],
633 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
634 [configdir="$withval"],
637 [AC_HELP_STRING([--with-xmldir=DIR],
638 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
642 case "$templatedir" in
644 templatedir='${datadir}'/fontconfig/conf.avail
649 case "$baseconfigdir" in
651 baseconfigdir='${sysconfdir}'/fonts
658 configdir='${BASECONFIGDIR}'/conf.d
665 xmldir='${datadir}'/xml/fontconfig
671 TEMPLATEDIR=${templatedir}
672 BASECONFIGDIR=${baseconfigdir}
673 CONFIGDIR=${configdir}
675 AC_SUBST(TEMPLATEDIR)
676 AC_SUBST(BASECONFIGDIR)
681 dnl ===========================================================================
684 # Thread-safety primitives
687 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
688 fc_cv_have_intel_atomic_primitives=false
690 void memory_barrier (void) { __sync_synchronize (); }
691 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
692 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
693 void mutex_unlock (int *m) { __sync_lock_release (m); }
694 ], [], fc_cv_have_intel_atomic_primitives=true
697 if $fc_cv_have_intel_atomic_primitives; then
698 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
701 AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
702 fc_cv_have_solaris_atomic_ops=false
705 /* This requires Solaris Studio 12.2 or newer: */
706 #include <mbarrier.h>
707 void memory_barrier (void) { __machine_rw_barrier (); }
708 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
709 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
710 ], [], fc_cv_have_solaris_atomic_ops=true
713 if $fc_cv_have_solaris_atomic_ops; then
714 AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
717 if test "$os_win32" = no && ! $have_pthread; then
718 AC_CHECK_HEADERS(sched.h)
719 AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
723 if test "$os_win32" = no; then
724 AX_PTHREAD([have_pthread=true])
726 if $have_pthread; then
727 LIBS="$PTHREAD_LIBS $LIBS"
728 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
730 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
732 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
735 dnl ===========================================================================
738 # Let people not build/install docs if they don't have docbook
741 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
743 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
747 # Check if docs exist or can be created
749 if test x$HASDOCBOOK = xno; then
750 if test -f $srcdir/doc/fonts-conf.5; then
758 [AC_HELP_STRING([--disable-docs],
759 [Don't build and install documentation])],
761 enable_docs=$default_docs)
763 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
765 if test "x$enable_docs" = xyes; then
767 cat $srcdir/doc/*.fncs | awk '
768 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
769 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
770 /^@@/ { done = 0; }' > $tmp
771 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
772 echo DOCMAN3 $DOCMAN3
780 dnl Figure out what cache format suffix to use for this architecture
782 AC_CHECK_SIZEOF([void *])
783 AC_CHECK_ALIGNOF([double])
784 AC_CHECK_ALIGNOF([void *])
786 dnl include the header file for workaround of miscalculating size on autoconf
787 dnl particularly for fat binaries
788 AH_BOTTOM([#include "config-fixups.h"])
792 AC_SUBST(PKGCONFIG_REQUIRES)
793 AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)