Remove chown, chmod for fontconfig cache path
[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.12.1], [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 AM_PATH_PYTHON(,, [:])
57 AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :])
58
59 AC_MSG_CHECKING([for RM macro])
60 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
61 if test "x$_predefined_rm" = "x"; then
62         AC_MSG_RESULT([no predefined RM])
63         AC_CHECK_PROG(RM, rm, [rm -f])
64 else
65         AC_MSG_RESULT($_predefined_rm)
66 fi
67
68 dnl Initialize libtool
69 LT_PREREQ([2.2])
70 LT_INIT([disable-static win32-dll])
71
72 dnl libtool versioning
73
74 dnl bump revision when fixing bugs
75 dnl bump current and age, reset revision to zero when adding APIs
76 dnl bump current, leave age, reset revision to zero when changing/removing APIS
77 LIBT_CURRENT=10
78 LIBT_REVISION=2
79 AC_SUBST(LIBT_CURRENT)
80 AC_SUBST(LIBT_REVISION)
81 LIBT_AGE=9
82
83 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
84 AC_SUBST(LIBT_VERSION_INFO)
85
86 LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
87 AC_SUBST(LIBT_CURRENT_MINUS_AGE)
88
89 PKGCONFIG_REQUIRES=
90 PKGCONFIG_REQUIRES_PRIVATELY=
91
92 dnl ==========================================================================
93
94 case "$host" in
95   *-*-mingw*)
96     os_win32=yes
97     ;;
98   *)
99     os_win32=no
100 esac
101 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
102
103 if test "$os_win32" = "yes"; then
104   AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
105 fi
106 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
107
108 AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
109 WARN_CFLAGS=""
110 WARNING_CPP_DIRECTIVE="no"
111 if test "x$GCC" = "xyes"; then
112         WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
113         -Wmissing-prototypes -Wmissing-declarations \
114         -Wnested-externs -fno-strict-aliasing"
115         WARNING_CPP_DIRECTIVE="yes"
116 elif test "x$SUNCC" = "xyes"; then
117         WARN_CFLAGS="-v -fd"
118         WARNING_CPP_DIRECTIVE="yes"
119 fi
120 if test "x$WARNING_CPP_DIRECTIVE" = "xyes"; then
121         AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
122         [Can use #warning in C files])
123 fi
124 AC_SUBST(WARN_CFLAGS)
125
126
127 dnl ==========================================================================
128
129 AX_CC_FOR_BUILD()
130 AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
131 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
132 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
133
134 dnl ==========================================================================
135
136 AC_ARG_WITH(arch,
137         [AC_HELP_STRING([--with-arch=ARCH],
138                         [Force architecture to ARCH])],
139         arch="$withval", arch=auto)
140
141 if test "x$arch" != xauto; then
142         AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
143 fi
144
145
146 dnl ==========================================================================
147
148 # Checks for header files.
149 AC_HEADER_DIRENT
150 AC_HEADER_STDC
151 AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h sys/statvfs.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
152 AX_CREATE_STDINT_H([src/fcstdint.h])
153
154 # Checks for typedefs, structures, and compiler characteristics.
155 AC_C_CONST
156 AC_C_INLINE
157 AC_C_FLEXIBLE_ARRAY_MEMBER
158 AC_TYPE_PID_T
159
160 # Checks for library functions.
161 AC_FUNC_VPRINTF
162 AC_FUNC_MMAP
163 AC_CHECK_FUNCS([link mkstemp mkostemp _mktemp_s mkdtemp getopt getopt_long getprogname getexecname rand random lrand48 random_r rand_r readlink fstatvfs fstatfs lstat])
164
165 dnl AC_CHECK_FUNCS doesn't check for header files.
166 dnl posix_fadvise() may be not available in older libc.
167 AC_CHECK_SYMBOL([posix_fadvise], [fcntl.h], [fc_func_posix_fadvise=1], [fc_func_posix_fadvise=0])
168 AC_DEFINE_UNQUOTED([HAVE_POSIX_FADVISE], [$fc_func_posix_fadvise], [Define to 1 if you have the 'posix_fadvise' function.])
169
170 #
171 AC_CHECK_MEMBERS([struct stat.st_mtim],,, [#include <sys/stat.h>])
172
173 #
174 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
175         AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
176                 [#include <sys/statvfs.h>])
177 fi
178 if test "x$ac_cv_func_fstatfs" = "xyes"; then
179         AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
180 #ifdef HAVE_SYS_VFS_H
181 #include <sys/vfs.h>
182 #endif
183 #ifdef HAVE_SYS_STATFS_H
184 #include <sys/statfs.h>
185 #endif
186 #ifdef HAVE_SYS_PARAM_H
187 #include <sys/param.h>
188 #endif
189 #ifdef HAVE_SYS_MOUNT_H
190 #include <sys/mount.h>
191 #endif])
192 fi
193 AC_CHECK_MEMBERS([struct dirent.d_type],,,
194         [#include <dirent.h>])
195
196 #
197 # Checks for iconv
198 #
199 AC_ARG_ENABLE(iconv,
200         [AC_HELP_STRING([--enable-iconv],
201                         [Use iconv to support non-Unicode SFNT name])],
202         ,enable_iconv=no)
203 AC_ARG_WITH(libiconv,
204         [AC_HELP_STRING([--with-libiconv=DIR],
205                         [Use libiconv in DIR])],
206         [if test "x$withval" = "xyes"; then
207                 libiconv_prefix=$prefix
208          else
209                 libiconv_prefix=$withval
210          fi],
211         [libiconv_prefix=auto])
212 AC_ARG_WITH(libiconv-includes,
213         [AC_HELP_STRING([--with-libiconv-includes=DIR],
214                         [Use libiconv includes in DIR])],
215         [libiconv_includes=$withval],
216         [libiconv_includes=auto])
217 AC_ARG_WITH(libiconv-lib,
218         [AC_HELP_STRING([--with-libiconv-lib=DIR],
219                         [Use libiconv library in DIR])],
220         [libiconv_lib=$withval],
221         [libiconv_lib=auto])
222
223 # if no libiconv,libiconv-includes,libiconv-lib are specified,
224 # libc's iconv has a priority.
225 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
226         libiconv_cflags="-I${libiconv_includes}"
227 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
228         libiconv_cflags="-I${libiconv_prefix}/include"
229 else
230         libiconv_cflags=""
231 fi
232 libiconv_libs=""
233 if test "x$libiconv_cflags" != "x"; then
234         if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
235                 libiconv_libs="-L${libiconv_lib} -liconv"
236         elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
237                 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
238         else
239                 libiconv_libs="-liconv"
240         fi
241 fi
242
243 use_iconv=0
244 if test "x$enable_iconv" != "xno"; then
245         AC_MSG_CHECKING([for a usable iconv])
246         if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
247                 iconvsaved_CFLAGS="$CFLAGS"
248                 iconvsaved_LIBS="$LIBS"
249                 CFLAGS="$CFLAGS $libiconv_cflags"
250                 LIBS="$LIBS $libiconv_libs"
251
252                 AC_TRY_LINK([#include <iconv.h>],
253                         [iconv_open ("from", "to");],
254                         [iconv_type="libiconv"
255                          use_iconv=1
256                          ICONV_CFLAGS="$libiconv_cflags"
257                          ICONV_LIBS="$libiconv_libs"
258                          ],
259                         [use_iconv=0])
260
261                 CFLAGS="$iconvsaved_CFLAGS"
262                 LIBS="$iconvsaved_LIBS"
263         fi
264         if test "x$use_iconv" = "x0"; then
265                 AC_TRY_LINK([#include <iconv.h>],
266                         [iconv_open ("from", "to");],
267                         [iconv_type="libc"
268                          use_iconv=1],
269                         [iconv_type="not found"
270                          use_iconv=0])
271         fi
272
273         AC_MSG_RESULT([$iconv_type])
274         AC_SUBST(ICONV_CFLAGS)
275         AC_SUBST(ICONV_LIBS)
276 fi
277 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
278 #
279 # Checks for FreeType
280 #
281 PKG_CHECK_MODULES(FREETYPE, freetype2)
282 PKGCONFIG_REQUIRES="$PKGCONFIG_REQUIRES freetype2"
283
284 AC_SUBST(FREETYPE_LIBS)
285 AC_SUBST(FREETYPE_CFLAGS)
286
287 fontconfig_save_libs="$LIBS"
288 fontconfig_save_cflags="$CFLAGS"
289 LIBS="$LIBS $FREETYPE_LIBS"
290 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
291 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)
292 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
293                 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
294                 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
295 [#include <ft2build.h>
296 #include FT_FREETYPE_H])
297 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
298                    [FT_Bitmap_Size structure includes y_ppem field])
299 AC_CHECK_MEMBERS([TT_OS2.usLowerOpticalPointSize, TT_OS2.usUpperOpticalPointSize], [], [], [[
300 #include <ft2build.h>
301 #include FT_FREETYPE_H
302 #include FT_TRUETYPE_TABLES_H]])
303 CFLAGS="$fontconfig_save_cflags"
304 LIBS="$fontconfig_save_libs"
305
306 #
307 # Check expat configuration
308 #
309 AC_ARG_WITH(expat,
310         [AC_HELP_STRING([--with-expat=DIR],
311                         [Use Expat in DIR])],
312         [expat_prefix=$withval],
313         [expat_prefix=auto])
314 AC_ARG_WITH(expat-includes,
315         [AC_HELP_STRING([--with-expat-includes=DIR],
316                         [Use Expat includes in DIR])],
317         [expat_includes=$withval],
318         [expat_includes=auto])
319 AC_ARG_WITH(expat-lib,
320         [AC_HELP_STRING([--with-expat-lib=DIR])],
321         [expat_lib=$withval],
322         [expat_lib=auto])
323
324 if test "$enable_libxml2" != "yes"; then
325         use_pkgconfig_for_expat=yes
326         if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
327                 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
328         else
329                 use_pkgconfig_for_expat=no
330         fi
331         if test "x$use_pkgconfig_for_expat" = "xno"; then
332                 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
333                         EXPAT_CFLAGS="-I${expat_includes}"
334                 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
335                         EXPAT_CFLAGS="-I${expat_prefix}/include"
336                 else
337                         EXPAT_CFLAGS=""
338                 fi
339                 if test "$expat_lib" != "auto"; then
340                         EXPAT_LIBS="-L${expat_lib} -lexpat"
341                 elif test "$expat_prefix" != "auto"; then
342                         EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
343                 else
344                         EXPAT_LIBS="-lexpat"
345                 fi
346         else
347                 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
348         fi
349
350         expatsaved_CPPFLAGS="$CPPFLAGS"
351         expatsaved_LIBS="$LIBS"
352         CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
353         LIBS="$LIBS $EXPAT_LIBS"
354
355         AC_CHECK_HEADER(expat.h)
356         if test "$ac_cv_header_expat_h" = "no"; then
357                 AC_CHECK_HEADER(xmlparse.h)
358                 if test "$ac_cv_header_xmlparse_h" = "yes"; then
359                         HAVE_XMLPARSE_H=1
360                         AC_SUBST(HAVE_XMLPARSE_H)
361                         AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
362                                 [Use xmlparse.h instead of expat.h])
363                 else
364                         AC_MSG_ERROR([
365 *** expat is required. or try to use --enable-libxml2])
366                 fi
367         fi
368         AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
369         if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
370                 AC_MSG_ERROR([
371 *** expat is required. or try to use --enable-libxml2])
372         fi
373         CPPFLAGS="$expatsaved_CPPFLAGS"
374         LIBS="$expatsaved_LIBS"
375
376         AC_SUBST(EXPAT_CFLAGS)
377         AC_SUBST(EXPAT_LIBS)
378 fi
379
380 #
381 # Check libxml2 configuration
382 #
383 AC_ARG_ENABLE(libxml2,
384         [AC_HELP_STRING([--enable-libxml2],
385                         [Use libxml2 instead of Expat])])
386
387 if test "$enable_libxml2" = "yes"; then
388     PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
389     PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0"
390     AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
391
392     AC_SUBST(LIBXML2_CFLAGS)
393     AC_SUBST(LIBXML2_LIBS)
394
395     fc_saved_CFLAGS="$CFLAGS"
396     CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
397     AC_MSG_CHECKING([SAX1 support in libxml2])
398     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
399         #include <libxml/xmlversion.h>
400         #if !defined(LIBXML_SAX1_ENABLED)
401         #  include "error: No SAX1 support in libxml2"
402         #endif
403         ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
404 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
405     CFLAGS="$fc_saved_CFLAGS"
406 fi
407
408 #
409 # Set default hinting
410 #
411
412 AC_ARG_WITH(default-hinting,
413         [AC_HELP_STRING([--with-default-hinting=NAME],
414                         [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
415         preferred_hinting="$withval", preferred_hinting=slight)
416
417 case "$preferred_hinting" in
418 none|slight|medium|full)
419         PREFERRED_HINTING="$preferred_hinting"
420         AC_SUBST(PREFERRED_HINTING)
421         ;;
422 *)
423         AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
424         ;;
425 esac
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 AC_CHECK_ALIGNOF([void *])
708
709 dnl include the header file for workaround of miscalculating size on autoconf
710 dnl particularly for fat binaries
711 AH_BOTTOM([#include "config-fixups.h"])
712
713 dnl
714 dnl
715 AC_SUBST(PKGCONFIG_REQUIRES)
716 AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)
717
718 dnl
719 AC_CONFIG_FILES([
720 Makefile
721 fontconfig/Makefile
722 fc-lang/Makefile
723 fc-glyphname/Makefile
724 fc-blanks/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