configure.ac revision a4e54154
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
36a4e54154SmrgAC_INIT([fontconfig], [2.14.0], [https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new])
37a4e54154SmrgAM_INIT_AUTOMAKE([1.11 parallel-tests dist-xz])
38ca08ab68Smrgm4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
39ca08ab68Smrg
40ca08ab68Smrgdnl ==========================================================================
41ca08ab68Smrg
42ca08ab68SmrgAC_CONFIG_HEADERS(config.h)
43ca08ab68SmrgAC_CONFIG_MACRO_DIR([m4])
44ca08ab68Smrg
45ca08ab68SmrgAC_PROG_CC
46c9710b42SmrgAC_USE_SYSTEM_EXTENSIONS
47c9710b42SmrgAC_SYS_LARGEFILE
48ca08ab68SmrgAC_PROG_INSTALL
49ca08ab68SmrgAC_PROG_LN_S
50ca08ab68SmrgAC_PROG_MAKE_SET
51ca08ab68SmrgPKG_PROG_PKG_CONFIG
52c9710b42Smrgm4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
53c9710b42Smrg
54c9710b42SmrgAM_MISSING_PROG([GIT], [git])
55c9710b42SmrgAM_MISSING_PROG([GPERF], [gperf])
56a4e54154SmrgAM_PATH_PYTHON([3])
57ca08ab68Smrg
58ca08ab68SmrgAC_MSG_CHECKING([for RM macro])
59ca08ab68Smrg_predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
60ca08ab68Smrgif test "x$_predefined_rm" = "x"; then
61ca08ab68Smrg	AC_MSG_RESULT([no predefined RM])
62ca08ab68Smrg	AC_CHECK_PROG(RM, rm, [rm -f])
63ca08ab68Smrgelse
64ca08ab68Smrg	AC_MSG_RESULT($_predefined_rm)
65ca08ab68Smrgfi
66ca08ab68Smrg
67b09479dcSmrgdnl Initialize libtool
68b09479dcSmrgLT_PREREQ([2.2])
69b09479dcSmrgLT_INIT([disable-static win32-dll])
70b09479dcSmrg
71b09479dcSmrgdnl libtool versioning
72b09479dcSmrg
73b09479dcSmrgdnl bump revision when fixing bugs
74b09479dcSmrgdnl bump current and age, reset revision to zero when adding APIs
75b09479dcSmrgdnl bump current, leave age, reset revision to zero when changing/removing APIS
76a32e9e42SmrgLIBT_CURRENT=13
77a32e9e42SmrgLIBT_REVISION=0
78b09479dcSmrgAC_SUBST(LIBT_CURRENT)
79b09479dcSmrgAC_SUBST(LIBT_REVISION)
80a32e9e42SmrgLIBT_AGE=12
81b09479dcSmrg
82b09479dcSmrgLIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
83b09479dcSmrgAC_SUBST(LIBT_VERSION_INFO)
84b09479dcSmrg
85b09479dcSmrgLIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
86b09479dcSmrgAC_SUBST(LIBT_CURRENT_MINUS_AGE)
87b09479dcSmrg
88b09479dcSmrgPKGCONFIG_REQUIRES=
89b09479dcSmrgPKGCONFIG_REQUIRES_PRIVATELY=
90b09479dcSmrg
91ca08ab68Smrgdnl ==========================================================================
92a4e54154SmrgAC_CANONICAL_HOST
93a4e54154Smrgos_win32=no
94a4e54154Smrgos_darwin=no
95a4e54154Smrgcase "${host_os}" in
96a4e54154Smrg	cygwin*|mingw*)
97a4e54154Smrg		os_win32=yes
98a4e54154Smrg		;;
99a4e54154Smrg	darwin*)
100a4e54154Smrg		os_darwin=yes
101a4e54154Smrg		;;
102ca08ab68Smrgesac
103ca08ab68SmrgAM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
104a4e54154SmrgAM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes")
105ca08ab68Smrg
106a32e9e42Smrgdnl ==========================================================================
107a32e9e42Smrgdnl gettext stuff
108a32e9e42Smrgdnl ==========================================================================
109a32e9e42SmrgGETTEXT_PACKAGE=$PACKAGE
110a32e9e42SmrgAC_SUBST(GETTEXT_PACKAGE)
111a32e9e42SmrgAC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
112a32e9e42Smrg
113a4e54154SmrgAM_GNU_GETTEXT_VERSION([0.19.7])
114a32e9e42SmrgAM_GNU_GETTEXT([external])
115a32e9e42Smrg
116a32e9e42Smrgdnl ==========================================================================
117a32e9e42Smrg
118ca08ab68Smrgif test "$os_win32" = "yes"; then
119ca08ab68Smrg  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
120ca08ab68Smrgfi
121ca08ab68SmrgAM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
122ca08ab68Smrg
123953daebaSmrgAC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
124ca08ab68SmrgWARN_CFLAGS=""
125953daebaSmrgWARNING_CPP_DIRECTIVE="no"
126ca08ab68Smrgif test "x$GCC" = "xyes"; then
127ca08ab68Smrg	WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
128ca08ab68Smrg	-Wmissing-prototypes -Wmissing-declarations \
129ca08ab68Smrg	-Wnested-externs -fno-strict-aliasing"
130953daebaSmrg	WARNING_CPP_DIRECTIVE="yes"
131953daebaSmrgelif test "x$SUNCC" = "xyes"; then
132953daebaSmrg	WARN_CFLAGS="-v -fd"
133953daebaSmrg	WARNING_CPP_DIRECTIVE="yes"
134953daebaSmrgfi
135953daebaSmrgif test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then
136ca08ab68Smrg	AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
137ca08ab68Smrg	[Can use #warning in C files])
138ca08ab68Smrgfi
139ca08ab68SmrgAC_SUBST(WARN_CFLAGS)
140ca08ab68Smrg
141ca08ab68Smrg
142ca08ab68Smrgdnl ==========================================================================
143ca08ab68Smrg
144c9710b42SmrgAX_CC_FOR_BUILD()
145c9710b42SmrgAC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
146ca08ab68SmrgAM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
147ca08ab68SmrgAM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
148ca08ab68Smrg
149ca08ab68Smrgdnl ==========================================================================
150ca08ab68Smrg
151ca08ab68SmrgAC_ARG_WITH(arch,
152ca08ab68Smrg	[AC_HELP_STRING([--with-arch=ARCH],
153ca08ab68Smrg			[Force architecture to ARCH])],
154ca08ab68Smrg	arch="$withval", arch=auto)
155ca08ab68Smrg
156ca08ab68Smrgif test "x$arch" != xauto; then
157ca08ab68Smrg	AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
158ca08ab68Smrgfi
159ca08ab68Smrg
160ca08ab68Smrg
161ca08ab68Smrgdnl ==========================================================================
162ca08ab68Smrg
163ca08ab68Smrg# Checks for header files.
164ca08ab68SmrgAC_HEADER_DIRENT
165ca08ab68SmrgAC_HEADER_STDC
166a4e54154SmrgAC_CHECK_HEADERS([dirent.h fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
167c9710b42SmrgAX_CREATE_STDINT_H([src/fcstdint.h])
168ca08ab68Smrg
169ca08ab68Smrg# Checks for typedefs, structures, and compiler characteristics.
170ca08ab68SmrgAC_C_CONST
171ca08ab68SmrgAC_C_INLINE
172ca08ab68SmrgAC_C_FLEXIBLE_ARRAY_MEMBER
173ca08ab68SmrgAC_TYPE_PID_T
174ca08ab68Smrg
175ca08ab68Smrg# Checks for library functions.
176ca08ab68SmrgAC_FUNC_VPRINTF
177ca08ab68SmrgAC_FUNC_MMAP
178a32e9e42SmrgAC_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])
179ca08ab68Smrg
180ca08ab68Smrgdnl AC_CHECK_FUNCS doesn't check for header files.
181ca08ab68Smrgdnl posix_fadvise() may be not available in older libc.
182b09479dcSmrgAC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
183953daebaSmrgAC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
184953daebaSmrg
185953daebaSmrg#
186953daebaSmrgAC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
187ca08ab68Smrg
188ca08ab68Smrg#
189ca08ab68Smrgif test "x$ac_cv_func_fstatvfs" = "xyes"; then
190ca08ab68Smrg	AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
191ca08ab68Smrg		[#include <sys/statvfs.h>])
192ca08ab68Smrgfi
193ca08ab68Smrgif test "x$ac_cv_func_fstatfs" = "xyes"; then
194ca08ab68Smrg	AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
195ca08ab68Smrg#ifdef HAVE_SYS_VFS_H
196ca08ab68Smrg#include <sys/vfs.h>
197ca08ab68Smrg#endif
198ca08ab68Smrg#ifdef HAVE_SYS_STATFS_H
199ca08ab68Smrg#include <sys/statfs.h>
200ca08ab68Smrg#endif
201ca08ab68Smrg#ifdef HAVE_SYS_PARAM_H
202ca08ab68Smrg#include <sys/param.h>
203ca08ab68Smrg#endif
204ca08ab68Smrg#ifdef HAVE_SYS_MOUNT_H
205ca08ab68Smrg#include <sys/mount.h>
206ca08ab68Smrg#endif])
207ca08ab68Smrgfi
208ca08ab68SmrgAC_CHECK_MEMBERS([struct dirent.d_type],,,
209ca08ab68Smrg	[#include <dirent.h>])
210953daebaSmrg
211953daebaSmrg# Check the argument type of the gperf hash/lookup function
212953daebaSmrgAC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function])
213953daebaSmrgfc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
214953daebaSmrgAC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
215953daebaSmrg	#include <string.h>
216953daebaSmrg
217953daebaSmrg	const char *in_word_set(register const char *, register size_t);
218953daebaSmrg	$fc_gperf_test
219953daebaSmrg	]])], [FC_GPERF_SIZE_T=size_t],
220953daebaSmrg	[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
221953daebaSmrg		#include <string.h>
222953daebaSmrg
223953daebaSmrg		const char *in_word_set(register const char *, register unsigned int);
224953daebaSmrg		$fc_gperf_test
225953daebaSmrg	]])], [FC_GPERF_SIZE_T="unsigned int"],
226953daebaSmrg	[AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])]
227953daebaSmrg)])
228953daebaSmrgAC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function])
229953daebaSmrgAC_MSG_RESULT($FC_GPERF_SIZE_T)
230ca08ab68Smrg
231ca08ab68Smrg#
232ca08ab68Smrg# Checks for iconv
233ca08ab68Smrg#
234ca08ab68SmrgAC_ARG_ENABLE(iconv,
235ca08ab68Smrg	[AC_HELP_STRING([--enable-iconv],
236ca08ab68Smrg			[Use iconv to support non-Unicode SFNT name])],
237ca08ab68Smrg	,enable_iconv=no)
238ca08ab68SmrgAC_ARG_WITH(libiconv,
239ca08ab68Smrg	[AC_HELP_STRING([--with-libiconv=DIR],
240ca08ab68Smrg			[Use libiconv in DIR])],
241ca08ab68Smrg	[if test "x$withval" = "xyes"; then
242ca08ab68Smrg		libiconv_prefix=$prefix
243ca08ab68Smrg	 else
244ca08ab68Smrg		libiconv_prefix=$withval
245ca08ab68Smrg	 fi],
246ca08ab68Smrg	[libiconv_prefix=auto])
247ca08ab68SmrgAC_ARG_WITH(libiconv-includes,
248ca08ab68Smrg	[AC_HELP_STRING([--with-libiconv-includes=DIR],
249ca08ab68Smrg			[Use libiconv includes in DIR])],
250ca08ab68Smrg	[libiconv_includes=$withval],
251ca08ab68Smrg	[libiconv_includes=auto])
252ca08ab68SmrgAC_ARG_WITH(libiconv-lib,
253ca08ab68Smrg	[AC_HELP_STRING([--with-libiconv-lib=DIR],
254ca08ab68Smrg			[Use libiconv library in DIR])],
255ca08ab68Smrg	[libiconv_lib=$withval],
256ca08ab68Smrg	[libiconv_lib=auto])
257ca08ab68Smrg
258ca08ab68Smrg# if no libiconv,libiconv-includes,libiconv-lib are specified,
259ca08ab68Smrg# libc's iconv has a priority.
260ca08ab68Smrgif test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
261ca08ab68Smrg	libiconv_cflags="-I${libiconv_includes}"
262ca08ab68Smrgelif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
263ca08ab68Smrg	libiconv_cflags="-I${libiconv_prefix}/include"
264ca08ab68Smrgelse
265ca08ab68Smrg	libiconv_cflags=""
266ca08ab68Smrgfi
267ca08ab68Smrglibiconv_libs=""
268ca08ab68Smrgif test "x$libiconv_cflags" != "x"; then
269ca08ab68Smrg	if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
270ca08ab68Smrg		libiconv_libs="-L${libiconv_lib} -liconv"
271ca08ab68Smrg	elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
272ca08ab68Smrg		libiconv_libs="-L${libiconv_prefix}/lib -liconv"
273ca08ab68Smrg	else
274ca08ab68Smrg		libiconv_libs="-liconv"
275ca08ab68Smrg	fi
276ca08ab68Smrgfi
277ca08ab68Smrg
278ca08ab68Smrguse_iconv=0
279ca08ab68Smrgif test "x$enable_iconv" != "xno"; then
280ca08ab68Smrg	AC_MSG_CHECKING([for a usable iconv])
281ca08ab68Smrg	if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
282ca08ab68Smrg		iconvsaved_CFLAGS="$CFLAGS"
283ca08ab68Smrg		iconvsaved_LIBS="$LIBS"
284ca08ab68Smrg		CFLAGS="$CFLAGS $libiconv_cflags"
285ca08ab68Smrg		LIBS="$LIBS $libiconv_libs"
286ca08ab68Smrg
287ca08ab68Smrg		AC_TRY_LINK([#include <iconv.h>],
288ca08ab68Smrg			[iconv_open ("from", "to");],
289ca08ab68Smrg			[iconv_type="libiconv"
2906fc018e4Smrg			 use_iconv=1
2916fc018e4Smrg			 ICONV_CFLAGS="$libiconv_cflags"
2926fc018e4Smrg			 ICONV_LIBS="$libiconv_libs"
2936fc018e4Smrg			 ],
294ca08ab68Smrg			[use_iconv=0])
295ca08ab68Smrg
296ca08ab68Smrg		CFLAGS="$iconvsaved_CFLAGS"
297ca08ab68Smrg		LIBS="$iconvsaved_LIBS"
298ca08ab68Smrg	fi
299ca08ab68Smrg	if test "x$use_iconv" = "x0"; then
300ca08ab68Smrg		AC_TRY_LINK([#include <iconv.h>],
301ca08ab68Smrg			[iconv_open ("from", "to");],
302ca08ab68Smrg			[iconv_type="libc"
303ca08ab68Smrg			 use_iconv=1],
304ca08ab68Smrg			[iconv_type="not found"
305ca08ab68Smrg			 use_iconv=0])
306ca08ab68Smrg	fi
307ca08ab68Smrg
308ca08ab68Smrg	AC_MSG_RESULT([$iconv_type])
309ca08ab68Smrg	AC_SUBST(ICONV_CFLAGS)
310ca08ab68Smrg	AC_SUBST(ICONV_LIBS)
311ca08ab68Smrgfi
312ca08ab68SmrgAC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
313ca08ab68Smrg#
314ca08ab68Smrg# Checks for FreeType
315ca08ab68Smrg#
316a32e9e42Smrgdnl See http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/VERSIONS.TXT for versioning in freetype
317a32e9e42SmrgPKG_CHECK_MODULES(FREETYPE, freetype2 >= 21.0.15)
318a32e9e42SmrgPKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2 >= 21.0.15"
319ca08ab68Smrg
320ca08ab68SmrgAC_SUBST(FREETYPE_LIBS)
321ca08ab68SmrgAC_SUBST(FREETYPE_CFLAGS)
322ca08ab68Smrg
323ca08ab68Smrgfontconfig_save_libs="$LIBS"
324ca08ab68Smrgfontconfig_save_cflags="$CFLAGS"
325ca08ab68SmrgLIBS="$LIBS $FREETYPE_LIBS"
326ca08ab68SmrgCFLAGS="$CFLAGS $FREETYPE_CFLAGS"
327a32e9e42SmrgAC_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)
328953daebaSmrg
329a32e9e42SmrgAC_COMPILE_IFELSE([AC_LANG_SOURCE([[
330a32e9e42Smrg	#include <ft2build.h>
331a32e9e42Smrg	#include FT_CONFIG_OPTIONS_H
332a32e9e42Smrg	#ifndef PCF_CONFIG_OPTION_LONG_FAMILY_NAMES
333a32e9e42Smrg	#  error "No pcf long family names support"
334a32e9e42Smrg	#endif
335a32e9e42Smrg	]])], [have_pcf_long_family_names=yes], [have_pcf_long_family_names=no])
336a32e9e42SmrgAM_CONDITIONAL(FREETYPE_PCF_LONG_FAMILY_NAMES, test "x$have_pcf_long_family_names" = xyes)
337953daebaSmrg
338ca08ab68SmrgLIBS="$fontconfig_save_libs"
339a32e9e42SmrgCFLAGS="$fontconfig_save_cflags"
340a32e9e42Smrg
341ca08ab68Smrg#
342ca08ab68Smrg# Check expat configuration
343ca08ab68Smrg#
344ca08ab68SmrgAC_ARG_WITH(expat,
345ca08ab68Smrg	[AC_HELP_STRING([--with-expat=DIR],
346ca08ab68Smrg			[Use Expat in DIR])],
347ca08ab68Smrg	[expat_prefix=$withval],
348ca08ab68Smrg	[expat_prefix=auto])
349ca08ab68SmrgAC_ARG_WITH(expat-includes,
350ca08ab68Smrg	[AC_HELP_STRING([--with-expat-includes=DIR],
351ca08ab68Smrg			[Use Expat includes in DIR])],
352ca08ab68Smrg	[expat_includes=$withval],
353ca08ab68Smrg	[expat_includes=auto])
354ca08ab68SmrgAC_ARG_WITH(expat-lib,
355ca08ab68Smrg	[AC_HELP_STRING([--with-expat-lib=DIR])],
356ca08ab68Smrg	[expat_lib=$withval],
357ca08ab68Smrg	[expat_lib=auto])
358ca08ab68Smrg
359ca08ab68Smrgif test "$enable_libxml2" != "yes"; then
360ca08ab68Smrg	use_pkgconfig_for_expat=yes
361ca08ab68Smrg	if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
362ca08ab68Smrg		PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
363ca08ab68Smrg	else
364ca08ab68Smrg		use_pkgconfig_for_expat=no
365ca08ab68Smrg	fi
366ca08ab68Smrg	if test "x$use_pkgconfig_for_expat" = "xno"; then
367ca08ab68Smrg		if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
368ca08ab68Smrg			EXPAT_CFLAGS="-I${expat_includes}"
369ca08ab68Smrg		elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
370ca08ab68Smrg			EXPAT_CFLAGS="-I${expat_prefix}/include"
371ca08ab68Smrg		else
372ca08ab68Smrg			EXPAT_CFLAGS=""
373ca08ab68Smrg		fi
374ca08ab68Smrg		if test "$expat_lib" != "auto"; then
375ca08ab68Smrg			EXPAT_LIBS="-L${expat_lib} -lexpat"
376ca08ab68Smrg		elif test "$expat_prefix" != "auto"; then
377ca08ab68Smrg			EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
378ca08ab68Smrg		else
379ca08ab68Smrg			EXPAT_LIBS="-lexpat"
380ca08ab68Smrg		fi
381a32e9e42Smrg		PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
382a32e9e42Smrg		PKG_EXPAT_LIBS=$EXPAT_LIBS
3836fc018e4Smrg	else
3846fc018e4Smrg		PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
385a32e9e42Smrg		PKG_EXPAT_CFLAGS=
386a32e9e42Smrg		PKG_EXPAT_LIBS=
387ca08ab68Smrg	fi
388ca08ab68Smrg
389ca08ab68Smrg	expatsaved_CPPFLAGS="$CPPFLAGS"
390ca08ab68Smrg	expatsaved_LIBS="$LIBS"
391ca08ab68Smrg	CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
392ca08ab68Smrg	LIBS="$LIBS $EXPAT_LIBS"
393ca08ab68Smrg
394ca08ab68Smrg	AC_CHECK_HEADER(expat.h)
395ca08ab68Smrg	if test "$ac_cv_header_expat_h" = "no"; then
396ca08ab68Smrg		AC_CHECK_HEADER(xmlparse.h)
397ca08ab68Smrg		if test "$ac_cv_header_xmlparse_h" = "yes"; then
398ca08ab68Smrg			HAVE_XMLPARSE_H=1
399ca08ab68Smrg			AC_SUBST(HAVE_XMLPARSE_H)
400ca08ab68Smrg			AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
401ca08ab68Smrg				[Use xmlparse.h instead of expat.h])
402ca08ab68Smrg		else
403ca08ab68Smrg			AC_MSG_ERROR([
404ca08ab68Smrg*** expat is required. or try to use --enable-libxml2])
405ca08ab68Smrg		fi
406ca08ab68Smrg	fi
407ca08ab68Smrg	AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
408ca08ab68Smrg	if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
409ca08ab68Smrg		AC_MSG_ERROR([
410ca08ab68Smrg*** expat is required. or try to use --enable-libxml2])
411ca08ab68Smrg	fi
412ca08ab68Smrg	CPPFLAGS="$expatsaved_CPPFLAGS"
413ca08ab68Smrg	LIBS="$expatsaved_LIBS"
414ca08ab68Smrg
415ca08ab68Smrg	AC_SUBST(EXPAT_CFLAGS)
416ca08ab68Smrg	AC_SUBST(EXPAT_LIBS)
417a32e9e42Smrg	AC_SUBST(PKG_EXPAT_CFLAGS)
418a32e9e42Smrg	AC_SUBST(PKG_EXPAT_LIBS)
419ca08ab68Smrgfi
420ca08ab68Smrg
421ca08ab68Smrg#
422ca08ab68Smrg# Check libxml2 configuration
423ca08ab68Smrg#
424ca08ab68SmrgAC_ARG_ENABLE(libxml2,
425ca08ab68Smrg	[AC_HELP_STRING([--enable-libxml2],
426ca08ab68Smrg			[Use libxml2 instead of Expat])])
427ca08ab68Smrg
428ca08ab68Smrgif test "$enable_libxml2" = "yes"; then
429ca08ab68Smrg    PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
430a32e9e42Smrg    PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6"
431ca08ab68Smrg    AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
432ca08ab68Smrg
433ca08ab68Smrg    AC_SUBST(LIBXML2_CFLAGS)
434ca08ab68Smrg    AC_SUBST(LIBXML2_LIBS)
435ca08ab68Smrg
436ca08ab68Smrg    fc_saved_CFLAGS="$CFLAGS"
437ca08ab68Smrg    CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
438ca08ab68Smrg    AC_MSG_CHECKING([SAX1 support in libxml2])
439ca08ab68Smrg    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
440ca08ab68Smrg	#include <libxml/xmlversion.h>
441ca08ab68Smrg	#if !defined(LIBXML_SAX1_ENABLED)
442ca08ab68Smrg	#  include "error: No SAX1 support in libxml2"
443ca08ab68Smrg	#endif
444ca08ab68Smrg	]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
445ca08ab68Smrg*** SAX1 support in libxml2 is required. enable it or use expat instead.])])
446ca08ab68Smrg    CFLAGS="$fc_saved_CFLAGS"
447ca08ab68Smrgfi
448ca08ab68Smrg
449a32e9e42Smrg#
450a32e9e42Smrg# Check json-c
451a32e9e42Smrg#
452a32e9e42SmrgPKG_CHECK_MODULES([JSONC], [json-c], [use_jsonc=yes], [use_jsonc=no])
453a32e9e42Smrg
454a32e9e42SmrgAM_CONDITIONAL(ENABLE_JSONC, test "x$use_jsonc" = "xyes")
455a32e9e42SmrgAC_SUBST(JSONC_CFLAGS)
456a32e9e42SmrgAC_SUBST(JSONC_LIBS)
457a32e9e42Smrg
458953daebaSmrg#
459953daebaSmrg# Set default hinting
460953daebaSmrg#
461953daebaSmrg
462953daebaSmrgAC_ARG_WITH(default-hinting,
463953daebaSmrg	[AC_HELP_STRING([--with-default-hinting=NAME],
464953daebaSmrg			[Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
465953daebaSmrg	preferred_hinting="$withval", preferred_hinting=slight)
466953daebaSmrg
467953daebaSmrgcase "$preferred_hinting" in
468953daebaSmrgnone|slight|medium|full)
469953daebaSmrg	PREFERRED_HINTING="$preferred_hinting"
470953daebaSmrg	AC_SUBST(PREFERRED_HINTING)
471953daebaSmrg	;;
472953daebaSmrg*)
473953daebaSmrg	AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
474953daebaSmrg	;;
475953daebaSmrgesac
476953daebaSmrg
477ca08ab68Smrg#
478ca08ab68Smrg# Set default font directory
479ca08ab68Smrg#
480ca08ab68Smrg
481ca08ab68SmrgAC_ARG_WITH(default-fonts,
482a4e54154Smrg	[AC_HELP_STRING([--with-default-fonts=DIR1,DIR2,...],
483a4e54154Smrg			[Use fonts from DIR1,DIR2,... when config is busted])],
484ca08ab68Smrg	default_fonts="$withval", default_fonts=yes)
485ca08ab68Smrg
486ca08ab68Smrgcase "$default_fonts" in
487ca08ab68Smrgyes)
488ca08ab68Smrg	if test "$os_win32" = "yes"; then
489a4e54154Smrg		default_fonts="WINDOWSFONTDIR,WINDOWSUSERFONTDIR"
490a4e54154Smrg	elif test "$os_darwin" = "yes"; then
491a4e54154Smrg		default_fonts="/System/Library/Fonts,/Library/Fonts,~/Library/Fonts,/System/Library/Assets/com_apple_MobileAsset_Font3,/System/Library/Assets/com_apple_MobileAsset_Font4"
492ca08ab68Smrg	else
493a4e54154Smrg		default_fonts="/usr/share/fonts"
494ca08ab68Smrg	fi
495ca08ab68Smrg	;;
496ca08ab68Smrgesac
497ca08ab68Smrg
498a4e54154SmrgFC_DEFAULT_FONTS=""
499a4e54154Smrgif test x${default_fonts+set} = xset; then
500a4e54154Smrg	fc_IFS=$IFS
501a4e54154Smrg	IFS=","
502a4e54154Smrg	for p in $default_fonts; do
503a4e54154Smrg		if test x"$FC_DEFAULT_FONTS" != x; then
504a4e54154Smrg			FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS "
505a4e54154Smrg		fi
506a4e54154Smrg		FC_DEFAULT_FONTS="$FC_DEFAULT_FONTS<dir>$p</dir>"
507a4e54154Smrg	done
508a4e54154Smrg	IFS=$fc_IFS
509a4e54154Smrgfi
510a4e54154Smrg
511a4e54154SmrgAC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$FC_DEFAULT_FONTS",
512a4e54154Smrg			   [System font directory])
513a4e54154Smrg
514ca08ab68SmrgAC_SUBST(FC_DEFAULT_FONTS)
515ca08ab68Smrg
516ca08ab68Smrg#
517ca08ab68Smrg# Add more fonts if available.  By default, add only the directories
518ca08ab68Smrg# with outline fonts; those with bitmaps can be added as desired in
519ca08ab68Smrg# local.conf or ~/.fonts.conf
520ca08ab68Smrg#
521ca08ab68SmrgAC_ARG_WITH(add-fonts,
522ca08ab68Smrg	[AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
523ca08ab68Smrg			[Find additional fonts in DIR1,DIR2,... ])],
524ca08ab68Smrg	add_fonts="$withval", add_fonts=yes)
525ca08ab68Smrg
526ca08ab68Smrgcase "$add_fonts" in
527ca08ab68Smrgyes)
528ca08ab68Smrg	FC_ADD_FONTS=""
529ca08ab68Smrg	for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
530ca08ab68Smrg		case x"$FC_ADD_FONTS" in
531ca08ab68Smrg		x)
532ca08ab68Smrg			sub="$dir/fonts"
533ca08ab68Smrg			if test -d "$sub"; then
534ca08ab68Smrg				case x$FC_ADD_FONTS in
535ca08ab68Smrg				x)
536ca08ab68Smrg					FC_ADD_FONTS="$sub"
537ca08ab68Smrg					;;
538ca08ab68Smrg				*)
539ca08ab68Smrg					FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
540ca08ab68Smrg					;;
541ca08ab68Smrg				esac
542ca08ab68Smrg			fi
543ca08ab68Smrg			;;
544ca08ab68Smrg		esac
545ca08ab68Smrg	done
546ca08ab68Smrg	AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
547ca08ab68Smrg	;;
548ca08ab68Smrgno)
549ca08ab68Smrg	FC_ADD_FONTS=""
550ca08ab68Smrg	;;
551ca08ab68Smrg*)
552ca08ab68Smrg	FC_ADD_FONTS="$add_fonts"
553ca08ab68Smrg	AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
554ca08ab68Smrg	;;
555ca08ab68Smrgesac
556ca08ab68Smrg
557ca08ab68SmrgAC_SUBST(FC_ADD_FONTS)
558ca08ab68Smrg
559ca08ab68SmrgFC_FONTPATH=""
560ca08ab68Smrg
561ca08ab68Smrgcase "$FC_ADD_FONTS" in
562ca08ab68Smrg"")
563ca08ab68Smrg	;;
564ca08ab68Smrg*)
565ca08ab68Smrg	FC_FONTPATH=`echo $FC_ADD_FONTS | 
566ca08ab68Smrg			sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
567ca08ab68Smrg	;;
568ca08ab68Smrgesac
569ca08ab68Smrg
570ca08ab68SmrgAC_SUBST(FC_FONTPATH)
571ca08ab68Smrg
572ca08ab68Smrg#
573ca08ab68Smrg# Set default cache directory path
574ca08ab68Smrg#
575ca08ab68SmrgAC_ARG_WITH(cache-dir,
576ca08ab68Smrg	[AC_HELP_STRING([--with-cache-dir=DIR],
577ca08ab68Smrg			[Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
578ca08ab68Smrg	fc_cachedir="$withval", fc_cachedir=yes)
579ca08ab68Smrg
580ca08ab68Smrgcase $fc_cachedir in
581ca08ab68Smrgno|yes)
582ca08ab68Smrg	if test "$os_win32" = "yes"; then
583b09479dcSmrg		fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
584ca08ab68Smrg	else
585ca08ab68Smrg		fc_cachedir='${localstatedir}/cache/${PACKAGE}'
586ca08ab68Smrg	fi
587ca08ab68Smrg	;;
588ca08ab68Smrg*)
589ca08ab68Smrg	;;
590ca08ab68Smrgesac
591ca08ab68SmrgAC_SUBST(fc_cachedir)
592ca08ab68SmrgFC_CACHEDIR=${fc_cachedir}
593ca08ab68SmrgAC_SUBST(FC_CACHEDIR)
594ca08ab68Smrg
595ca08ab68SmrgFC_FONTDATE=`LC_ALL=C date`
596ca08ab68Smrg
597ca08ab68SmrgAC_SUBST(FC_FONTDATE)
598ca08ab68Smrg
599ca08ab68Smrg#
600ca08ab68Smrg# Set configuration paths
601ca08ab68Smrg#
602ca08ab68Smrg
603ca08ab68SmrgAC_ARG_WITH(templatedir,
604ca08ab68Smrg	[AC_HELP_STRING([--with-templatedir=DIR],
605ca08ab68Smrg			[Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
606ca08ab68Smrg	[templatedir="$withval"],
607ca08ab68Smrg	[templatedir=yes])
608ca08ab68SmrgAC_ARG_WITH(baseconfigdir,
609ca08ab68Smrg	[AC_HELP_STRING([--with-baseconfigdir=DIR],
610ca08ab68Smrg			[Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
611ca08ab68Smrg	[baseconfigdir="$withval"],
612ca08ab68Smrg	[baseconfigdir=yes])
613ca08ab68SmrgAC_ARG_WITH(configdir,
614ca08ab68Smrg	[AC_HELP_STRING([--with-configdir=DIR],
615ca08ab68Smrg			[Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
616ca08ab68Smrg	[configdir="$withval"],
617ca08ab68Smrg	[configdir=yes])
618ca08ab68SmrgAC_ARG_WITH(xmldir,
619ca08ab68Smrg	[AC_HELP_STRING([--with-xmldir=DIR],
620ca08ab68Smrg			[Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
621ca08ab68Smrg	[xmldir="$withval"],
622ca08ab68Smrg	[xmldir=yes])
623ca08ab68Smrg
624ca08ab68Smrgcase "$templatedir" in
625ca08ab68Smrgno|yes)
626ca08ab68Smrg	templatedir='${datadir}'/fontconfig/conf.avail
627ca08ab68Smrg	;;
628ca08ab68Smrg*)
629ca08ab68Smrg	;;
630ca08ab68Smrgesac
631ca08ab68Smrgcase "$baseconfigdir" in
632ca08ab68Smrgno|yes)
633ca08ab68Smrg	baseconfigdir='${sysconfdir}'/fonts
634ca08ab68Smrg	;;
635ca08ab68Smrg*)
636ca08ab68Smrg	;;
637ca08ab68Smrgesac
638ca08ab68Smrgcase "$configdir" in
639ca08ab68Smrgno|yes)
6406fc018e4Smrg	configdir='${BASECONFIGDIR}'/conf.d
641ca08ab68Smrg	;;
642ca08ab68Smrg*)
643ca08ab68Smrg	;;
644ca08ab68Smrgesac
645ca08ab68Smrgcase "$xmldir" in
646ca08ab68Smrgno|yes)
647ca08ab68Smrg	xmldir='${datadir}'/xml/fontconfig
648ca08ab68Smrg	;;
649ca08ab68Smrg*)
650ca08ab68Smrg	;;
651ca08ab68Smrgesac
652ca08ab68Smrg
653ca08ab68SmrgTEMPLATEDIR=${templatedir}
654ca08ab68SmrgBASECONFIGDIR=${baseconfigdir}
655ca08ab68SmrgCONFIGDIR=${configdir}
656ca08ab68SmrgXMLDIR=${xmldir}
657ca08ab68SmrgAC_SUBST(TEMPLATEDIR)
658ca08ab68SmrgAC_SUBST(BASECONFIGDIR)
659ca08ab68SmrgAC_SUBST(CONFIGDIR)
660ca08ab68SmrgAC_SUBST(XMLDIR)
661ca08ab68Smrg
662c9710b42Smrg
663c9710b42Smrgdnl ===========================================================================
664c9710b42Smrg
665c9710b42Smrg#
666c9710b42Smrg# Thread-safety primitives
667c9710b42Smrg#
668c9710b42Smrg
669a4e54154SmrgAC_CACHE_CHECK([stdatomic.h atomic primitives], fc_cv_have_stdatomic_atomic_primitives, [
670a4e54154Smrg	fc_cv_have_stdatomic_atomic_primitives=false
671a4e54154Smrg	AC_TRY_LINK([
672a4e54154Smrg		#include <stdatomic.h>
673a4e54154Smrg
674a4e54154Smrg		void memory_barrier (void) { atomic_thread_fence (memory_order_acq_rel); }
675a4e54154Smrg		int atomic_add (atomic_int *i) { return atomic_fetch_add_explicit (i, 1, memory_order_relaxed); }
676a4e54154Smrg		int mutex_trylock (atomic_flag *m) { return atomic_flag_test_and_set_explicit (m, memory_order_acquire); }
677a4e54154Smrg		void mutex_unlock (atomic_flag *m) { atomic_flag_clear_explicit (m, memory_order_release); }
678a4e54154Smrg		], [], fc_cv_have_stdatomic_atomic_primitives=true
679a4e54154Smrg	)
680a4e54154Smrg])
681a4e54154Smrgif $fc_cv_have_stdatomic_atomic_primitives; then
682a4e54154Smrg	AC_DEFINE(HAVE_STDATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
683a4e54154Smrgfi
684a4e54154Smrg
685c9710b42SmrgAC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
686c9710b42Smrg	fc_cv_have_intel_atomic_primitives=false
687c9710b42Smrg	AC_TRY_LINK([
688c9710b42Smrg		void memory_barrier (void) { __sync_synchronize (); }
689c9710b42Smrg		int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
690c9710b42Smrg		int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
691c9710b42Smrg		void mutex_unlock (int *m) { __sync_lock_release (m); }
692c9710b42Smrg		], [], fc_cv_have_intel_atomic_primitives=true
693c9710b42Smrg	)
694c9710b42Smrg])
695c9710b42Smrgif $fc_cv_have_intel_atomic_primitives; then
696c9710b42Smrg	AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
697c9710b42Smrgfi
698c9710b42Smrg
699c9710b42SmrgAC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
700c9710b42Smrg	fc_cv_have_solaris_atomic_ops=false
701c9710b42Smrg	AC_TRY_LINK([
702c9710b42Smrg		#include <atomic.h>
703c9710b42Smrg		/* This requires Solaris Studio 12.2 or newer: */
704c9710b42Smrg		#include <mbarrier.h>
705c9710b42Smrg		void memory_barrier (void) { __machine_rw_barrier (); }
706c9710b42Smrg		int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
707c9710b42Smrg		void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
708c9710b42Smrg		], [], fc_cv_have_solaris_atomic_ops=true
709c9710b42Smrg	)
710c9710b42Smrg])
711c9710b42Smrgif $fc_cv_have_solaris_atomic_ops; then
712c9710b42Smrg	AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
713c9710b42Smrgfi
714c9710b42Smrg
715c9710b42Smrgif test "$os_win32" = no && ! $have_pthread; then
716c9710b42Smrg	AC_CHECK_HEADERS(sched.h)
717c9710b42Smrg	AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
718c9710b42Smrgfi
719c9710b42Smrg
720c9710b42Smrghave_pthread=false
721c9710b42Smrgif test "$os_win32" = no; then
722c9710b42Smrg	AX_PTHREAD([have_pthread=true])
723c9710b42Smrgfi
724c9710b42Smrgif $have_pthread; then
725c9710b42Smrg	LIBS="$PTHREAD_LIBS $LIBS"
726c9710b42Smrg	CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
727c9710b42Smrg	CC="$PTHREAD_CC"
728c9710b42Smrg	AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
729c9710b42Smrgfi
730c9710b42SmrgAM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
731c9710b42Smrg
732c9710b42Smrg
733c9710b42Smrgdnl ===========================================================================
734c9710b42Smrg
735ca08ab68Smrg#
736ca08ab68Smrg# Let people not build/install docs if they don't have docbook
737ca08ab68Smrg#
738ca08ab68Smrg
739ca08ab68SmrgAC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
740ca08ab68Smrg
741ca08ab68SmrgAM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
742ca08ab68Smrg
743ca08ab68Smrgdefault_docs="yes"
744ca08ab68Smrg#
745ca08ab68Smrg# Check if docs exist or can be created
746ca08ab68Smrg#
747ca08ab68Smrgif test x$HASDOCBOOK = xno; then
748ca08ab68Smrg	if test -f $srcdir/doc/fonts-conf.5; then
749ca08ab68Smrg		:
750ca08ab68Smrg	else
751ca08ab68Smrg		default_docs="no"
752ca08ab68Smrg	fi
753ca08ab68Smrgfi
754ca08ab68Smrg
755ca08ab68SmrgAC_ARG_ENABLE(docs,
756ca08ab68Smrg	[AC_HELP_STRING([--disable-docs],
757ca08ab68Smrg			[Don't build and install documentation])],
758ca08ab68Smrg	,
759ca08ab68Smrg	enable_docs=$default_docs)
760ca08ab68Smrg
761ca08ab68SmrgAM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
762ca08ab68Smrg
763ca08ab68Smrgif test "x$enable_docs" = xyes; then
764ca08ab68Smrg	tmp=funcs.$$
765ca08ab68Smrg	cat $srcdir/doc/*.fncs | awk '
766ca08ab68Smrg	/^@TITLE@/	{ if (!done) { printf ("%s\n", $2); done = 1; } }
767ca08ab68Smrg	/^@FUNC@/	{ if (!done) { printf ("%s\n", $2); done = 1; } }
768ca08ab68Smrg	/^@@/		{ done = 0; }' > $tmp
769ca08ab68Smrg	DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
770ca08ab68Smrg	echo DOCMAN3 $DOCMAN3
771ca08ab68Smrg	rm -f $tmp
772ca08ab68Smrgelse
773ca08ab68Smrg	DOCMAN3=""
774ca08ab68Smrgfi
775ca08ab68SmrgAC_SUBST(DOCMAN3)
776ca08ab68Smrg
777a4e54154Smrgdnl ===========================================================================
778a4e54154Smrgdefault_cache_build="yes"
779a4e54154Smrgif test $cross_compiling = "yes"; then
780a4e54154Smrg	default_cache_build="no"
781a4e54154Smrgfi
782a4e54154SmrgAC_ARG_ENABLE(cache-build,
783a4e54154Smrg	[AC_HELP_STRING([--disable-cache-build],
784a4e54154Smrg			[Don't run fc-cache during the build])],
785a4e54154Smrg	,
786a4e54154Smrg	enable_cache_build=$default_cache_build)
787a4e54154Smrg
788a4e54154SmrgAM_CONDITIONAL(ENABLE_CACHE_BUILD, test "x$enable_cache_build" = xyes)
789a4e54154Smrg
790ca08ab68Smrg
791ca08ab68Smrgdnl Figure out what cache format suffix to use for this architecture
792ca08ab68SmrgAC_C_BIGENDIAN
793ca08ab68SmrgAC_CHECK_SIZEOF([void *])
794ca08ab68SmrgAC_CHECK_ALIGNOF([double])
795953daebaSmrgAC_CHECK_ALIGNOF([void *])
796ca08ab68Smrg
797ca08ab68Smrgdnl include the header file for workaround of miscalculating size on autoconf
798ca08ab68Smrgdnl particularly for fat binaries
799ca08ab68SmrgAH_BOTTOM([#include "config-fixups.h"])
800ca08ab68Smrg
8016fc018e4Smrgdnl
8026fc018e4Smrgdnl
8036fc018e4SmrgAC_SUBST(PKGCONFIG_REQUIRES)
8046fc018e4SmrgAC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)
8056fc018e4Smrg
8066fc018e4Smrgdnl
807c9710b42SmrgAC_CONFIG_FILES([
808ca08ab68SmrgMakefile
809ca08ab68Smrgfontconfig/Makefile
810ca08ab68Smrgfc-lang/Makefile
811ca08ab68Smrgfc-case/Makefile
812ca08ab68Smrgsrc/Makefile
813ca08ab68Smrgconf.d/Makefile
814ca08ab68Smrgfc-cache/Makefile
815ca08ab68Smrgfc-cat/Makefile
816a32e9e42Smrgfc-conflist/Makefile
817ca08ab68Smrgfc-list/Makefile
818ca08ab68Smrgfc-match/Makefile
819ca08ab68Smrgfc-pattern/Makefile
820ca08ab68Smrgfc-query/Makefile
821ca08ab68Smrgfc-scan/Makefile
822c9710b42Smrgfc-validate/Makefile
823ca08ab68Smrgdoc/Makefile
824ca08ab68Smrgdoc/version.sgml
825a32e9e42Smrgits/Makefile
826a32e9e42Smrgpo/Makefile.in
827a32e9e42Smrgpo-conf/Makefile.in
828ca08ab68Smrgtest/Makefile
829ca08ab68Smrgfontconfig.pc
830ca08ab68Smrgfontconfig-zip
831ca08ab68Smrg])
832c9710b42SmrgAC_OUTPUT
833