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])
130 # Checks for typedefs, structures, and compiler characteristics.
133 AC_C_FLEXIBLE_ARRAY_MEMBER
136 # Checks for library functions.
139 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])
141 dnl AC_CHECK_FUNCS doesn't check for header files.
142 dnl posix_fadvise() may be not available in older libc.
143 fc_saved_CFLAGS="$CFLAGS"
144 CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
145 AC_MSG_CHECKING([for posix_fadvise])
146 AC_LINK_IFELSE([AC_LANG_SOURCE([[
149 return posix_fadvise(0, 0, 0, 0);
153 AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the `posix_fadvise' function.])
154 ],[AC_MSG_RESULT([no])])
155 CFLAGS="$fc_saved_CFLAGS"
158 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
159 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
160 [#include <sys/statvfs.h>])
162 if test "x$ac_cv_func_fstatfs" = "xyes"; then
163 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
164 #ifdef HAVE_SYS_VFS_H
167 #ifdef HAVE_SYS_STATFS_H
168 #include <sys/statfs.h>
170 #ifdef HAVE_SYS_PARAM_H
171 #include <sys/param.h>
173 #ifdef HAVE_SYS_MOUNT_H
174 #include <sys/mount.h>
177 AC_CHECK_MEMBERS([struct dirent.d_type],,,
178 [#include <dirent.h>])
182 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
183 AC_DEFINE(USE_REGEX,,[Use regex])
190 [AC_HELP_STRING([--enable-iconv],
191 [Use iconv to support non-Unicode SFNT name])],
193 AC_ARG_WITH(libiconv,
194 [AC_HELP_STRING([--with-libiconv=DIR],
195 [Use libiconv in DIR])],
196 [if test "x$withval" = "xyes"; then
197 libiconv_prefix=$prefix
199 libiconv_prefix=$withval
201 [libiconv_prefix=auto])
202 AC_ARG_WITH(libiconv-includes,
203 [AC_HELP_STRING([--with-libiconv-includes=DIR],
204 [Use libiconv includes in DIR])],
205 [libiconv_includes=$withval],
206 [libiconv_includes=auto])
207 AC_ARG_WITH(libiconv-lib,
208 [AC_HELP_STRING([--with-libiconv-lib=DIR],
209 [Use libiconv library in DIR])],
210 [libiconv_lib=$withval],
213 # if no libiconv,libiconv-includes,libiconv-lib are specified,
214 # libc's iconv has a priority.
215 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
216 libiconv_cflags="-I${libiconv_includes}"
217 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
218 libiconv_cflags="-I${libiconv_prefix}/include"
223 if test "x$libiconv_cflags" != "x"; then
224 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
225 libiconv_libs="-L${libiconv_lib} -liconv"
226 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
227 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
229 libiconv_libs="-liconv"
234 if test "x$enable_iconv" != "xno"; then
235 AC_MSG_CHECKING([for a usable iconv])
236 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
237 iconvsaved_CFLAGS="$CFLAGS"
238 iconvsaved_LIBS="$LIBS"
239 CFLAGS="$CFLAGS $libiconv_cflags"
240 LIBS="$LIBS $libiconv_libs"
242 AC_TRY_LINK([#include <iconv.h>],
243 [iconv_open ("from", "to");],
244 [iconv_type="libiconv"
248 CFLAGS="$iconvsaved_CFLAGS"
249 LIBS="$iconvsaved_LIBS"
250 ICONV_CFLAGS="$libiconv_cflags"
251 ICONV_LIBS="$libiconv_libs"
253 if test "x$use_iconv" = "x0"; then
254 AC_TRY_LINK([#include <iconv.h>],
255 [iconv_open ("from", "to");],
258 [iconv_type="not found"
262 AC_MSG_RESULT([$iconv_type])
263 AC_SUBST(ICONV_CFLAGS)
266 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
268 # Checks for FreeType
270 PKG_CHECK_MODULES(FREETYPE, freetype2)
272 AC_SUBST(FREETYPE_LIBS)
273 AC_SUBST(FREETYPE_CFLAGS)
275 fontconfig_save_libs="$LIBS"
276 fontconfig_save_cflags="$CFLAGS"
277 LIBS="$LIBS $FREETYPE_LIBS"
278 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
279 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)
280 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
281 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
282 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
283 [#include <ft2build.h>
284 #include FT_FREETYPE_H])
285 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
286 [FT_Bitmap_Size structure includes y_ppem field])
287 CFLAGS="$fontconfig_save_cflags"
288 LIBS="$fontconfig_save_libs"
291 # Check expat configuration
294 [AC_HELP_STRING([--with-expat=DIR],
295 [Use Expat in DIR])],
296 [expat_prefix=$withval],
298 AC_ARG_WITH(expat-includes,
299 [AC_HELP_STRING([--with-expat-includes=DIR],
300 [Use Expat includes in DIR])],
301 [expat_includes=$withval],
302 [expat_includes=auto])
303 AC_ARG_WITH(expat-lib,
304 [AC_HELP_STRING([--with-expat-lib=DIR])],
305 [expat_lib=$withval],
308 if test "$enable_libxml2" != "yes"; then
309 use_pkgconfig_for_expat=yes
310 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
311 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
313 use_pkgconfig_for_expat=no
315 if test "x$use_pkgconfig_for_expat" = "xno"; then
316 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
317 EXPAT_CFLAGS="-I${expat_includes}"
318 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
319 EXPAT_CFLAGS="-I${expat_prefix}/include"
323 if test "$expat_lib" != "auto"; then
324 EXPAT_LIBS="-L${expat_lib} -lexpat"
325 elif test "$expat_prefix" != "auto"; then
326 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
332 expatsaved_CPPFLAGS="$CPPFLAGS"
333 expatsaved_LIBS="$LIBS"
334 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
335 LIBS="$LIBS $EXPAT_LIBS"
337 AC_CHECK_HEADER(expat.h)
338 if test "$ac_cv_header_expat_h" = "no"; then
339 AC_CHECK_HEADER(xmlparse.h)
340 if test "$ac_cv_header_xmlparse_h" = "yes"; then
342 AC_SUBST(HAVE_XMLPARSE_H)
343 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
344 [Use xmlparse.h instead of expat.h])
347 *** expat is required. or try to use --enable-libxml2])
350 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
351 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
353 *** expat is required. or try to use --enable-libxml2])
355 CPPFLAGS="$expatsaved_CPPFLAGS"
356 LIBS="$expatsaved_LIBS"
358 AC_SUBST(EXPAT_CFLAGS)
363 # Check libxml2 configuration
365 AC_ARG_ENABLE(libxml2,
366 [AC_HELP_STRING([--enable-libxml2],
367 [Use libxml2 instead of Expat])])
369 if test "$enable_libxml2" = "yes"; then
370 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
371 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
373 AC_SUBST(LIBXML2_CFLAGS)
374 AC_SUBST(LIBXML2_LIBS)
376 fc_saved_CFLAGS="$CFLAGS"
377 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
378 AC_MSG_CHECKING([SAX1 support in libxml2])
379 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
380 #include <libxml/xmlversion.h>
381 #if !defined(LIBXML_SAX1_ENABLED)
382 # include "error: No SAX1 support in libxml2"
384 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
385 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
386 CFLAGS="$fc_saved_CFLAGS"
390 # Set default font directory
393 AC_ARG_WITH(default-fonts,
394 [AC_HELP_STRING([--with-default-fonts=DIR],
395 [Use fonts from DIR when config is busted])],
396 default_fonts="$withval", default_fonts=yes)
398 case "$default_fonts" in
400 if test "$os_win32" = "yes"; then
401 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
402 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
403 [Windows font directory])
405 FC_DEFAULT_FONTS="/usr/share/fonts"
406 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
407 [System font directory])
411 FC_DEFAULT_FONTS="$default_fonts"
412 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
413 [System font directory])
417 AC_SUBST(FC_DEFAULT_FONTS)
420 # Add more fonts if available. By default, add only the directories
421 # with outline fonts; those with bitmaps can be added as desired in
422 # local.conf or ~/.fonts.conf
424 AC_ARG_WITH(add-fonts,
425 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
426 [Find additional fonts in DIR1,DIR2,... ])],
427 add_fonts="$withval", add_fonts=yes)
432 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
433 case x"$FC_ADD_FONTS" in
436 if test -d "$sub"; then
437 case x$FC_ADD_FONTS in
442 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
449 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
455 FC_ADD_FONTS="$add_fonts"
456 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
460 AC_SUBST(FC_ADD_FONTS)
464 case "$FC_ADD_FONTS" in
468 FC_FONTPATH=`echo $FC_ADD_FONTS |
469 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
473 AC_SUBST(FC_FONTPATH)
476 # Set default cache directory path
478 AC_ARG_WITH(cache-dir,
479 [AC_HELP_STRING([--with-cache-dir=DIR],
480 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
481 fc_cachedir="$withval", fc_cachedir=yes)
485 if test "$os_win32" = "yes"; then
486 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
488 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
494 AC_SUBST(fc_cachedir)
495 FC_CACHEDIR=${fc_cachedir}
496 AC_SUBST(FC_CACHEDIR)
498 FC_FONTDATE=`LC_ALL=C date`
500 AC_SUBST(FC_FONTDATE)
503 # Set configuration paths
506 AC_ARG_WITH(templatedir,
507 [AC_HELP_STRING([--with-templatedir=DIR],
508 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
509 [templatedir="$withval"],
511 AC_ARG_WITH(baseconfigdir,
512 [AC_HELP_STRING([--with-baseconfigdir=DIR],
513 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
514 [baseconfigdir="$withval"],
516 AC_ARG_WITH(configdir,
517 [AC_HELP_STRING([--with-configdir=DIR],
518 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
519 [configdir="$withval"],
522 [AC_HELP_STRING([--with-xmldir=DIR],
523 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
527 case "$templatedir" in
529 templatedir='${datadir}'/fontconfig/conf.avail
534 case "$baseconfigdir" in
536 baseconfigdir='${sysconfdir}'/fonts
543 configdir='${baseconfigdir}'/conf.d
550 xmldir='${datadir}'/xml/fontconfig
556 TEMPLATEDIR=${templatedir}
557 BASECONFIGDIR=${baseconfigdir}
558 CONFIGDIR=${configdir}
560 AC_SUBST(templatedir)
561 AC_SUBST(TEMPLATEDIR)
562 AC_SUBST(baseconfigdir)
563 AC_SUBST(BASECONFIGDIR)
570 # Let people not build/install docs if they don't have docbook
573 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
575 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
579 # Check if docs exist or can be created
581 if test x$HASDOCBOOK = xno; then
582 if test -f $srcdir/doc/fonts-conf.5; then
590 [AC_HELP_STRING([--disable-docs],
591 [Don't build and install documentation])],
593 enable_docs=$default_docs)
595 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
597 if test "x$enable_docs" = xyes; then
600 cat $srcdir/doc/*.fncs | awk '
601 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
602 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
603 /^@@/ { done = 0; }' > $tmp
604 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
605 echo DOCMAN3 $DOCMAN3
616 dnl Figure out what cache format suffix to use for this architecture
618 AC_CHECK_SIZEOF([void *])
619 AC_CHECK_ALIGNOF([double])
621 dnl include the header file for workaround of miscalculating size on autoconf
622 dnl particularly for fat binaries
623 AH_BOTTOM([#include "config-fixups.h"])
629 fc-glyphname/Makefile