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