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.1)
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 posix_fadvise fstatvfs fstatfs])
142 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
143 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
144 [#include <sys/statvfs.h>])
146 if test "x$ac_cv_func_fstatfs" = "xyes"; then
147 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
148 #ifdef HAVE_SYS_VFS_H
151 #ifdef HAVE_SYS_STATFS_H
152 #include <sys/statfs.h>
154 #ifdef HAVE_SYS_PARAM_H
155 #include <sys/param.h>
157 #ifdef HAVE_SYS_MOUNT_H
158 #include <sys/mount.h>
161 AC_CHECK_MEMBERS([struct dirent.d_type],,,
162 [#include <dirent.h>])
166 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
167 AC_DEFINE(USE_REGEX,,[Use regex])
174 [AC_HELP_STRING([--enable-iconv],
175 [Use iconv to support non-Unicode SFNT name])],
177 AC_ARG_WITH(libiconv,
178 [AC_HELP_STRING([--with-libiconv=DIR],
179 [Use libiconv in DIR])],
180 [if test "x$withval" = "xyes"; then
181 libiconv_prefix=$prefix
183 libiconv_prefix=$withval
185 [libiconv_prefix=auto])
186 AC_ARG_WITH(libiconv-includes,
187 [AC_HELP_STRING([--with-libiconv-includes=DIR],
188 [Use libiconv includes in DIR])],
189 [libiconv_includes=$withval],
190 [libiconv_includes=auto])
191 AC_ARG_WITH(libiconv-lib,
192 [AC_HELP_STRING([--with-libiconv-lib=DIR],
193 [Use libiconv library in DIR])],
194 [libiconv_lib=$withval],
197 # if no libiconv,libiconv-includes,libiconv-lib are specified,
198 # libc's iconv has a priority.
199 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
200 libiconv_cflags="-I${libiconv_includes}"
201 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
202 libiconv_cflags="-I${libiconv_prefix}/include"
207 if test "x$libiconv_cflags" != "x"; then
208 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
209 libiconv_libs="-L${libiconv_lib} -liconv"
210 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
211 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
213 libiconv_libs="-liconv"
218 if test "x$enable_iconv" != "xno"; then
219 AC_MSG_CHECKING([for a usable iconv])
220 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
221 iconvsaved_CFLAGS="$CFLAGS"
222 iconvsaved_LIBS="$LIBS"
223 CFLAGS="$CFLAGS $libiconv_cflags"
224 LIBS="$LIBS $libiconv_libs"
226 AC_TRY_LINK([#include <iconv.h>],
227 [iconv_open ("from", "to");],
228 [iconv_type="libiconv"
232 CFLAGS="$iconvsaved_CFLAGS"
233 LIBS="$iconvsaved_LIBS"
234 ICONV_CFLAGS="$libiconv_cflags"
235 ICONV_LIBS="$libiconv_libs"
237 if test "x$use_iconv" = "x0"; then
238 AC_TRY_LINK([#include <iconv.h>],
239 [iconv_open ("from", "to");],
242 [iconv_type="not found"
246 AC_MSG_RESULT([$iconv_type])
247 AC_SUBST(ICONV_CFLAGS)
250 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
252 # Checks for FreeType
254 PKG_CHECK_MODULES(FREETYPE, freetype2)
256 AC_SUBST(FREETYPE_LIBS)
257 AC_SUBST(FREETYPE_CFLAGS)
259 fontconfig_save_libs="$LIBS"
260 fontconfig_save_cflags="$CFLAGS"
261 LIBS="$LIBS $FREETYPE_LIBS"
262 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
263 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)
264 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
265 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
266 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
267 [#include <ft2build.h>
268 #include FT_FREETYPE_H])
269 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
270 [FT_Bitmap_Size structure includes y_ppem field])
271 CFLAGS="$fontconfig_save_cflags"
272 LIBS="$fontconfig_save_libs"
275 # Check expat configuration
278 [AC_HELP_STRING([--with-expat=DIR],
279 [Use Expat in DIR])],
280 [expat_prefix=$withval],
282 AC_ARG_WITH(expat-includes,
283 [AC_HELP_STRING([--with-expat-includes=DIR],
284 [Use Expat includes in DIR])],
285 [expat_includes=$withval],
286 [expat_includes=auto])
287 AC_ARG_WITH(expat-lib,
288 [AC_HELP_STRING([--with-expat-lib=DIR])],
289 [expat_lib=$withval],
292 if test "$enable_libxml2" != "yes"; then
293 use_pkgconfig_for_expat=yes
294 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
295 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
297 use_pkgconfig_for_expat=no
299 if test "x$use_pkgconfig_for_expat" = "xno"; then
300 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
301 EXPAT_CFLAGS="-I${expat_includes}"
302 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
303 EXPAT_CFLAGS="-I${expat_prefix}/include"
307 if test "$expat_lib" != "auto"; then
308 EXPAT_LIBS="-L${expat_lib} -lexpat"
309 elif test "$expat_prefix" != "auto"; then
310 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
316 expatsaved_CPPFLAGS="$CPPFLAGS"
317 expatsaved_LIBS="$LIBS"
318 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
319 LIBS="$LIBS $EXPAT_LIBS"
321 AC_CHECK_HEADER(expat.h)
322 if test "$ac_cv_header_expat_h" = "no"; then
323 AC_CHECK_HEADER(xmlparse.h)
324 if test "$ac_cv_header_xmlparse_h" = "yes"; then
326 AC_SUBST(HAVE_XMLPARSE_H)
327 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
328 [Use xmlparse.h instead of expat.h])
331 *** expat is required. or try to use --enable-libxml2])
334 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
335 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
337 *** expat is required. or try to use --enable-libxml2])
339 CPPFLAGS="$expatsaved_CPPFLAGS"
340 LIBS="$expatsaved_LIBS"
342 AC_SUBST(EXPAT_CFLAGS)
347 # Check libxml2 configuration
349 AC_ARG_ENABLE(libxml2,
350 [AC_HELP_STRING([--enable-libxml2],
351 [Use libxml2 instead of Expat])])
353 if test "$enable_libxml2" = "yes"; then
354 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
355 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
357 AC_SUBST(LIBXML2_CFLAGS)
358 AC_SUBST(LIBXML2_LIBS)
360 fc_saved_CFLAGS="$CFLAGS"
361 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
362 AC_MSG_CHECKING([SAX1 support in libxml2])
363 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
364 #include <libxml/xmlversion.h>
365 #if !defined(LIBXML_SAX1_ENABLED)
366 # include "error: No SAX1 support in libxml2"
368 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
369 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
370 CFLAGS="$fc_saved_CFLAGS"
374 # Set default font directory
377 AC_ARG_WITH(default-fonts,
378 [AC_HELP_STRING([--with-default-fonts=DIR],
379 [Use fonts from DIR when config is busted])],
380 default_fonts="$withval", default_fonts=yes)
382 case "$default_fonts" in
384 if test "$os_win32" = "yes"; then
385 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
386 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
387 [Windows font directory])
389 FC_DEFAULT_FONTS="/usr/share/fonts"
390 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
391 [System font directory])
395 FC_DEFAULT_FONTS="$default_fonts"
396 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
397 [System font directory])
401 AC_SUBST(FC_DEFAULT_FONTS)
404 # Add more fonts if available. By default, add only the directories
405 # with outline fonts; those with bitmaps can be added as desired in
406 # local.conf or ~/.fonts.conf
408 AC_ARG_WITH(add-fonts,
409 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
410 [Find additional fonts in DIR1,DIR2,... ])],
411 add_fonts="$withval", add_fonts=yes)
416 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
417 case x"$FC_ADD_FONTS" in
420 if test -d "$sub"; then
421 case x$FC_ADD_FONTS in
426 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
433 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
439 FC_ADD_FONTS="$add_fonts"
440 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
444 AC_SUBST(FC_ADD_FONTS)
448 case "$FC_ADD_FONTS" in
452 FC_FONTPATH=`echo $FC_ADD_FONTS |
453 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
457 AC_SUBST(FC_FONTPATH)
460 # Set default cache directory path
462 AC_ARG_WITH(cache-dir,
463 [AC_HELP_STRING([--with-cache-dir=DIR],
464 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
465 fc_cachedir="$withval", fc_cachedir=yes)
469 if test "$os_win32" = "yes"; then
470 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
472 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
478 AC_SUBST(fc_cachedir)
479 FC_CACHEDIR=${fc_cachedir}
480 AC_SUBST(FC_CACHEDIR)
482 FC_FONTDATE=`LC_ALL=C date`
484 AC_SUBST(FC_FONTDATE)
487 # Set configuration paths
490 AC_ARG_WITH(templatedir,
491 [AC_HELP_STRING([--with-templatedir=DIR],
492 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
493 [templatedir="$withval"],
495 AC_ARG_WITH(baseconfigdir,
496 [AC_HELP_STRING([--with-baseconfigdir=DIR],
497 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
498 [baseconfigdir="$withval"],
500 AC_ARG_WITH(configdir,
501 [AC_HELP_STRING([--with-configdir=DIR],
502 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
503 [configdir="$withval"],
506 [AC_HELP_STRING([--with-xmldir=DIR],
507 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
511 case "$templatedir" in
513 templatedir='${datadir}'/fontconfig/conf.avail
518 case "$baseconfigdir" in
520 baseconfigdir='${sysconfdir}'/fonts
527 configdir='${baseconfigdir}'/conf.d
534 xmldir='${datadir}'/xml/fontconfig
540 TEMPLATEDIR=${templatedir}
541 BASECONFIGDIR=${baseconfigdir}
542 CONFIGDIR=${configdir}
544 AC_SUBST(templatedir)
545 AC_SUBST(TEMPLATEDIR)
546 AC_SUBST(baseconfigdir)
547 AC_SUBST(BASECONFIGDIR)
554 # Let people not build/install docs if they don't have docbook
557 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
559 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
563 # Check if docs exist or can be created
565 if test x$HASDOCBOOK = xno; then
566 if test -f $srcdir/doc/fonts-conf.5; then
574 [AC_HELP_STRING([--disable-docs],
575 [Don't build and install documentation])],
577 enable_docs=$default_docs)
579 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
581 if test "x$enable_docs" = xyes; then
584 cat $srcdir/doc/*.fncs | awk '
585 /^@TITLE@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
586 /^@FUNC@/ { if (!done) { printf ("%s\n", $2); done = 1; } }
587 /^@@/ { done = 0; }' > $tmp
588 DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
589 echo DOCMAN3 $DOCMAN3
600 dnl Figure out what cache format suffix to use for this architecture
602 AC_CHECK_SIZEOF([void *])
603 AC_CHECK_ALIGNOF([double])
605 dnl include the header file for workaround of miscalculating size on autoconf
606 dnl particularly for fat binaries
607 AH_BOTTOM([#include "config-fixups.h"])
613 fc-glyphname/Makefile