Apply ASLR to new excutable file.
[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.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=12
76 LIBT_REVISION=1
77 AC_SUBST(LIBT_CURRENT)
78 AC_SUBST(LIBT_REVISION)
79 LIBT_AGE=11
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])
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         PKG_CHECK_MODULES([UUID], [uuid])
340         PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY uuid"
341 else
342         UUID_CFLAGS=""
343         UUID_LIBS=""
344 fi
345 AC_SUBST(UUID_CFLAGS)
346 AC_SUBST(UUID_LIBS)
347
348 #
349 # Check expat configuration
350 #
351 AC_ARG_WITH(expat,
352         [AC_HELP_STRING([--with-expat=DIR],
353                         [Use Expat in DIR])],
354         [expat_prefix=$withval],
355         [expat_prefix=auto])
356 AC_ARG_WITH(expat-includes,
357         [AC_HELP_STRING([--with-expat-includes=DIR],
358                         [Use Expat includes in DIR])],
359         [expat_includes=$withval],
360         [expat_includes=auto])
361 AC_ARG_WITH(expat-lib,
362         [AC_HELP_STRING([--with-expat-lib=DIR])],
363         [expat_lib=$withval],
364         [expat_lib=auto])
365
366 if test "$enable_libxml2" != "yes"; then
367         use_pkgconfig_for_expat=yes
368         if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
369                 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
370         else
371                 use_pkgconfig_for_expat=no
372         fi
373         if test "x$use_pkgconfig_for_expat" = "xno"; then
374                 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
375                         EXPAT_CFLAGS="-I${expat_includes}"
376                 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
377                         EXPAT_CFLAGS="-I${expat_prefix}/include"
378                 else
379                         EXPAT_CFLAGS=""
380                 fi
381                 if test "$expat_lib" != "auto"; then
382                         EXPAT_LIBS="-L${expat_lib} -lexpat"
383                 elif test "$expat_prefix" != "auto"; then
384                         EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
385                 else
386                         EXPAT_LIBS="-lexpat"
387                 fi
388                 PKG_EXPAT_CFLAGS=$EXPAT_CFLAGS
389                 PKG_EXPAT_LIBS=$EXPAT_LIBS
390         else
391                 PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY expat"
392                 PKG_EXPAT_CFLAGS=
393                 PKG_EXPAT_LIBS=
394         fi
395
396         expatsaved_CPPFLAGS="$CPPFLAGS"
397         expatsaved_LIBS="$LIBS"
398         CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
399         LIBS="$LIBS $EXPAT_LIBS"
400
401         AC_CHECK_HEADER(expat.h)
402         if test "$ac_cv_header_expat_h" = "no"; then
403                 AC_CHECK_HEADER(xmlparse.h)
404                 if test "$ac_cv_header_xmlparse_h" = "yes"; then
405                         HAVE_XMLPARSE_H=1
406                         AC_SUBST(HAVE_XMLPARSE_H)
407                         AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
408                                 [Use xmlparse.h instead of expat.h])
409                 else
410                         AC_MSG_ERROR([
411 *** expat is required. or try to use --enable-libxml2])
412                 fi
413         fi
414         AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
415         if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
416                 AC_MSG_ERROR([
417 *** expat is required. or try to use --enable-libxml2])
418         fi
419         CPPFLAGS="$expatsaved_CPPFLAGS"
420         LIBS="$expatsaved_LIBS"
421
422         AC_SUBST(EXPAT_CFLAGS)
423         AC_SUBST(EXPAT_LIBS)
424         AC_SUBST(PKG_EXPAT_CFLAGS)
425         AC_SUBST(PKG_EXPAT_LIBS)
426 fi
427
428 #
429 # Check libxml2 configuration
430 #
431 AC_ARG_ENABLE(libxml2,
432         [AC_HELP_STRING([--enable-libxml2],
433                         [Use libxml2 instead of Expat])])
434
435 if test "$enable_libxml2" = "yes"; then
436     PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
437     PKGCONFIG_REQUIRES_PRIVATELY="$PKGCONFIG_REQUIRES_PRIVATELY libxml-2.0 >= 2.6"
438     AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
439
440     AC_SUBST(LIBXML2_CFLAGS)
441     AC_SUBST(LIBXML2_LIBS)
442
443     fc_saved_CFLAGS="$CFLAGS"
444     CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
445     AC_MSG_CHECKING([SAX1 support in libxml2])
446     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
447         #include <libxml/xmlversion.h>
448         #if !defined(LIBXML_SAX1_ENABLED)
449         #  include "error: No SAX1 support in libxml2"
450         #endif
451         ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
452 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
453     CFLAGS="$fc_saved_CFLAGS"
454 fi
455
456 #
457 # Set default hinting
458 #
459
460 AC_ARG_WITH(default-hinting,
461         [AC_HELP_STRING([--with-default-hinting=NAME],
462                         [Enable your preferred hinting configuration (none/slight/medium/full) [default=slight]])],
463         preferred_hinting="$withval", preferred_hinting=slight)
464
465 case "$preferred_hinting" in
466 none|slight|medium|full)
467         PREFERRED_HINTING="$preferred_hinting"
468         AC_SUBST(PREFERRED_HINTING)
469         ;;
470 *)
471         AC_MSG_ERROR([Invalid hinting. please choose one of none, slight, medium, or full])
472         ;;
473 esac
474
475 #
476 # Set default font directory
477 #
478
479 AC_ARG_WITH(default-fonts,
480         [AC_HELP_STRING([--with-default-fonts=DIR],
481                         [Use fonts from DIR when config is busted])],
482         default_fonts="$withval", default_fonts=yes)
483
484 case "$default_fonts" in
485 yes)
486         if test "$os_win32" = "yes"; then
487                 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
488                 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
489                                    [Windows font directory])
490         else
491                 FC_DEFAULT_FONTS="/usr/share/fonts"
492                 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
493                                    [System font directory])
494         fi
495         ;;
496 *)
497         FC_DEFAULT_FONTS="$default_fonts"
498         AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
499                            [System font directory])
500         ;;
501 esac
502
503 AC_SUBST(FC_DEFAULT_FONTS)
504
505 #
506 # Add more fonts if available.  By default, add only the directories
507 # with outline fonts; those with bitmaps can be added as desired in
508 # local.conf or ~/.fonts.conf
509 #
510 AC_ARG_WITH(add-fonts,
511         [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
512                         [Find additional fonts in DIR1,DIR2,... ])],
513         add_fonts="$withval", add_fonts=yes)
514
515 case "$add_fonts" in
516 yes)
517         FC_ADD_FONTS=""
518         for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
519                 case x"$FC_ADD_FONTS" in
520                 x)
521                         sub="$dir/fonts"
522                         if test -d "$sub"; then
523                                 case x$FC_ADD_FONTS in
524                                 x)
525                                         FC_ADD_FONTS="$sub"
526                                         ;;
527                                 *)
528                                         FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
529                                         ;;
530                                 esac
531                         fi
532                         ;;
533                 esac
534         done
535         AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
536         ;;
537 no)
538         FC_ADD_FONTS=""
539         ;;
540 *)
541         FC_ADD_FONTS="$add_fonts"
542         AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
543         ;;
544 esac
545
546 AC_SUBST(FC_ADD_FONTS)
547
548 FC_FONTPATH=""
549
550 case "$FC_ADD_FONTS" in
551 "")
552         ;;
553 *)
554         FC_FONTPATH=`echo $FC_ADD_FONTS | 
555                         sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
556         ;;
557 esac
558
559 AC_SUBST(FC_FONTPATH)
560
561 #
562 # Set default cache directory path
563 #
564 AC_ARG_WITH(cache-dir,
565         [AC_HELP_STRING([--with-cache-dir=DIR],
566                         [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
567         fc_cachedir="$withval", fc_cachedir=yes)
568
569 case $fc_cachedir in
570 no|yes)
571         if test "$os_win32" = "yes"; then
572                 fc_cachedir="LOCAL_APPDATA_FONTCONFIG_CACHE"
573         else
574                 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
575         fi
576         ;;
577 *)
578         ;;
579 esac
580 AC_SUBST(fc_cachedir)
581 FC_CACHEDIR=${fc_cachedir}
582 AC_SUBST(FC_CACHEDIR)
583
584 FC_FONTDATE=`LC_ALL=C date`
585
586 AC_SUBST(FC_FONTDATE)
587
588 #
589 # Set configuration paths
590 #
591
592 AC_ARG_WITH(templatedir,
593         [AC_HELP_STRING([--with-templatedir=DIR],
594                         [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
595         [templatedir="$withval"],
596         [templatedir=yes])
597 AC_ARG_WITH(baseconfigdir,
598         [AC_HELP_STRING([--with-baseconfigdir=DIR],
599                         [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
600         [baseconfigdir="$withval"],
601         [baseconfigdir=yes])
602 AC_ARG_WITH(configdir,
603         [AC_HELP_STRING([--with-configdir=DIR],
604                         [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
605         [configdir="$withval"],
606         [configdir=yes])
607 AC_ARG_WITH(xmldir,
608         [AC_HELP_STRING([--with-xmldir=DIR],
609                         [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
610         [xmldir="$withval"],
611         [xmldir=yes])
612
613 case "$templatedir" in
614 no|yes)
615         templatedir='${datadir}'/fontconfig/conf.avail
616         ;;
617 *)
618         ;;
619 esac
620 case "$baseconfigdir" in
621 no|yes)
622         baseconfigdir='${sysconfdir}'/fonts
623         ;;
624 *)
625         ;;
626 esac
627 case "$configdir" in
628 no|yes)
629         configdir='${BASECONFIGDIR}'/conf.d
630         ;;
631 *)
632         ;;
633 esac
634 case "$xmldir" in
635 no|yes)
636         xmldir='${datadir}'/xml/fontconfig
637         ;;
638 *)
639         ;;
640 esac
641
642 TEMPLATEDIR=${templatedir}
643 BASECONFIGDIR=${baseconfigdir}
644 CONFIGDIR=${configdir}
645 XMLDIR=${xmldir}
646 AC_SUBST(TEMPLATEDIR)
647 AC_SUBST(BASECONFIGDIR)
648 AC_SUBST(CONFIGDIR)
649 AC_SUBST(XMLDIR)
650
651
652 dnl ===========================================================================
653
654 #
655 # Thread-safety primitives
656 #
657
658 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
659         fc_cv_have_intel_atomic_primitives=false
660         AC_TRY_LINK([
661                 void memory_barrier (void) { __sync_synchronize (); }
662                 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
663                 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
664                 void mutex_unlock (int *m) { __sync_lock_release (m); }
665                 ], [], fc_cv_have_intel_atomic_primitives=true
666         )
667 ])
668 if $fc_cv_have_intel_atomic_primitives; then
669         AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
670 fi
671
672 AC_CACHE_CHECK([for Solaris atomic operations], fc_cv_have_solaris_atomic_ops, [
673         fc_cv_have_solaris_atomic_ops=false
674         AC_TRY_LINK([
675                 #include <atomic.h>
676                 /* This requires Solaris Studio 12.2 or newer: */
677                 #include <mbarrier.h>
678                 void memory_barrier (void) { __machine_rw_barrier (); }
679                 int atomic_add (volatile unsigned *i) { return atomic_add_int_nv (i, 1); }
680                 void *atomic_ptr_cmpxchg (volatile void **target, void *cmp, void *newval) { return atomic_cas_ptr (target, cmp, newval); }
681                 ], [], fc_cv_have_solaris_atomic_ops=true
682         )
683 ])
684 if $fc_cv_have_solaris_atomic_ops; then
685         AC_DEFINE(HAVE_SOLARIS_ATOMIC_OPS, 1, [Have Solaris __machine_*_barrier and atomic_* operations])
686 fi
687
688 if test "$os_win32" = no && ! $have_pthread; then
689         AC_CHECK_HEADERS(sched.h)
690         AC_SEARCH_LIBS(sched_yield,rt,AC_DEFINE(HAVE_SCHED_YIELD, 1, [Have sched_yield]))
691 fi
692
693 have_pthread=false
694 if test "$os_win32" = no; then
695         AX_PTHREAD([have_pthread=true])
696 fi
697 if $have_pthread; then
698         LIBS="$PTHREAD_LIBS $LIBS"
699         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
700         CC="$PTHREAD_CC"
701         AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
702 fi
703 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
704
705
706 dnl ===========================================================================
707
708 #
709 # Let people not build/install docs if they don't have docbook
710 #
711
712 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
713
714 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
715
716 default_docs="yes"
717 #
718 # Check if docs exist or can be created
719 #
720 if test x$HASDOCBOOK = xno; then
721         if test -f $srcdir/doc/fonts-conf.5; then
722                 :
723         else
724                 default_docs="no"
725         fi
726 fi
727
728 AC_ARG_ENABLE(docs,
729         [AC_HELP_STRING([--disable-docs],
730                         [Don't build and install documentation])],
731         ,
732         enable_docs=$default_docs)
733
734 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
735
736 if test "x$enable_docs" = xyes; then
737         tmp=funcs.$$
738         cat $srcdir/doc/*.fncs | awk '
739         /^@TITLE@/      { if (!done) { printf ("%s\n", $2); done = 1; } }
740         /^@FUNC@/       { if (!done) { printf ("%s\n", $2); done = 1; } }
741         /^@@/           { done = 0; }' > $tmp
742         DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
743         echo DOCMAN3 $DOCMAN3
744         rm -f $tmp
745 else
746         DOCMAN3=""
747 fi
748 AC_SUBST(DOCMAN3)
749
750
751 dnl Figure out what cache format suffix to use for this architecture
752 AC_C_BIGENDIAN
753 AC_CHECK_SIZEOF([void *])
754 AC_CHECK_ALIGNOF([double])
755 AC_CHECK_ALIGNOF([void *])
756
757 dnl include the header file for workaround of miscalculating size on autoconf
758 dnl particularly for fat binaries
759 AH_BOTTOM([#include "config-fixups.h"])
760
761 dnl
762 dnl
763 AC_SUBST(PKGCONFIG_REQUIRES)
764 AC_SUBST(PKGCONFIG_REQUIRES_PRIVATELY)
765
766 dnl
767 AC_CONFIG_FILES([
768 Makefile
769 fontconfig/Makefile
770 fc-lang/Makefile
771 fc-case/Makefile
772 src/Makefile
773 conf.d/Makefile
774 fc-cache/Makefile
775 fc-cat/Makefile
776 fc-conflist/Makefile
777 fc-list/Makefile
778 fc-match/Makefile
779 fc-pattern/Makefile
780 fc-query/Makefile
781 fc-scan/Makefile
782 fc-validate/Makefile
783 doc/Makefile
784 doc/version.sgml
785 its/Makefile
786 po/Makefile.in
787 po-conf/Makefile.in
788 test/Makefile
789 fontconfig.spec
790 fontconfig.pc
791 fontconfig-zip
792 ])
793 AC_OUTPUT