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