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