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.9.92)
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)
69 AC_MSG_CHECKING([for RM macro])
70 _predefined_rm=`make -p -f /dev/null 2>/dev/null|grep '^RM ='|sed -e 's/^RM = //'`
71 if test "x$_predefined_rm" = "x"; then
72 AC_MSG_RESULT([no predefined RM])
73 AC_CHECK_PROG(RM, rm, [rm -f])
75 AC_MSG_RESULT($_predefined_rm)
78 dnl ==========================================================================
87 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
89 if test "$os_win32" = "yes"; then
90 AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
92 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
95 if test "x$GCC" = "xyes"; then
96 WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
97 -Wmissing-prototypes -Wmissing-declarations \
98 -Wnested-externs -fno-strict-aliasing"
99 AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
100 [Can use #warning in C files])
102 AC_SUBST(WARN_CFLAGS)
105 dnl ==========================================================================
107 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
108 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
110 dnl ==========================================================================
113 [AC_HELP_STRING([--with-arch=ARCH],
114 [Force architecture to ARCH])],
115 arch="$withval", arch=auto)
117 if test "x$arch" != xauto; then
118 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
122 dnl ==========================================================================
124 # Checks for header files.
127 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 # Checks for typedefs, structures, and compiler characteristics.
132 AC_C_FLEXIBLE_ARRAY_MEMBER
135 # Checks for library functions.
138 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 posix_fadvise fstatvfs fstatfs])
141 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
142 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
143 [#include <sys/statvfs.h>])
145 if test "x$ac_cv_func_fstatfs" = "xyes"; then
146 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
147 #ifdef HAVE_SYS_VFS_H
150 #ifdef HAVE_SYS_STATFS_H
151 #include <sys/statfs.h>
153 #ifdef HAVE_SYS_PARAM_H
154 #include <sys/param.h>
156 #ifdef HAVE_SYS_MOUNT_H
157 #include <sys/mount.h>
160 AC_CHECK_MEMBERS([struct dirent.d_type],,,
161 [#include <dirent.h>])
165 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
166 AC_DEFINE(USE_REGEX,,[Use regex])
173 [AC_HELP_STRING([--enable-iconv],
174 [Use iconv to support non-Unicode SFNT name])],
176 AC_ARG_WITH(libiconv,
177 [AC_HELP_STRING([--with-libiconv=DIR],
178 [Use libiconv in DIR])],
179 [if test "x$withval" = "xyes"; then
180 libiconv_prefix=$prefix
182 libiconv_prefix=$withval
184 [libiconv_prefix=auto])
185 AC_ARG_WITH(libiconv-includes,
186 [AC_HELP_STRING([--with-libiconv-includes=DIR],
187 [Use libiconv includes in DIR])],
188 [libiconv_includes=$withval],
189 [libiconv_includes=auto])
190 AC_ARG_WITH(libiconv-lib,
191 [AC_HELP_STRING([--with-libiconv-lib=DIR],
192 [Use libiconv library in DIR])],
193 [libiconv_lib=$withval],
196 # if no libiconv,libiconv-includes,libiconv-lib are specified,
197 # libc's iconv has a priority.
198 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
199 libiconv_cflags="-I${libiconv_includes}"
200 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
201 libiconv_cflags="-I${libiconv_prefix}/include"
206 if test "x$libiconv_cflags" != "x"; then
207 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
208 libiconv_libs="-L${libiconv_lib} -liconv"
209 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
210 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
212 libiconv_libs="-liconv"
217 if test "x$enable_iconv" != "xno"; then
218 AC_MSG_CHECKING([for a usable iconv])
219 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
220 iconvsaved_CFLAGS="$CFLAGS"
221 iconvsaved_LIBS="$LIBS"
222 CFLAGS="$CFLAGS $libiconv_cflags"
223 LIBS="$LIBS $libiconv_libs"
225 AC_TRY_LINK([#include <iconv.h>],
226 [iconv_open ("from", "to");],
227 [iconv_type="libiconv"
231 CFLAGS="$iconvsaved_CFLAGS"
232 LIBS="$iconvsaved_LIBS"
233 ICONV_CFLAGS="$libiconv_cflags"
234 ICONV_LIBS="$libiconv_libs"
236 if test "x$use_iconv" = "x0"; then
237 AC_TRY_LINK([#include <iconv.h>],
238 [iconv_open ("from", "to");],
241 [iconv_type="not found"
245 AC_MSG_RESULT([$iconv_type])
246 AC_SUBST(ICONV_CFLAGS)
249 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
251 # Checks for FreeType
253 PKG_CHECK_MODULES(FREETYPE, freetype2)
255 AC_SUBST(FREETYPE_LIBS)
256 AC_SUBST(FREETYPE_CFLAGS)
258 fontconfig_save_libs="$LIBS"
259 fontconfig_save_cflags="$CFLAGS"
260 LIBS="$LIBS $FREETYPE_LIBS"
261 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
262 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)
263 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
264 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
265 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
266 [#include <ft2build.h>
267 #include FT_FREETYPE_H])
268 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
269 [FT_Bitmap_Size structure includes y_ppem field])
270 CFLAGS="$fontconfig_save_cflags"
271 LIBS="$fontconfig_save_libs"
274 # Check expat configuration
277 [AC_HELP_STRING([--with-expat=DIR],
278 [Use Expat in DIR])],
279 [expat_prefix=$withval],
281 AC_ARG_WITH(expat-includes,
282 [AC_HELP_STRING([--with-expat-includes=DIR],
283 [Use Expat includes in DIR])],
284 [expat_includes=$withval],
285 [expat_includes=auto])
286 AC_ARG_WITH(expat-lib,
287 [AC_HELP_STRING([--with-expat-lib=DIR])],
288 [expat_lib=$withval],
291 if test "$enable_libxml2" != "yes"; then
292 use_pkgconfig_for_expat=yes
293 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
294 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
296 use_pkgconfig_for_expat=no
298 if test "x$use_pkgconfig_for_expat" = "xno"; then
299 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
300 EXPAT_CFLAGS="-I${expat_includes}"
301 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
302 EXPAT_CFLAGS="-I${expat_prefix}/include"
306 if test "$expat_lib" != "auto"; then
307 EXPAT_LIBS="-L${expat_lib} -lexpat"
308 elif test "$expat_prefix" != "auto"; then
309 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
315 expatsaved_CPPFLAGS="$CPPFLAGS"
316 expatsaved_LIBS="$LIBS"
317 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
318 LIBS="$LIBS $EXPAT_LIBS"
320 AC_CHECK_HEADER(expat.h)
321 if test "$ac_cv_header_expat_h" = "no"; then
322 AC_CHECK_HEADER(xmlparse.h)
323 if test "$ac_cv_header_xmlparse_h" = "yes"; then
325 AC_SUBST(HAVE_XMLPARSE_H)
326 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
327 [Use xmlparse.h instead of expat.h])
330 *** expat is required. or try to use --enable-libxml2])
333 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
334 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
336 *** expat is required. or try to use --enable-libxml2])
338 CPPFLAGS="$expatsaved_CPPFLAGS"
339 LIBS="$expatsaved_LIBS"
341 AC_SUBST(EXPAT_CFLAGS)
346 # Check libxml2 configuration
348 AC_ARG_ENABLE(libxml2,
349 [AC_HELP_STRING([--enable-libxml2],
350 [Use libxml2 instead of Expat])])
352 if test "$enable_libxml2" = "yes"; then
353 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
354 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
356 AC_SUBST(LIBXML2_CFLAGS)
357 AC_SUBST(LIBXML2_LIBS)
359 fc_saved_CFLAGS="$CFLAGS"
360 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
361 AC_MSG_CHECKING([SAX1 support in libxml2])
362 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
363 #include <libxml/xmlversion.h>
364 #if !defined(LIBXML_SAX1_ENABLED)
365 # include "error: No SAX1 support in libxml2"
367 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
368 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
369 CFLAGS="$fc_saved_CFLAGS"
373 # Set default font directory
376 AC_ARG_WITH(default-fonts,
377 [AC_HELP_STRING([--with-default-fonts=DIR],
378 [Use fonts from DIR when config is busted])],
379 default_fonts="$withval", default_fonts=yes)
381 case "$default_fonts" in
383 if test "$os_win32" = "yes"; then
384 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
385 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
386 [Windows font directory])
388 FC_DEFAULT_FONTS="/usr/share/fonts"
389 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
390 [System font directory])
394 FC_DEFAULT_FONTS="$default_fonts"
395 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
396 [System font directory])
400 AC_SUBST(FC_DEFAULT_FONTS)
403 # Add more fonts if available. By default, add only the directories
404 # with outline fonts; those with bitmaps can be added as desired in
405 # local.conf or ~/.fonts.conf
407 AC_ARG_WITH(add-fonts,
408 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
409 [Find additional fonts in DIR1,DIR2,... ])],
410 add_fonts="$withval", add_fonts=yes)
415 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
416 case x"$FC_ADD_FONTS" in
419 if test -d "$sub"; then
420 case x$FC_ADD_FONTS in
425 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
432 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
438 FC_ADD_FONTS="$add_fonts"
439 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
443 AC_SUBST(FC_ADD_FONTS)
447 case "$FC_ADD_FONTS" in
451 FC_FONTPATH=`echo $FC_ADD_FONTS |
452 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
456 AC_SUBST(FC_FONTPATH)
459 # Set default cache directory path
461 AC_ARG_WITH(cache-dir,
462 [AC_HELP_STRING([--with-cache-dir=DIR],
463 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
464 fc_cachedir="$withval", fc_cachedir=yes)
468 if test "$os_win32" = "yes"; then
469 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
471 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
477 AC_SUBST(fc_cachedir)
478 FC_CACHEDIR=${fc_cachedir}
479 AC_SUBST(FC_CACHEDIR)
481 FC_FONTDATE=`LC_ALL=C date`
483 AC_SUBST(FC_FONTDATE)
486 # Set configuration paths
489 AC_ARG_WITH(templatedir,
490 [AC_HELP_STRING([--with-templatedir=DIR],
491 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
492 [templatedir="$withval"],
494 AC_ARG_WITH(baseconfigdir,
495 [AC_HELP_STRING([--with-baseconfigdir=DIR],
496 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
497 [baseconfigdir="$withval"],
499 AC_ARG_WITH(configdir,
500 [AC_HELP_STRING([--with-configdir=DIR],
501 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
502 [configdir="$withval"],
505 [AC_HELP_STRING([--with-xmldir=DIR],
506 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
510 case "$templatedir" in
512 templatedir='${datadir}'/fontconfig/conf.avail
517 case "$baseconfigdir" in
519 baseconfigdir='${sysconfdir}'/fonts
526 configdir='${baseconfigdir}'/conf.d
533 xmldir='${datadir}'/xml/fontconfig
539 TEMPLATEDIR=${templatedir}
540 BASECONFIGDIR=${baseconfigdir}
541 CONFIGDIR=${configdir}
543 AC_SUBST(templatedir)
544 AC_SUBST(TEMPLATEDIR)
545 AC_SUBST(baseconfigdir)
546 AC_SUBST(BASECONFIGDIR)
553 # Let people not build/install docs if they don't have docbook
556 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
558 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
562 # Check if docs exist or can be created
564 if test x$HASDOCBOOK = xno; then
565 if test -f $srcdir/doc/fonts-conf.5; then
573 [AC_HELP_STRING([--disable-docs],
574 [Don't build and install documentation])],
576 enable_docs=$default_docs)
578 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
580 if test "x$enable_docs" = xyes; then
583 cat $srcdir/doc/*.fncs | awk '
584 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
585 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
586 /^@@/ { done = 0; }' > $tmp
587 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
588 echo DOCMAN3 $DOCMAN3
599 dnl Figure out what cache format suffix to use for this architecture
601 AC_CHECK_SIZEOF([void *])
602 AC_CHECK_ALIGNOF([double])
604 dnl include the header file for workaround of miscalculating size on autoconf
605 dnl particularly for fat binaries
606 AH_BOTTOM([#include "config-fixups.h"])
612 fc-glyphname/Makefile