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