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