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