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