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 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
109 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
111 dnl ==========================================================================
114 [AC_HELP_STRING([--with-arch=ARCH],
115 [Force architecture to ARCH])],
116 arch="$withval", arch=auto)
118 if test "x$arch" != xauto; then
119 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
123 dnl ==========================================================================
125 # Checks for header files.
128 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])
129 AX_CREATE_STDINT_H([src/fcstdint.h])
131 # Checks for typedefs, structures, and compiler characteristics.
134 AC_C_FLEXIBLE_ARRAY_MEMBER
137 # Checks for library functions.
140 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])
142 dnl AC_CHECK_FUNCS doesn't check for header files.
143 dnl posix_fadvise() may be not available in older libc.
144 fc_saved_CFLAGS="$CFLAGS"
145 CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
146 AC_MSG_CHECKING([for posix_fadvise])
147 AC_LINK_IFELSE([AC_LANG_SOURCE([[
150 return posix_fadvise(0, 0, 0, 0);
154 AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the `posix_fadvise' function.])
155 ],[AC_MSG_RESULT([no])])
156 CFLAGS="$fc_saved_CFLAGS"
159 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
160 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
161 [#include <sys/statvfs.h>])
163 if test "x$ac_cv_func_fstatfs" = "xyes"; then
164 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
165 #ifdef HAVE_SYS_VFS_H
168 #ifdef HAVE_SYS_STATFS_H
169 #include <sys/statfs.h>
171 #ifdef HAVE_SYS_PARAM_H
172 #include <sys/param.h>
174 #ifdef HAVE_SYS_MOUNT_H
175 #include <sys/mount.h>
178 AC_CHECK_MEMBERS([struct dirent.d_type],,,
179 [#include <dirent.h>])
183 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
184 AC_DEFINE(USE_REGEX,,[Use regex])
191 [AC_HELP_STRING([--enable-iconv],
192 [Use iconv to support non-Unicode SFNT name])],
194 AC_ARG_WITH(libiconv,
195 [AC_HELP_STRING([--with-libiconv=DIR],
196 [Use libiconv in DIR])],
197 [if test "x$withval" = "xyes"; then
198 libiconv_prefix=$prefix
200 libiconv_prefix=$withval
202 [libiconv_prefix=auto])
203 AC_ARG_WITH(libiconv-includes,
204 [AC_HELP_STRING([--with-libiconv-includes=DIR],
205 [Use libiconv includes in DIR])],
206 [libiconv_includes=$withval],
207 [libiconv_includes=auto])
208 AC_ARG_WITH(libiconv-lib,
209 [AC_HELP_STRING([--with-libiconv-lib=DIR],
210 [Use libiconv library in DIR])],
211 [libiconv_lib=$withval],
214 # if no libiconv,libiconv-includes,libiconv-lib are specified,
215 # libc's iconv has a priority.
216 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
217 libiconv_cflags="-I${libiconv_includes}"
218 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
219 libiconv_cflags="-I${libiconv_prefix}/include"
224 if test "x$libiconv_cflags" != "x"; then
225 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
226 libiconv_libs="-L${libiconv_lib} -liconv"
227 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
228 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
230 libiconv_libs="-liconv"
235 if test "x$enable_iconv" != "xno"; then
236 AC_MSG_CHECKING([for a usable iconv])
237 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
238 iconvsaved_CFLAGS="$CFLAGS"
239 iconvsaved_LIBS="$LIBS"
240 CFLAGS="$CFLAGS $libiconv_cflags"
241 LIBS="$LIBS $libiconv_libs"
243 AC_TRY_LINK([#include <iconv.h>],
244 [iconv_open ("from", "to");],
245 [iconv_type="libiconv"
249 CFLAGS="$iconvsaved_CFLAGS"
250 LIBS="$iconvsaved_LIBS"
251 ICONV_CFLAGS="$libiconv_cflags"
252 ICONV_LIBS="$libiconv_libs"
254 if test "x$use_iconv" = "x0"; then
255 AC_TRY_LINK([#include <iconv.h>],
256 [iconv_open ("from", "to");],
259 [iconv_type="not found"
263 AC_MSG_RESULT([$iconv_type])
264 AC_SUBST(ICONV_CFLAGS)
267 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
269 # Checks for FreeType
271 PKG_CHECK_MODULES(FREETYPE, freetype2)
273 AC_SUBST(FREETYPE_LIBS)
274 AC_SUBST(FREETYPE_CFLAGS)
276 fontconfig_save_libs="$LIBS"
277 fontconfig_save_cflags="$CFLAGS"
278 LIBS="$LIBS $FREETYPE_LIBS"
279 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
280 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)
281 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
282 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
283 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
284 [#include <ft2build.h>
285 #include FT_FREETYPE_H])
286 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
287 [FT_Bitmap_Size structure includes y_ppem field])
288 CFLAGS="$fontconfig_save_cflags"
289 LIBS="$fontconfig_save_libs"
292 # Check expat configuration
295 [AC_HELP_STRING([--with-expat=DIR],
296 [Use Expat in DIR])],
297 [expat_prefix=$withval],
299 AC_ARG_WITH(expat-includes,
300 [AC_HELP_STRING([--with-expat-includes=DIR],
301 [Use Expat includes in DIR])],
302 [expat_includes=$withval],
303 [expat_includes=auto])
304 AC_ARG_WITH(expat-lib,
305 [AC_HELP_STRING([--with-expat-lib=DIR])],
306 [expat_lib=$withval],
309 if test "$enable_libxml2" != "yes"; then
310 use_pkgconfig_for_expat=yes
311 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
312 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
314 use_pkgconfig_for_expat=no
316 if test "x$use_pkgconfig_for_expat" = "xno"; then
317 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
318 EXPAT_CFLAGS="-I${expat_includes}"
319 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
320 EXPAT_CFLAGS="-I${expat_prefix}/include"
324 if test "$expat_lib" != "auto"; then
325 EXPAT_LIBS="-L${expat_lib} -lexpat"
326 elif test "$expat_prefix" != "auto"; then
327 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
333 expatsaved_CPPFLAGS="$CPPFLAGS"
334 expatsaved_LIBS="$LIBS"
335 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
336 LIBS="$LIBS $EXPAT_LIBS"
338 AC_CHECK_HEADER(expat.h)
339 if test "$ac_cv_header_expat_h" = "no"; then
340 AC_CHECK_HEADER(xmlparse.h)
341 if test "$ac_cv_header_xmlparse_h" = "yes"; then
343 AC_SUBST(HAVE_XMLPARSE_H)
344 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
345 [Use xmlparse.h instead of expat.h])
348 *** expat is required. or try to use --enable-libxml2])
351 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
352 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
354 *** expat is required. or try to use --enable-libxml2])
356 CPPFLAGS="$expatsaved_CPPFLAGS"
357 LIBS="$expatsaved_LIBS"
359 AC_SUBST(EXPAT_CFLAGS)
364 # Check libxml2 configuration
366 AC_ARG_ENABLE(libxml2,
367 [AC_HELP_STRING([--enable-libxml2],
368 [Use libxml2 instead of Expat])])
370 if test "$enable_libxml2" = "yes"; then
371 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
372 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
374 AC_SUBST(LIBXML2_CFLAGS)
375 AC_SUBST(LIBXML2_LIBS)
377 fc_saved_CFLAGS="$CFLAGS"
378 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
379 AC_MSG_CHECKING([SAX1 support in libxml2])
380 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
381 #include <libxml/xmlversion.h>
382 #if !defined(LIBXML_SAX1_ENABLED)
383 # include "error: No SAX1 support in libxml2"
385 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
386 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
387 CFLAGS="$fc_saved_CFLAGS"
391 # Set default font directory
394 AC_ARG_WITH(default-fonts,
395 [AC_HELP_STRING([--with-default-fonts=DIR],
396 [Use fonts from DIR when config is busted])],
397 default_fonts="$withval", default_fonts=yes)
399 case "$default_fonts" in
401 if test "$os_win32" = "yes"; then
402 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
403 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
404 [Windows font directory])
406 FC_DEFAULT_FONTS="/usr/share/fonts"
407 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
408 [System font directory])
412 FC_DEFAULT_FONTS="$default_fonts"
413 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
414 [System font directory])
418 AC_SUBST(FC_DEFAULT_FONTS)
421 # Add more fonts if available. By default, add only the directories
422 # with outline fonts; those with bitmaps can be added as desired in
423 # local.conf or ~/.fonts.conf
425 AC_ARG_WITH(add-fonts,
426 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
427 [Find additional fonts in DIR1,DIR2,... ])],
428 add_fonts="$withval", add_fonts=yes)
433 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
434 case x"$FC_ADD_FONTS" in
437 if test -d "$sub"; then
438 case x$FC_ADD_FONTS in
443 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
450 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
456 FC_ADD_FONTS="$add_fonts"
457 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
461 AC_SUBST(FC_ADD_FONTS)
465 case "$FC_ADD_FONTS" in
469 FC_FONTPATH=`echo $FC_ADD_FONTS |
470 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
474 AC_SUBST(FC_FONTPATH)
477 # Set default cache directory path
479 AC_ARG_WITH(cache-dir,
480 [AC_HELP_STRING([--with-cache-dir=DIR],
481 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
482 fc_cachedir="$withval", fc_cachedir=yes)
486 if test "$os_win32" = "yes"; then
487 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
489 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
495 AC_SUBST(fc_cachedir)
496 FC_CACHEDIR=${fc_cachedir}
497 AC_SUBST(FC_CACHEDIR)
499 FC_FONTDATE=`LC_ALL=C date`
501 AC_SUBST(FC_FONTDATE)
504 # Set configuration paths
507 AC_ARG_WITH(templatedir,
508 [AC_HELP_STRING([--with-templatedir=DIR],
509 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
510 [templatedir="$withval"],
512 AC_ARG_WITH(baseconfigdir,
513 [AC_HELP_STRING([--with-baseconfigdir=DIR],
514 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
515 [baseconfigdir="$withval"],
517 AC_ARG_WITH(configdir,
518 [AC_HELP_STRING([--with-configdir=DIR],
519 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
520 [configdir="$withval"],
523 [AC_HELP_STRING([--with-xmldir=DIR],
524 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
528 case "$templatedir" in
530 templatedir='${datadir}'/fontconfig/conf.avail
535 case "$baseconfigdir" in
537 baseconfigdir='${sysconfdir}'/fonts
544 configdir='${baseconfigdir}'/conf.d
551 xmldir='${datadir}'/xml/fontconfig
557 TEMPLATEDIR=${templatedir}
558 BASECONFIGDIR=${baseconfigdir}
559 CONFIGDIR=${configdir}
561 AC_SUBST(templatedir)
562 AC_SUBST(TEMPLATEDIR)
563 AC_SUBST(baseconfigdir)
564 AC_SUBST(BASECONFIGDIR)
571 # Let people not build/install docs if they don't have docbook
574 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
576 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
580 # Check if docs exist or can be created
582 if test x$HASDOCBOOK = xno; then
583 if test -f $srcdir/doc/fonts-conf.5; then
591 [AC_HELP_STRING([--disable-docs],
592 [Don't build and install documentation])],
594 enable_docs=$default_docs)
596 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
598 if test "x$enable_docs" = xyes; then
601 cat $srcdir/doc/*.fncs | awk '
602 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
603 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
604 /^@@/ { done = 0; }' > $tmp
605 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
606 echo DOCMAN3 $DOCMAN3
617 dnl Figure out what cache format suffix to use for this architecture
619 AC_CHECK_SIZEOF([void *])
620 AC_CHECK_ALIGNOF([double])
622 dnl include the header file for workaround of miscalculating size on autoconf
623 dnl particularly for fat binaries
624 AH_BOTTOM([#include "config-fixups.h"])
630 fc-glyphname/Makefile