2 dnl fontconfig/configure.in
4 dnl Copyright © 2003 Keith Packard
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.
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.
24 dnl Process this file with autoconf to create configure.
29 dnl ==========================================================================
31 dnl ==========================================================================
33 dnl This is the package version number, not the shared library
34 dnl version. This same version number must appear in fontconfig/fontconfig.h
35 dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
36 dnl not possible to extract the version number here from fontconfig.h
37 AM_INIT_AUTOMAKE(fontconfig, 2.10.2)
38 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
40 dnl libtool versioning
42 dnl bump revision when fixing bugs
43 dnl bump current and age, reset revision to zero when adding APIs
44 dnl bump current, leave age, reset revision to zero when changing/removing APIS
47 AC_SUBST(LIBT_CURRENT)
48 AC_SUBST(LIBT_REVISION)
51 LIBT_VERSION_INFO="$LIBT_CURRENT:$LIBT_REVISION:$LIBT_AGE"
52 AC_SUBST(LIBT_VERSION_INFO)
54 LIBT_CURRENT_MINUS_AGE=`expr $LIBT_CURRENT - $LIBT_AGE`
55 AC_SUBST(LIBT_CURRENT_MINUS_AGE)
57 dnl ==========================================================================
59 AC_CONFIG_HEADERS(config.h)
60 AC_CONFIG_MACRO_DIR([m4])
70 AC_MSG_CHECKING([for RM macro])
71 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
72 if test "x$_predefined_rm" = "x"; then
73 AC_MSG_RESULT([no predefined RM])
74 AC_CHECK_PROG(RM, rm, [rm -f])
76 AC_MSG_RESULT($_predefined_rm)
79 dnl ==========================================================================
88 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
90 if test "$os_win32" = "yes"; then
91 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
93 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
96 if test "x$GCC" = "xyes"; then
97 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
98 -Wmissing-prototypes -Wmissing-declarations \
99 -Wnested-externs -fno-strict-aliasing"
100 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
101 [Can use #warning in C files])
103 AC_SUBST(WARN_CFLAGS)
106 dnl ==========================================================================
108 AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
109 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
110 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
112 dnl ==========================================================================
115 [AC_HELP_STRING([--with-arch=ARCH],
116 [Force architecture to ARCH])],
117 arch="$withval", arch=auto)
119 if test "x$arch" != xauto; then
120 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
124 dnl ==========================================================================
126 # Checks for header files.
129 AC_CHECK_HEADERS([fcntl.h regex.h stdlib.h string.h unistd.h sys/vfs.h sys/statfs.h sys/param.h sys/mount.h])
130 AX_CREATE_STDINT_H([src/fcstdint.h])
132 # Checks for typedefs, structures, and compiler characteristics.
135 AC_C_FLEXIBLE_ARRAY_MEMBER
138 # Checks for library functions.
141 AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48 random_r rand_r regcomp regerror regexec regfree fstatvfs fstatfs lstat])
143 dnl AC_CHECK_FUNCS doesn't check for header files.
144 dnl posix_fadvise() may be not available in older libc.
145 fc_saved_CFLAGS="$CFLAGS"
146 CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
147 AC_MSG_CHECKING([for posix_fadvise])
148 AC_LINK_IFELSE([AC_LANG_SOURCE([[
151 return posix_fadvise(0, 0, 0, 0);
155 AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.])
156 ],[AC_MSG_RESULT([no])])
157 CFLAGS="$fc_saved_CFLAGS"
160 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
161 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
162 [#include <sys/statvfs.h>])
164 if test "x$ac_cv_func_fstatfs" = "xyes"; then
165 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
166 #ifdef HAVE_SYS_VFS_H
169 #ifdef HAVE_SYS_STATFS_H
170 #include <sys/statfs.h>
172 #ifdef HAVE_SYS_PARAM_H
173 #include <sys/param.h>
175 #ifdef HAVE_SYS_MOUNT_H
176 #include <sys/mount.h>
179 AC_CHECK_MEMBERS([struct dirent.d_type],,,
180 [#include <dirent.h>])
184 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
185 AC_DEFINE(USE_REGEX,,[Use regex])
192 [AC_HELP_STRING([--enable-iconv],
193 [Use iconv to support non-Unicode SFNT name])],
195 AC_ARG_WITH(libiconv,
196 [AC_HELP_STRING([--with-libiconv=DIR],
197 [Use libiconv in DIR])],
198 [if test "x$withval" = "xyes"; then
199 libiconv_prefix=$prefix
201 libiconv_prefix=$withval
203 [libiconv_prefix=auto])
204 AC_ARG_WITH(libiconv-includes,
205 [AC_HELP_STRING([--with-libiconv-includes=DIR],
206 [Use libiconv includes in DIR])],
207 [libiconv_includes=$withval],
208 [libiconv_includes=auto])
209 AC_ARG_WITH(libiconv-lib,
210 [AC_HELP_STRING([--with-libiconv-lib=DIR],
211 [Use libiconv library in DIR])],
212 [libiconv_lib=$withval],
215 # if no libiconv,libiconv-includes,libiconv-lib are specified,
216 # libc's iconv has a priority.
217 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
218 libiconv_cflags="-I${libiconv_includes}"
219 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
220 libiconv_cflags="-I${libiconv_prefix}/include"
225 if test "x$libiconv_cflags" != "x"; then
226 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
227 libiconv_libs="-L${libiconv_lib} -liconv"
228 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
229 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
231 libiconv_libs="-liconv"
236 if test "x$enable_iconv" != "xno"; then
237 AC_MSG_CHECKING([for a usable iconv])
238 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
239 iconvsaved_CFLAGS="$CFLAGS"
240 iconvsaved_LIBS="$LIBS"
241 CFLAGS="$CFLAGS $libiconv_cflags"
242 LIBS="$LIBS $libiconv_libs"
244 AC_TRY_LINK([#include <iconv.h>],
245 [iconv_open ("from", "to");],
246 [iconv_type="libiconv"
250 CFLAGS="$iconvsaved_CFLAGS"
251 LIBS="$iconvsaved_LIBS"
252 ICONV_CFLAGS="$libiconv_cflags"
253 ICONV_LIBS="$libiconv_libs"
255 if test "x$use_iconv" = "x0"; then
256 AC_TRY_LINK([#include <iconv.h>],
257 [iconv_open ("from", "to");],
260 [iconv_type="not found"
264 AC_MSG_RESULT([$iconv_type])
265 AC_SUBST(ICONV_CFLAGS)
268 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
270 # Checks for FreeType
272 PKG_CHECK_MODULES(FREETYPE, freetype2)
274 AC_SUBST(FREETYPE_LIBS)
275 AC_SUBST(FREETYPE_CFLAGS)
277 fontconfig_save_libs="$LIBS"
278 fontconfig_save_cflags="$CFLAGS"
279 LIBS="$LIBS $FREETYPE_LIBS"
280 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
281 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)
282 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
283 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
284 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
285 [#include <ft2build.h>
286 #include FT_FREETYPE_H])
287 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
288 [FT_Bitmap_Size structure includes y_ppem field])
289 CFLAGS="$fontconfig_save_cflags"
290 LIBS="$fontconfig_save_libs"
293 # Check expat configuration
296 [AC_HELP_STRING([--with-expat=DIR],
297 [Use Expat in DIR])],
298 [expat_prefix=$withval],
300 AC_ARG_WITH(expat-includes,
301 [AC_HELP_STRING([--with-expat-includes=DIR],
302 [Use Expat includes in DIR])],
303 [expat_includes=$withval],
304 [expat_includes=auto])
305 AC_ARG_WITH(expat-lib,
306 [AC_HELP_STRING([--with-expat-lib=DIR])],
307 [expat_lib=$withval],
310 if test "$enable_libxml2" != "yes"; then
311 use_pkgconfig_for_expat=yes
312 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
313 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
315 use_pkgconfig_for_expat=no
317 if test "x$use_pkgconfig_for_expat" = "xno"; then
318 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
319 EXPAT_CFLAGS="-I${expat_includes}"
320 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
321 EXPAT_CFLAGS="-I${expat_prefix}/include"
325 if test "$expat_lib" != "auto"; then
326 EXPAT_LIBS="-L${expat_lib} -lexpat"
327 elif test "$expat_prefix" != "auto"; then
328 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
334 expatsaved_CPPFLAGS="$CPPFLAGS"
335 expatsaved_LIBS="$LIBS"
336 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
337 LIBS="$LIBS $EXPAT_LIBS"
339 AC_CHECK_HEADER(expat.h)
340 if test "$ac_cv_header_expat_h" = "no"; then
341 AC_CHECK_HEADER(xmlparse.h)
342 if test "$ac_cv_header_xmlparse_h" = "yes"; then
344 AC_SUBST(HAVE_XMLPARSE_H)
345 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
346 [Use xmlparse.h instead of expat.h])
349 *** expat is required. or try to use --enable-libxml2])
352 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
353 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
355 *** expat is required. or try to use --enable-libxml2])
357 CPPFLAGS="$expatsaved_CPPFLAGS"
358 LIBS="$expatsaved_LIBS"
360 AC_SUBST(EXPAT_CFLAGS)
365 # Check libxml2 configuration
367 AC_ARG_ENABLE(libxml2,
368 [AC_HELP_STRING([--enable-libxml2],
369 [Use libxml2 instead of Expat])])
371 if test "$enable_libxml2" = "yes"; then
372 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
373 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
375 AC_SUBST(LIBXML2_CFLAGS)
376 AC_SUBST(LIBXML2_LIBS)
378 fc_saved_CFLAGS="$CFLAGS"
379 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
380 AC_MSG_CHECKING([SAX1 support in libxml2])
381 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
382 #include <libxml/xmlversion.h>
383 #if !defined(LIBXML_SAX1_ENABLED)
384 # include "error: No SAX1 support in libxml2"
386 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
387 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
388 CFLAGS="$fc_saved_CFLAGS"
392 # Set default font directory
395 AC_ARG_WITH(default-fonts,
396 [AC_HELP_STRING([--with-default-fonts=DIR],
397 [Use fonts from DIR when config is busted])],
398 default_fonts="$withval", default_fonts=yes)
400 case "$default_fonts" in
402 if test "$os_win32" = "yes"; then
403 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
404 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
405 [Windows font directory])
407 FC_DEFAULT_FONTS="/usr/share/fonts"
408 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
409 [System font directory])
413 FC_DEFAULT_FONTS="$default_fonts"
414 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
415 [System font directory])
419 AC_SUBST(FC_DEFAULT_FONTS)
422 # Add more fonts if available. By default, add only the directories
423 # with outline fonts; those with bitmaps can be added as desired in
424 # local.conf or ~/.fonts.conf
426 AC_ARG_WITH(add-fonts,
427 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
428 [Find additional fonts in DIR1,DIR2,... ])],
429 add_fonts="$withval", add_fonts=yes)
434 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
435 case x"$FC_ADD_FONTS" in
438 if test -d "$sub"; then
439 case x$FC_ADD_FONTS in
444 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
451 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
457 FC_ADD_FONTS="$add_fonts"
458 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
462 AC_SUBST(FC_ADD_FONTS)
466 case "$FC_ADD_FONTS" in
470 FC_FONTPATH=`echo $FC_ADD_FONTS |
471 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
475 AC_SUBST(FC_FONTPATH)
478 # Set default cache directory path
480 AC_ARG_WITH(cache-dir,
481 [AC_HELP_STRING([--with-cache-dir=DIR],
482 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
483 fc_cachedir="$withval", fc_cachedir=yes)
487 if test "$os_win32" = "yes"; then
488 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
490 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
496 AC_SUBST(fc_cachedir)
497 FC_CACHEDIR=${fc_cachedir}
498 AC_SUBST(FC_CACHEDIR)
500 FC_FONTDATE=`LC_ALL=C date`
502 AC_SUBST(FC_FONTDATE)
505 # Set configuration paths
508 AC_ARG_WITH(templatedir,
509 [AC_HELP_STRING([--with-templatedir=DIR],
510 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
511 [templatedir="$withval"],
513 AC_ARG_WITH(baseconfigdir,
514 [AC_HELP_STRING([--with-baseconfigdir=DIR],
515 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
516 [baseconfigdir="$withval"],
518 AC_ARG_WITH(configdir,
519 [AC_HELP_STRING([--with-configdir=DIR],
520 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
521 [configdir="$withval"],
524 [AC_HELP_STRING([--with-xmldir=DIR],
525 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
529 case "$templatedir" in
531 templatedir='${datadir}'/fontconfig/conf.avail
536 case "$baseconfigdir" in
538 baseconfigdir='${sysconfdir}'/fonts
545 configdir='${baseconfigdir}'/conf.d
552 xmldir='${datadir}'/xml/fontconfig
558 TEMPLATEDIR=${templatedir}
559 BASECONFIGDIR=${baseconfigdir}
560 CONFIGDIR=${configdir}
562 AC_SUBST(templatedir)
563 AC_SUBST(TEMPLATEDIR)
564 AC_SUBST(baseconfigdir)
565 AC_SUBST(BASECONFIGDIR)
572 dnl ===========================================================================
575 # Thread-safety primitives
578 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
579 fc_cv_have_intel_atomic_primitives=false
581 void memory_barrier (void) { __sync_synchronize (); }
582 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
583 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
584 void mutex_unlock (int *m) { __sync_lock_release (m); }
585 ], [], fc_cv_have_intel_atomic_primitives=true
588 if $fc_cv_have_intel_atomic_primitives; then
589 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
592 AC_CHECK_HEADERS(sched.h)
593 AC_CHECK_FUNCS(sched_yield)
596 if test "$os_win32" = no; then
597 AX_PTHREAD([have_pthread=true])
599 if $have_pthread; then
600 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
602 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
605 dnl ===========================================================================
608 # Let people not build/install docs if they don't have docbook
611 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
613 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
617 # Check if docs exist or can be created
619 if test x$HASDOCBOOK = xno; then
620 if test -f $srcdir/doc/fonts-conf.5; then
628 [AC_HELP_STRING([--disable-docs],
629 [Don't build and install documentation])],
631 enable_docs=$default_docs)
633 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
635 if test "x$enable_docs" = xyes; then
638 cat $srcdir/doc/*.fncs | awk '
639 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
640 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
641 /^@@/ { done = 0; }' > $tmp
642 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
643 echo DOCMAN3 $DOCMAN3
654 dnl Figure out what cache format suffix to use for this architecture
656 AC_CHECK_SIZEOF([void *])
657 AC_CHECK_ALIGNOF([double])
659 dnl include the header file for workaround of miscalculating size on autoconf
660 dnl particularly for fat binaries
661 AH_BOTTOM([#include "config-fixups.h"])
667 fc-glyphname/Makefile