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