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