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