configure.ac revision a32e9e42
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.13.1], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new])
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=13
76LIBT_REVISION=0
77AC_SUBST(LIBT_CURRENT)
78AC_SUBST(LIBT_REVISION)
79LIBT_AGE=12
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 ==========================================================================
91case "$host" in
92  *-*-mingw*)
93    os_win32=yes
94    ;;
95  *)
96    os_win32=no
97esac
98AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
99
100dnl ==========================================================================
101dnl gettext stuff
102dnl ==========================================================================
103GETTEXT_PACKAGE=$PACKAGE
104AC_SUBST(GETTEXT_PACKAGE)
105AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
106
107AM_GNU_GETTEXT_VERSION([0.19.8])
108AM_GNU_GETTEXT([external])
109
110dnl ==========================================================================
111
112if test "$os_win32" = "yes"; then
113  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
114fi
115AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
116
117AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
118WARN_CFLAGS=""
119WARNING_CPP_DIRECTIVE="no"
120if 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"
125elif test "x$SUNCC" = "xyes"; then
126	WARN_CFLAGS="-v -fd"
127	WARNING_CPP_DIRECTIVE="yes"
128fi
129if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then
130	AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
131	[Can use #warning in C files])
132fi
133AC_SUBST(WARN_CFLAGS)
134
135
136dnl ==========================================================================
137
138AX_CC_FOR_BUILD()
139AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
140AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
141AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
142
143dnl ==========================================================================
144
145AC_ARG_WITH(arch,
146	[AC_HELP_STRING([--with-arch=ARCH],
147			[Force architecture to ARCH])],
148	arch="$withval", arch=auto)
149
150if test "x$arch" != xauto; then
151	AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
152fi
153
154
155dnl ==========================================================================
156
157# Checks for header files.
158AC_HEADER_DIRENT
159AC_HEADER_STDC
160AC_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])
161AX_CREATE_STDINT_H([src/fcstdint.h])
162
163# Checks for typedefs, structures, and compiler characteristics.
164AC_C_CONST
165AC_C_INLINE
166AC_C_FLEXIBLE_ARRAY_MEMBER
167AC_TYPE_PID_T
168
169# Checks for library functions.
170AC_FUNC_VPRINTF
171AC_FUNC_MMAP
172AC_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])
173
174dnl AC_CHECK_FUNCS doesn't check for header files.
175dnl posix_fadvise() may be not available in older libc.
176AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
177AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
178
179#
180AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
181
182#
183if 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>])
186fi
187if 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
190#include <sys/vfs.h>
191#endif
192#ifdef HAVE_SYS_STATFS_H
193#include <sys/statfs.h>
194#endif
195#ifdef HAVE_SYS_PARAM_H
196#include <sys/param.h>
197#endif
198#ifdef HAVE_SYS_MOUNT_H
199#include <sys/mount.h>
200#endif])
201fi
202AC_CHECK_MEMBERS([struct dirent.d_type],,,
203	[#include <dirent.h>])
204
205# Check the argument type of the gperf hash/lookup function
206AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function])
207fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
208AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
209	#include <string.h>
210
211	const char *in_word_set(register const char *, register size_t);
212	$fc_gperf_test
213	]])], [FC_GPERF_SIZE_T=size_t],
214	[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
215		#include <string.h>
216
217		const char *in_word_set(register const char *, register unsigned int);
218		$fc_gperf_test
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])]
221)])
222AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function])
223AC_MSG_RESULT($FC_GPERF_SIZE_T)
224
225#
226# Checks for iconv
227#
228AC_ARG_ENABLE(iconv,
229	[AC_HELP_STRING([--enable-iconv],
230			[Use iconv to support non-Unicode SFNT name])],
231	,enable_iconv=no)
232AC_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
237	 else
238		libiconv_prefix=$withval
239	 fi],
240	[libiconv_prefix=auto])
241AC_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])
246AC_ARG_WITH(libiconv-lib,
247	[AC_HELP_STRING([--with-libiconv-lib=DIR],
248			[Use libiconv library in DIR])],
249	[libiconv_lib=$withval],
250	[libiconv_lib=auto])
251
252# if no libiconv,libiconv-includes,libiconv-lib are specified,
253# libc's iconv has a priority.
254if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
255	libiconv_cflags="-I${libiconv_includes}"
256elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
257	libiconv_cflags="-I${libiconv_prefix}/include"
258else
259	libiconv_cflags=""
260fi
261libiconv_libs=""
262if 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"
267	else
268		libiconv_libs="-liconv"
269	fi
270fi
271
272use_iconv=0
273if 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"
280
281		AC_TRY_LINK([#include <iconv.h>],
282			[iconv_open ("from", "to");],
283			[iconv_type="libiconv"
284			 use_iconv=1
285			 ICONV_CFLAGS="$libiconv_cflags"
286			 ICONV_LIBS="$libiconv_libs"
287			 ],
288			[use_iconv=0])
289
290		CFLAGS="$iconvsaved_CFLAGS"
291		LIBS="$iconvsaved_LIBS"
292	fi
293	if test "x$use_iconv" = "x0"; then
294		AC_TRY_LINK([#include <iconv.h>],
295			[iconv_open ("from", "to");],
296			[iconv_type="libc"
297			 use_iconv=1],
298			[iconv_type="not found"
299			 use_iconv=0])
300	fi
301
302	AC_MSG_RESULT([$iconv_type])
303	AC_SUBST(ICONV_CFLAGS)
304	AC_SUBST(ICONV_LIBS)
305fi
306AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
307#
308# Checks for FreeType
309#
310dnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
311PKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
312PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15"
313
314AC_SUBST(FREETYPE_LIBS)
315AC_SUBST(FREETYPE_CFLAGS)
316
317fontconfig_save_libs="$LIBS"
318fontconfig_save_cflags="$CFLAGS"
319LIBS="$LIBS $FREETYPE_LIBS"
320CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
321AC_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)
322
323AC_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"
328	#endif
329	]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no])
330AM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes)
331
332LIBS="$fontconfig_save_libs"
333CFLAGS="$fontconfig_save_cflags"
334
335#
336# Check for uuid
337#
338if test "$os_win32" != "yes"; then
339	use_pkgconfig_for_uuid=yes
340	if test -n "${UUID_LIBS}"; then
341		save_UUID_LIBS=$UUID_LIBS
342	fi
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])
351			 UUID_CFLAGS=""
352			 UUID_LIBS=""
353			],[AC_MSG_ERROR([
354*** uuid is required. install util-linux.
355			])])
356	else
357		if test -z "${save_UUID_LIBS+x}" && test "x${UUID_LIBS}" != "x"; then
358			PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid"
359		fi
360	fi
361else
362	UUID_CFLAGS=""
363	UUID_LIBS=""
364fi
365AC_SUBST(UUID_CFLAGS)
366AC_SUBST(UUID_LIBS)
367
368#
369# Check expat configuration
370#
371AC_ARG_WITH(expat,
372	[AC_HELP_STRING([--with-expat=DIR],
373			[Use Expat in DIR])],
374	[expat_prefix=$withval],
375	[expat_prefix=auto])
376AC_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])
381AC_ARG_WITH(expat-lib,
382	[AC_HELP_STRING([--with-expat-lib=DIR])],
383	[expat_lib=$withval],
384	[expat_lib=auto])
385
386if 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)
390	else
391		use_pkgconfig_for_expat=no
392	fi
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"
398		else
399			EXPAT_CFLAGS=""
400		fi
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"
405		else
406			EXPAT_LIBS="-lexpat"
407		fi
408		PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
409		PKG_EXPAT_LIBS=$EXPAT_LIBS
410	else
411		PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
412		PKG_EXPAT_CFLAGS=
413		PKG_EXPAT_LIBS=
414	fi
415
416	expatsaved_CPPFLAGS="$CPPFLAGS"
417	expatsaved_LIBS="$LIBS"
418	CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
419	LIBS="$LIBS $EXPAT_LIBS"
420
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
425			HAVE_XMLPARSE_H=1
426			AC_SUBST(HAVE_XMLPARSE_H)
427			AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
428				[Use xmlparse.h instead of expat.h])
429		else
430			AC_MSG_ERROR([
431*** expat is required. or try to use --enable-libxml2])
432		fi
433	fi
434	AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
435	if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
436		AC_MSG_ERROR([
437*** expat is required. or try to use --enable-libxml2])
438	fi
439	CPPFLAGS="$expatsaved_CPPFLAGS"
440	LIBS="$expatsaved_LIBS"
441
442	AC_SUBST(EXPAT_CFLAGS)
443	AC_SUBST(EXPAT_LIBS)
444	AC_SUBST(PKG_EXPAT_CFLAGS)
445	AC_SUBST(PKG_EXPAT_LIBS)
446fi
447
448#
449# Check libxml2 configuration
450#
451AC_ARG_ENABLE(libxml2,
452	[AC_HELP_STRING([--enable-libxml2],
453			[Use libxml2 instead of Expat])])
454
455if 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])
459
460    AC_SUBST(LIBXML2_CFLAGS)
461    AC_SUBST(LIBXML2_LIBS)
462
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"
470	#endif
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"
474fi
475
476#
477# Check json-c
478#
479PKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no])
480
481AM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes")
482AC_SUBST(JSONC_CFLAGS)
483AC_SUBST(JSONC_LIBS)
484
485#
486# Set default hinting
487#
488
489AC_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)
493
494case "$preferred_hinting" in
495none|slight|medium|full)
496	PREFERRED_HINTING="$preferred_hinting"
497	AC_SUBST(PREFERRED_HINTING)
498	;;
499*)
500	AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
501	;;
502esac
503
504#
505# Set default font directory
506#
507
508AC_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)
512
513case "$default_fonts" in
514yes)
515	if test "$os_win32" = "yes"; then
516		FC_DEFAULT_FONTS="WINDOWSFONTDIR"
517		AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
518				   [Windows font directory])
519	else
520		FC_DEFAULT_FONTS="/usr/share/fonts"
521		AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
522				   [System font directory])
523	fi
524	;;
525*)
526	FC_DEFAULT_FONTS="$default_fonts"
527	AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
528			   [System font directory])
529	;;
530esac
531
532AC_SUBST(FC_DEFAULT_FONTS)
533
534#
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
538#
539AC_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)
543
544case "$add_fonts" in
545yes)
546	FC_ADD_FONTS=""
547	for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
548		case x"$FC_ADD_FONTS" in
549		x)
550			sub="$dir/fonts"
551			if test -d "$sub"; then
552				case x$FC_ADD_FONTS in
553				x)
554					FC_ADD_FONTS="$sub"
555					;;
556				*)
557					FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
558					;;
559				esac
560			fi
561			;;
562		esac
563	done
564	AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
565	;;
566no)
567	FC_ADD_FONTS=""
568	;;
569*)
570	FC_ADD_FONTS="$add_fonts"
571	AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
572	;;
573esac
574
575AC_SUBST(FC_ADD_FONTS)
576
577FC_FONTPATH=""
578
579case "$FC_ADD_FONTS" in
580"")
581	;;
582*)
583	FC_FONTPATH=`echo $FC_ADD_FONTS | 
584			sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
585	;;
586esac
587
588AC_SUBST(FC_FONTPATH)
589
590#
591# Set default cache directory path
592#
593AC_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)
597
598case $fc_cachedir in
599no|yes)
600	if test "$os_win32" = "yes"; then
601		fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
602	else
603		fc_cachedir='${localstatedir}/cache/${PACKAGE}'
604	fi
605	;;
606*)
607	;;
608esac
609AC_SUBST(fc_cachedir)
610FC_CACHEDIR=${fc_cachedir}
611AC_SUBST(FC_CACHEDIR)
612
613FC_FONTDATE=`LC_ALL=C date`
614
615AC_SUBST(FC_FONTDATE)
616
617#
618# Set configuration paths
619#
620
621AC_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"],
625	[templatedir=yes])
626AC_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"],
630	[baseconfigdir=yes])
631AC_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"],
635	[configdir=yes])
636AC_ARG_WITH(xmldir,
637	[AC_HELP_STRING([--with-xmldir=DIR],
638			[Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
639	[xmldir="$withval"],
640	[xmldir=yes])
641
642case "$templatedir" in
643no|yes)
644	templatedir='${datadir}'/fontconfig/conf.avail
645	;;
646*)
647	;;
648esac
649case "$baseconfigdir" in
650no|yes)
651	baseconfigdir='${sysconfdir}'/fonts
652	;;
653*)
654	;;
655esac
656case "$configdir" in
657no|yes)
658	configdir='${BASECONFIGDIR}'/conf.d
659	;;
660*)
661	;;
662esac
663case "$xmldir" in
664no|yes)
665	xmldir='${datadir}'/xml/fontconfig
666	;;
667*)
668	;;
669esac
670
671TEMPLATEDIR=${templatedir}
672BASECONFIGDIR=${baseconfigdir}
673CONFIGDIR=${configdir}
674XMLDIR=${xmldir}
675AC_SUBST(TEMPLATEDIR)
676AC_SUBST(BASECONFIGDIR)
677AC_SUBST(CONFIGDIR)
678AC_SUBST(XMLDIR)
679
680
681dnl ===========================================================================
682
683#
684# Thread-safety primitives
685#
686
687AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
688	fc_cv_have_intel_atomic_primitives=false
689	AC_TRY_LINK([
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
695	)
696])
697if $fc_cv_have_intel_atomic_primitives; then
698	AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
699fi
700
701AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
702	fc_cv_have_solaris_atomic_ops=false
703	AC_TRY_LINK([
704		#include <atomic.h>
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
711	)
712])
713if $fc_cv_have_solaris_atomic_ops; then
714	AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
715fi
716
717if 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]))
720fi
721
722have_pthread=false
723if test "$os_win32" = no; then
724	AX_PTHREAD([have_pthread=true])
725fi
726if $have_pthread; then
727	LIBS="$PTHREAD_LIBS $LIBS"
728	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
729	CC="$PTHREAD_CC"
730	AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
731fi
732AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
733
734
735dnl ===========================================================================
736
737#
738# Let people not build/install docs if they don't have docbook
739#
740
741AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
742
743AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
744
745default_docs="yes"
746#
747# Check if docs exist or can be created
748#
749if test x$HASDOCBOOK = xno; then
750	if test -f $srcdir/doc/fonts-conf.5; then
751		:
752	else
753		default_docs="no"
754	fi
755fi
756
757AC_ARG_ENABLE(docs,
758	[AC_HELP_STRING([--disable-docs],
759			[Don't build and install documentation])],
760	,
761	enable_docs=$default_docs)
762
763AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
764
765if test "x$enable_docs" = xyes; then
766	tmp=funcs.$$
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
773	rm -f $tmp
774else
775	DOCMAN3=""
776fi
777AC_SUBST(DOCMAN3)
778
779
780dnl Figure out what cache format suffix to use for this architecture
781AC_C_BIGENDIAN
782AC_CHECK_SIZEOF([void *])
783AC_CHECK_ALIGNOF([double])
784AC_CHECK_ALIGNOF([void *])
785
786dnl include the header file for workaround of miscalculating size on autoconf
787dnl particularly for fat binaries
788AH_BOTTOM([#include "config-fixups.h"])
789
790dnl
791dnl
792AC_SUBST(PKGCONFIG_REQUIRES)
793AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)
794
795dnl
796AC_CONFIG_FILES([
797Makefile
798fontconfig/Makefile
799fc-lang/Makefile
800fc-case/Makefile
801src/Makefile
802conf.d/Makefile
803fc-cache/Makefile
804fc-cat/Makefile
805fc-conflist/Makefile
806fc-list/Makefile
807fc-match/Makefile
808fc-pattern/Makefile
809fc-query/Makefile
810fc-scan/Makefile
811fc-validate/Makefile
812doc/Makefile
813doc/version.sgml
814its/Makefile
815po/Makefile.in
816po-conf/Makefile.in
817test/Makefile
818fontconfig.spec
819fontconfig.pc
820fontconfig-zip
821])
822AC_OUTPUT
823