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