configure.ac revision c9710b42
1dnl 
2dnl  fontconfig/configure.in
3dnl 
4dnl  Copyright © 2003 Keith Packard
5dnl 
6dnl  Permission to use, copy, modify, distribute, and sell this software and its
7dnl  documentation for any purpose is hereby granted without fee, provided that
8dnl  the above copyright notice appear in all copies and that both that
9dnl  copyright notice and this permission notice appear in supporting
10dnl  documentation, and that the name of the author(s) not be used in
11dnl  advertising or publicity pertaining to distribution of the software without
12dnl  specific, written prior permission.  The authors make no
13dnl  representations about the suitability of this software for any purpose.  It
14dnl  is provided "as is" without express or implied warranty.
15dnl 
16dnl  THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
17dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
18dnl  EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
19dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
20dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
21dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22dnl  PERFORMANCE OF THIS SOFTWARE.
23dnl
24dnl Process this file with autoconf to create configure.
25
26AC_PREREQ(2.61)
27
28dnl ==========================================================================
29dnl                               Versioning              
30dnl ==========================================================================
31
32dnl This is the package version number, not the shared library
33dnl version.  This same version number must appear in fontconfig/fontconfig.h
34dnl Yes, it is a pain to synchronize version numbers.  Unfortunately, it's
35dnl not possible to extract the version number here from fontconfig.h
36AC_INIT([fontconfig], [2.10.93], [https://bugs.freedesktop.org/enger_bug.cgi?product=fontconfig])
37AM_INIT_AUTOMAKE([1.11 parallel-tests dist-bzip2])
38m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
39
40dnl libtool versioning
41
42dnl bump revision when fixing bugs
43dnl bump current and age, reset revision to zero when adding APIs
44dnl bump current, leave age, reset revision to zero when changing/removing APIS
45LIBT_CURRENT=8
46LIBT_REVISION=0
47AC_SUBST(LIBT_CURRENT)
48AC_SUBST(LIBT_REVISION)
49LIBT_AGE=7
50
51LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
52AC_SUBST(LIBT_VERSION_INFO)
53
54LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
55AC_SUBST(LIBT_CURRENT_MINUS_AGE)
56
57dnl ==========================================================================
58
59AC_CONFIG_HEADERS(config.h)
60AC_CONFIG_MACRO_DIR([m4])
61
62AC_PROG_CC
63AC_USE_SYSTEM_EXTENSIONS
64AC_SYS_LARGEFILE
65AC_PROG_INSTALL
66AC_PROG_LN_S
67AC_LIBTOOL_WIN32_DLL
68AM_PROG_LIBTOOL
69AC_PROG_MAKE_SET
70PKG_PROG_PKG_CONFIG
71m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
72
73AM_MISSING_PROG([GIT], [git])
74AM_MISSING_PROG([GPERF], [gperf])
75
76AC_MSG_CHECKING([for RM macro])
77_predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
78if test "x$_predefined_rm" = "x"; then
79	AC_MSG_RESULT([no predefined RM])
80	AC_CHECK_PROG(RM, rm, [rm -f])
81else
82	AC_MSG_RESULT($_predefined_rm)
83fi
84
85dnl ==========================================================================
86
87case "$host" in
88  *-*-mingw*)
89    os_win32=yes
90    ;;
91  *)
92    os_win32=no
93esac
94AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
95
96if test "$os_win32" = "yes"; then
97  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
98fi
99AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
100
101WARN_CFLAGS=""
102if test "x$GCC" = "xyes"; then
103	WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
104	-Wmissing-prototypes -Wmissing-declarations \
105	-Wnested-externs -fno-strict-aliasing"
106	AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
107	[Can use #warning in C files])
108fi
109AC_SUBST(WARN_CFLAGS)
110
111
112dnl ==========================================================================
113
114AX_CC_FOR_BUILD()
115AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
116AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
117AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
118
119dnl ==========================================================================
120
121AC_ARG_WITH(arch,
122	[AC_HELP_STRING([--with-arch=ARCH],
123			[Force architecture to ARCH])],
124	arch="$withval", arch=auto)
125
126if test "x$arch" != xauto; then
127	AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
128fi
129
130
131dnl ==========================================================================
132
133# Checks for header files.
134AC_HEADER_DIRENT
135AC_HEADER_STDC
136AC_CHECK_HEADERS([fcntl.h regex.h stdlib.h string.h unistd.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
137AX_CREATE_STDINT_H([src/fcstdint.h])
138
139# Checks for typedefs, structures, and compiler characteristics.
140AC_C_CONST
141AC_C_INLINE
142AC_C_FLEXIBLE_ARRAY_MEMBER
143AC_TYPE_PID_T
144
145# Checks for library functions.
146AC_FUNC_VPRINTF
147AC_FUNC_MMAP
148AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat])
149
150dnl AC_CHECK_FUNCS doesn't check for header files.
151dnl posix_fadvise() may be not available in older libc.
152fc_saved_CFLAGS="$CFLAGS"
153CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
154AC_MSG_CHECKING([for posix_fadvise])
155AC_LINK_IFELSE([AC_LANG_SOURCE([[
156	#include <fcntl.h>
157	int main(void) {
158	    return posix_fadvise(0, 0, 0, 0);
159	}
160	]])],[
161		AC_MSG_RESULT([yes])
162		AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.])
163	],[AC_MSG_RESULT([no])])
164CFLAGS="$fc_saved_CFLAGS"
165
166#
167if test "x$ac_cv_func_fstatvfs" = "xyes"; then
168	AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
169		[#include <sys/statvfs.h>])
170fi
171if test "x$ac_cv_func_fstatfs" = "xyes"; then
172	AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
173#ifdef HAVE_SYS_VFS_H
174#include <sys/vfs.h>
175#endif
176#ifdef HAVE_SYS_STATFS_H
177#include <sys/statfs.h>
178#endif
179#ifdef HAVE_SYS_PARAM_H
180#include <sys/param.h>
181#endif
182#ifdef HAVE_SYS_MOUNT_H
183#include <sys/mount.h>
184#endif])
185fi
186AC_CHECK_MEMBERS([struct dirent.d_type],,,
187	[#include <dirent.h>])
188#
189# regex
190#
191if test "x$ac_cv_func_regcomp" = "xyes" -a "x$ac_cv_func_regerror" = "xyes" -a "x$ac_cv_func_regexec" = "xyes" -a "x$ac_cv_func_regfree"; then
192	AC_DEFINE(USE_REGEX,,[Use regex])
193fi
194
195#
196# Checks for iconv
197#
198AC_ARG_ENABLE(iconv,
199	[AC_HELP_STRING([--enable-iconv],
200			[Use iconv to support non-Unicode SFNT name])],
201	,enable_iconv=no)
202AC_ARG_WITH(libiconv,
203	[AC_HELP_STRING([--with-libiconv=DIR],
204			[Use libiconv in DIR])],
205	[if test "x$withval" = "xyes"; then
206		libiconv_prefix=$prefix
207	 else
208		libiconv_prefix=$withval
209	 fi],
210	[libiconv_prefix=auto])
211AC_ARG_WITH(libiconv-includes,
212	[AC_HELP_STRING([--with-libiconv-includes=DIR],
213			[Use libiconv includes in DIR])],
214	[libiconv_includes=$withval],
215	[libiconv_includes=auto])
216AC_ARG_WITH(libiconv-lib,
217	[AC_HELP_STRING([--with-libiconv-lib=DIR],
218			[Use libiconv library in DIR])],
219	[libiconv_lib=$withval],
220	[libiconv_lib=auto])
221
222# if no libiconv,libiconv-includes,libiconv-lib are specified,
223# libc's iconv has a priority.
224if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
225	libiconv_cflags="-I${libiconv_includes}"
226elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
227	libiconv_cflags="-I${libiconv_prefix}/include"
228else
229	libiconv_cflags=""
230fi
231libiconv_libs=""
232if test "x$libiconv_cflags" != "x"; then
233	if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
234		libiconv_libs="-L${libiconv_lib} -liconv"
235	elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
236		libiconv_libs="-L${libiconv_prefix}/lib -liconv"
237	else
238		libiconv_libs="-liconv"
239	fi
240fi
241
242use_iconv=0
243if test "x$enable_iconv" != "xno"; then
244	AC_MSG_CHECKING([for a usable iconv])
245	if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
246		iconvsaved_CFLAGS="$CFLAGS"
247		iconvsaved_LIBS="$LIBS"
248		CFLAGS="$CFLAGS $libiconv_cflags"
249		LIBS="$LIBS $libiconv_libs"
250
251		AC_TRY_LINK([#include <iconv.h>],
252			[iconv_open ("from", "to");],
253			[iconv_type="libiconv"
254			 use_iconv=1],
255			[use_iconv=0])
256
257		CFLAGS="$iconvsaved_CFLAGS"
258		LIBS="$iconvsaved_LIBS"
259		ICONV_CFLAGS="$libiconv_cflags"
260		ICONV_LIBS="$libiconv_libs"
261	fi
262	if test "x$use_iconv" = "x0"; then
263		AC_TRY_LINK([#include <iconv.h>],
264			[iconv_open ("from", "to");],
265			[iconv_type="libc"
266			 use_iconv=1],
267			[iconv_type="not found"
268			 use_iconv=0])
269	fi
270
271	AC_MSG_RESULT([$iconv_type])
272	AC_SUBST(ICONV_CFLAGS)
273	AC_SUBST(ICONV_LIBS)
274fi
275AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
276#
277# Checks for FreeType
278#
279PKG_CHECK_MODULES(FREETYPE, freetype2)
280
281AC_SUBST(FREETYPE_LIBS)
282AC_SUBST(FREETYPE_CFLAGS)
283
284fontconfig_save_libs="$LIBS"
285fontconfig_save_cflags="$CFLAGS"
286LIBS="$LIBS $FREETYPE_LIBS"
287CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
288AC_CHECK_FUNCS(FT_Get_Next_Char FT_Get_BDF_Property FT_Get_PS_Font_Info FT_Has_PS_Glyph_Names FT_Get_X11_Font_Format FT_Select_Size)
289AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
290		HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
291		HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
292[#include <ft2build.h>
293#include FT_FREETYPE_H])
294AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
295		   [FT_Bitmap_Size structure includes y_ppem field])
296CFLAGS="$fontconfig_save_cflags"
297LIBS="$fontconfig_save_libs"
298
299#
300# Check expat configuration
301#
302AC_ARG_WITH(expat,
303	[AC_HELP_STRING([--with-expat=DIR],
304			[Use Expat in DIR])],
305	[expat_prefix=$withval],
306	[expat_prefix=auto])
307AC_ARG_WITH(expat-includes,
308	[AC_HELP_STRING([--with-expat-includes=DIR],
309			[Use Expat includes in DIR])],
310	[expat_includes=$withval],
311	[expat_includes=auto])
312AC_ARG_WITH(expat-lib,
313	[AC_HELP_STRING([--with-expat-lib=DIR])],
314	[expat_lib=$withval],
315	[expat_lib=auto])
316
317if test "$enable_libxml2" != "yes"; then
318	use_pkgconfig_for_expat=yes
319	if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
320		PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
321	else
322		use_pkgconfig_for_expat=no
323	fi
324	if test "x$use_pkgconfig_for_expat" = "xno"; then
325		if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
326			EXPAT_CFLAGS="-I${expat_includes}"
327		elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
328			EXPAT_CFLAGS="-I${expat_prefix}/include"
329		else
330			EXPAT_CFLAGS=""
331		fi
332		if test "$expat_lib" != "auto"; then
333			EXPAT_LIBS="-L${expat_lib} -lexpat"
334		elif test "$expat_prefix" != "auto"; then
335			EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
336		else
337			EXPAT_LIBS="-lexpat"
338		fi
339	fi
340
341	expatsaved_CPPFLAGS="$CPPFLAGS"
342	expatsaved_LIBS="$LIBS"
343	CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
344	LIBS="$LIBS $EXPAT_LIBS"
345
346	AC_CHECK_HEADER(expat.h)
347	if test "$ac_cv_header_expat_h" = "no"; then
348		AC_CHECK_HEADER(xmlparse.h)
349		if test "$ac_cv_header_xmlparse_h" = "yes"; then
350			HAVE_XMLPARSE_H=1
351			AC_SUBST(HAVE_XMLPARSE_H)
352			AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
353				[Use xmlparse.h instead of expat.h])
354		else
355			AC_MSG_ERROR([
356*** expat is required. or try to use --enable-libxml2])
357		fi
358	fi
359	AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
360	if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
361		AC_MSG_ERROR([
362*** expat is required. or try to use --enable-libxml2])
363	fi
364	CPPFLAGS="$expatsaved_CPPFLAGS"
365	LIBS="$expatsaved_LIBS"
366
367	AC_SUBST(EXPAT_CFLAGS)
368	AC_SUBST(EXPAT_LIBS)
369fi
370
371#
372# Check libxml2 configuration
373#
374AC_ARG_ENABLE(libxml2,
375	[AC_HELP_STRING([--enable-libxml2],
376			[Use libxml2 instead of Expat])])
377
378if test "$enable_libxml2" = "yes"; then
379    PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
380    AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
381
382    AC_SUBST(LIBXML2_CFLAGS)
383    AC_SUBST(LIBXML2_LIBS)
384
385    fc_saved_CFLAGS="$CFLAGS"
386    CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
387    AC_MSG_CHECKING([SAX1 support in libxml2])
388    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
389	#include <libxml/xmlversion.h>
390	#if !defined(LIBXML_SAX1_ENABLED)
391	#  include "error: No SAX1 support in libxml2"
392	#endif
393	]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
394*** SAX1 support in libxml2 is required. enable it or use expat instead.])])
395    CFLAGS="$fc_saved_CFLAGS"
396fi
397
398#
399# Set default font directory
400#
401
402AC_ARG_WITH(default-fonts,
403	[AC_HELP_STRING([--with-default-fonts=DIR],
404			[Use fonts from DIR when config is busted])],
405	default_fonts="$withval", default_fonts=yes)
406
407case "$default_fonts" in
408yes)
409	if test "$os_win32" = "yes"; then
410		FC_DEFAULT_FONTS="WINDOWSFONTDIR"
411		AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
412				   [Windows font directory])
413	else
414		FC_DEFAULT_FONTS="/usr/share/fonts"
415		AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
416				   [System font directory])
417	fi
418	;;
419*)
420	FC_DEFAULT_FONTS="$default_fonts"
421	AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
422			   [System font directory])
423	;;
424esac
425
426AC_SUBST(FC_DEFAULT_FONTS)
427
428#
429# Add more fonts if available.  By default, add only the directories
430# with outline fonts; those with bitmaps can be added as desired in
431# local.conf or ~/.fonts.conf
432#
433AC_ARG_WITH(add-fonts,
434	[AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
435			[Find additional fonts in DIR1,DIR2,... ])],
436	add_fonts="$withval", add_fonts=yes)
437
438case "$add_fonts" in
439yes)
440	FC_ADD_FONTS=""
441	for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
442		case x"$FC_ADD_FONTS" in
443		x)
444			sub="$dir/fonts"
445			if test -d "$sub"; then
446				case x$FC_ADD_FONTS in
447				x)
448					FC_ADD_FONTS="$sub"
449					;;
450				*)
451					FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
452					;;
453				esac
454			fi
455			;;
456		esac
457	done
458	AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
459	;;
460no)
461	FC_ADD_FONTS=""
462	;;
463*)
464	FC_ADD_FONTS="$add_fonts"
465	AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
466	;;
467esac
468
469AC_SUBST(FC_ADD_FONTS)
470
471FC_FONTPATH=""
472
473case "$FC_ADD_FONTS" in
474"")
475	;;
476*)
477	FC_FONTPATH=`echo $FC_ADD_FONTS | 
478			sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
479	;;
480esac
481
482AC_SUBST(FC_FONTPATH)
483
484#
485# Set default cache directory path
486#
487AC_ARG_WITH(cache-dir,
488	[AC_HELP_STRING([--with-cache-dir=DIR],
489			[Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
490	fc_cachedir="$withval", fc_cachedir=yes)
491
492case $fc_cachedir in
493no|yes)
494	if test "$os_win32" = "yes"; then
495		fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
496	else
497		fc_cachedir='${localstatedir}/cache/${PACKAGE}'
498	fi
499	;;
500*)
501	;;
502esac
503AC_SUBST(fc_cachedir)
504FC_CACHEDIR=${fc_cachedir}
505AC_SUBST(FC_CACHEDIR)
506
507FC_FONTDATE=`LC_ALL=C date`
508
509AC_SUBST(FC_FONTDATE)
510
511#
512# Set configuration paths
513#
514
515AC_ARG_WITH(templatedir,
516	[AC_HELP_STRING([--with-templatedir=DIR],
517			[Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
518	[templatedir="$withval"],
519	[templatedir=yes])
520AC_ARG_WITH(baseconfigdir,
521	[AC_HELP_STRING([--with-baseconfigdir=DIR],
522			[Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
523	[baseconfigdir="$withval"],
524	[baseconfigdir=yes])
525AC_ARG_WITH(configdir,
526	[AC_HELP_STRING([--with-configdir=DIR],
527			[Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
528	[configdir="$withval"],
529	[configdir=yes])
530AC_ARG_WITH(xmldir,
531	[AC_HELP_STRING([--with-xmldir=DIR],
532			[Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
533	[xmldir="$withval"],
534	[xmldir=yes])
535
536case "$templatedir" in
537no|yes)
538	templatedir='${datadir}'/fontconfig/conf.avail
539	;;
540*)
541	;;
542esac
543case "$baseconfigdir" in
544no|yes)
545	baseconfigdir='${sysconfdir}'/fonts
546	;;
547*)
548	;;
549esac
550case "$configdir" in
551no|yes)
552	configdir='${baseconfigdir}'/conf.d
553	;;
554*)
555	;;
556esac
557case "$xmldir" in
558no|yes)
559	xmldir='${datadir}'/xml/fontconfig
560	;;
561*)
562	;;
563esac
564
565TEMPLATEDIR=${templatedir}
566BASECONFIGDIR=${baseconfigdir}
567CONFIGDIR=${configdir}
568XMLDIR=${xmldir}
569AC_SUBST(templatedir)
570AC_SUBST(TEMPLATEDIR)
571AC_SUBST(baseconfigdir)
572AC_SUBST(BASECONFIGDIR)
573AC_SUBST(configdir)
574AC_SUBST(CONFIGDIR)
575AC_SUBST(xmldir)
576AC_SUBST(XMLDIR)
577
578
579dnl ===========================================================================
580
581#
582# Thread-safety primitives
583#
584
585AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
586	fc_cv_have_intel_atomic_primitives=false
587	AC_TRY_LINK([
588		void memory_barrier (void) { __sync_synchronize (); }
589		int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
590		int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
591		void mutex_unlock (int *m) { __sync_lock_release (m); }
592		], [], fc_cv_have_intel_atomic_primitives=true
593	)
594])
595if $fc_cv_have_intel_atomic_primitives; then
596	AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
597fi
598
599AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
600	fc_cv_have_solaris_atomic_ops=false
601	AC_TRY_LINK([
602		#include <atomic.h>
603		/* This requires Solaris Studio 12.2 or newer: */
604		#include <mbarrier.h>
605		void memory_barrier (void) { __machine_rw_barrier (); }
606		int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
607		void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
608		], [], fc_cv_have_solaris_atomic_ops=true
609	)
610])
611if $fc_cv_have_solaris_atomic_ops; then
612	AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
613fi
614
615if test "$os_win32" = no && ! $have_pthread; then
616	AC_CHECK_HEADERS(sched.h)
617	AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
618fi
619
620have_pthread=false
621if test "$os_win32" = no; then
622	AX_PTHREAD([have_pthread=true])
623fi
624if $have_pthread; then
625	LIBS="$PTHREAD_LIBS $LIBS"
626	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
627	CC="$PTHREAD_CC"
628	AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
629fi
630AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
631
632
633dnl ===========================================================================
634
635#
636# Let people not build/install docs if they don't have docbook
637#
638
639AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
640
641AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
642
643default_docs="yes"
644#
645# Check if docs exist or can be created
646#
647if test x$HASDOCBOOK = xno; then
648	if test -f $srcdir/doc/fonts-conf.5; then
649		:
650	else
651		default_docs="no"
652	fi
653fi
654
655AC_ARG_ENABLE(docs,
656	[AC_HELP_STRING([--disable-docs],
657			[Don't build and install documentation])],
658	,
659	enable_docs=$default_docs)
660
661AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
662
663if test "x$enable_docs" = xyes; then
664	tmp=funcs.$$
665	cat $srcdir/doc/*.fncs | awk '
666	/^@TITLE@/	{ if (!done) { printf ("%s\n", $2); done = 1; } }
667	/^@FUNC@/	{ if (!done) { printf ("%s\n", $2); done = 1; } }
668	/^@@/		{ done = 0; }' > $tmp
669	DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
670	echo DOCMAN3 $DOCMAN3
671	rm -f $tmp
672else
673	DOCMAN3=""
674fi
675AC_SUBST(DOCMAN3)
676
677
678dnl Figure out what cache format suffix to use for this architecture
679AC_C_BIGENDIAN
680AC_CHECK_SIZEOF([void *])
681AC_CHECK_ALIGNOF([double])
682
683dnl include the header file for workaround of miscalculating size on autoconf
684dnl particularly for fat binaries
685AH_BOTTOM([#include "config-fixups.h"])
686
687AC_CONFIG_FILES([
688Makefile
689fontconfig/Makefile
690fc-lang/Makefile
691fc-glyphname/Makefile
692fc-case/Makefile
693src/Makefile
694conf.d/Makefile
695fc-cache/Makefile
696fc-cat/Makefile
697fc-list/Makefile
698fc-match/Makefile
699fc-pattern/Makefile
700fc-query/Makefile
701fc-scan/Makefile
702fc-validate/Makefile
703doc/Makefile
704doc/version.sgml
705test/Makefile
706fontconfig.spec
707fontconfig.pc
708fontconfig-zip
709])
710AC_OUTPUT
711