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