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 ==========================================================================
109 AC_ARG_VAR(CC_FOR_BUILD, [build system C compiler])
110 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
111 AM_CONDITIONAL(ENABLE_SHARED, test "$enable_shared" = "yes")
113 dnl ==========================================================================
116 [AC_HELP_STRING([--with-arch=ARCH],
117 [Force architecture to ARCH])],
118 arch="$withval", arch=auto)
120 if test "x$arch" != xauto; then
121 AC_DEFINE_UNQUOTED([FC_ARCHITECTURE], "$arch", [Architecture prefix to use for cache file names])
125 dnl ==========================================================================
127 # Checks for header files.
130 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])
131 AX_CREATE_STDINT_H([src/fcstdint.h])
133 # Checks for typedefs, structures, and compiler characteristics.
136 AC_C_FLEXIBLE_ARRAY_MEMBER
139 # Checks for library functions.
142 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])
144 dnl AC_CHECK_FUNCS doesn't check for header files.
145 dnl posix_fadvise() may be not available in older libc.
146 fc_saved_CFLAGS="$CFLAGS"
147 CFLAGS="$CFLAGS $WARN_CFLAGS -Werror"
148 AC_MSG_CHECKING([for posix_fadvise])
149 AC_LINK_IFELSE([AC_LANG_SOURCE([[
152 return posix_fadvise(0, 0, 0, 0);
156 AC_DEFINE([HAVE_POSIX_FADVISE], [1], [Define to 1 if you have the 'posix_fadvise' function.])
157 ],[AC_MSG_RESULT([no])])
158 CFLAGS="$fc_saved_CFLAGS"
161 if test "x$ac_cv_func_fstatvfs" = "xyes"; then
162 AC_CHECK_MEMBERS([struct statvfs.f_basetype, struct statvfs.f_fstypename],,,
163 [#include <sys/statvfs.h>])
165 if test "x$ac_cv_func_fstatfs" = "xyes"; then
166 AC_CHECK_MEMBERS([struct statfs.f_flags, struct statfs.f_fstypename],,, [
167 #ifdef HAVE_SYS_VFS_H
170 #ifdef HAVE_SYS_STATFS_H
171 #include <sys/statfs.h>
173 #ifdef HAVE_SYS_PARAM_H
174 #include <sys/param.h>
176 #ifdef HAVE_SYS_MOUNT_H
177 #include <sys/mount.h>
180 AC_CHECK_MEMBERS([struct dirent.d_type],,,
181 [#include <dirent.h>])
185 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
186 AC_DEFINE(USE_REGEX,,[Use regex])
193 [AC_HELP_STRING([--enable-iconv],
194 [Use iconv to support non-Unicode SFNT name])],
196 AC_ARG_WITH(libiconv,
197 [AC_HELP_STRING([--with-libiconv=DIR],
198 [Use libiconv in DIR])],
199 [if test "x$withval" = "xyes"; then
200 libiconv_prefix=$prefix
202 libiconv_prefix=$withval
204 [libiconv_prefix=auto])
205 AC_ARG_WITH(libiconv-includes,
206 [AC_HELP_STRING([--with-libiconv-includes=DIR],
207 [Use libiconv includes in DIR])],
208 [libiconv_includes=$withval],
209 [libiconv_includes=auto])
210 AC_ARG_WITH(libiconv-lib,
211 [AC_HELP_STRING([--with-libiconv-lib=DIR],
212 [Use libiconv library in DIR])],
213 [libiconv_lib=$withval],
216 # if no libiconv,libiconv-includes,libiconv-lib are specified,
217 # libc's iconv has a priority.
218 if test "$libiconv_includes" != "auto" -a -r ${libiconv_includes}/iconv.h; then
219 libiconv_cflags="-I${libiconv_includes}"
220 elif test "$libiconv_prefix" != "auto" -a -r ${libiconv_prefix}/include/iconv.h; then
221 libiconv_cflags="-I${libiconv_prefix}/include"
226 if test "x$libiconv_cflags" != "x"; then
227 if test "$libiconv_lib" != "auto" -a -d ${libiconv_lib}; then
228 libiconv_libs="-L${libiconv_lib} -liconv"
229 elif test "$libiconv_prefix" != "auto" -a -d ${libiconv_prefix}/lib; then
230 libiconv_libs="-L${libiconv_prefix}/lib -liconv"
232 libiconv_libs="-liconv"
237 if test "x$enable_iconv" != "xno"; then
238 AC_MSG_CHECKING([for a usable iconv])
239 if test "x$libiconv_cflags" != "x" -o "x$libiconv_libs" != "x"; then
240 iconvsaved_CFLAGS="$CFLAGS"
241 iconvsaved_LIBS="$LIBS"
242 CFLAGS="$CFLAGS $libiconv_cflags"
243 LIBS="$LIBS $libiconv_libs"
245 AC_TRY_LINK([#include <iconv.h>],
246 [iconv_open ("from", "to");],
247 [iconv_type="libiconv"
251 CFLAGS="$iconvsaved_CFLAGS"
252 LIBS="$iconvsaved_LIBS"
253 ICONV_CFLAGS="$libiconv_cflags"
254 ICONV_LIBS="$libiconv_libs"
256 if test "x$use_iconv" = "x0"; then
257 AC_TRY_LINK([#include <iconv.h>],
258 [iconv_open ("from", "to");],
261 [iconv_type="not found"
265 AC_MSG_RESULT([$iconv_type])
266 AC_SUBST(ICONV_CFLAGS)
269 AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
271 # Checks for FreeType
273 PKG_CHECK_MODULES(FREETYPE, freetype2)
275 AC_SUBST(FREETYPE_LIBS)
276 AC_SUBST(FREETYPE_CFLAGS)
278 fontconfig_save_libs="$LIBS"
279 fontconfig_save_cflags="$CFLAGS"
280 LIBS="$LIBS $FREETYPE_LIBS"
281 CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
282 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)
283 AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
284 HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
285 HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
286 [#include <ft2build.h>
287 #include FT_FREETYPE_H])
288 AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
289 [FT_Bitmap_Size structure includes y_ppem field])
290 CFLAGS="$fontconfig_save_cflags"
291 LIBS="$fontconfig_save_libs"
294 # Check expat configuration
297 [AC_HELP_STRING([--with-expat=DIR],
298 [Use Expat in DIR])],
299 [expat_prefix=$withval],
301 AC_ARG_WITH(expat-includes,
302 [AC_HELP_STRING([--with-expat-includes=DIR],
303 [Use Expat includes in DIR])],
304 [expat_includes=$withval],
305 [expat_includes=auto])
306 AC_ARG_WITH(expat-lib,
307 [AC_HELP_STRING([--with-expat-lib=DIR])],
308 [expat_lib=$withval],
311 if test "$enable_libxml2" != "yes"; then
312 use_pkgconfig_for_expat=yes
313 if test "$expat_prefix" = "auto" -a "$expat_includes" = "auto" -a "$expat_lib" = "auto"; then
314 PKG_CHECK_MODULES(EXPAT, expat,,use_pkgconfig_for_expat=no)
316 use_pkgconfig_for_expat=no
318 if test "x$use_pkgconfig_for_expat" = "xno"; then
319 if test "$expat_includes" != "auto" -a -r ${expat_includes}/expat.h; then
320 EXPAT_CFLAGS="-I${expat_includes}"
321 elif test "$expat_prefix" != "auto" -a -r ${expat_prefix}/include/expat.h; then
322 EXPAT_CFLAGS="-I${expat_prefix}/include"
326 if test "$expat_lib" != "auto"; then
327 EXPAT_LIBS="-L${expat_lib} -lexpat"
328 elif test "$expat_prefix" != "auto"; then
329 EXPAT_LIBS="-L${expat_prefix}/lib -lexpat"
335 expatsaved_CPPFLAGS="$CPPFLAGS"
336 expatsaved_LIBS="$LIBS"
337 CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
338 LIBS="$LIBS $EXPAT_LIBS"
340 AC_CHECK_HEADER(expat.h)
341 if test "$ac_cv_header_expat_h" = "no"; then
342 AC_CHECK_HEADER(xmlparse.h)
343 if test "$ac_cv_header_xmlparse_h" = "yes"; then
345 AC_SUBST(HAVE_XMLPARSE_H)
346 AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
347 [Use xmlparse.h instead of expat.h])
350 *** expat is required. or try to use --enable-libxml2])
353 AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
354 if test "$ac_cv_func_XML_SetDoctypeDeclHandler" = "no"; then
356 *** expat is required. or try to use --enable-libxml2])
358 CPPFLAGS="$expatsaved_CPPFLAGS"
359 LIBS="$expatsaved_LIBS"
361 AC_SUBST(EXPAT_CFLAGS)
366 # Check libxml2 configuration
368 AC_ARG_ENABLE(libxml2,
369 [AC_HELP_STRING([--enable-libxml2],
370 [Use libxml2 instead of Expat])])
372 if test "$enable_libxml2" = "yes"; then
373 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
374 AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
376 AC_SUBST(LIBXML2_CFLAGS)
377 AC_SUBST(LIBXML2_LIBS)
379 fc_saved_CFLAGS="$CFLAGS"
380 CFLAGS="$CFLAGS $LIBXML2_CFLAGS"
381 AC_MSG_CHECKING([SAX1 support in libxml2])
382 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
383 #include <libxml/xmlversion.h>
384 #if !defined(LIBXML_SAX1_ENABLED)
385 # include "error: No SAX1 support in libxml2"
387 ]])], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([
388 *** SAX1 support in libxml2 is required. enable it or use expat instead.])])
389 CFLAGS="$fc_saved_CFLAGS"
393 # Set default font directory
396 AC_ARG_WITH(default-fonts,
397 [AC_HELP_STRING([--with-default-fonts=DIR],
398 [Use fonts from DIR when config is busted])],
399 default_fonts="$withval", default_fonts=yes)
401 case "$default_fonts" in
403 if test "$os_win32" = "yes"; then
404 FC_DEFAULT_FONTS="WINDOWSFONTDIR"
405 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR",
406 [Windows font directory])
408 FC_DEFAULT_FONTS="/usr/share/fonts"
409 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts",
410 [System font directory])
414 FC_DEFAULT_FONTS="$default_fonts"
415 AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
416 [System font directory])
420 AC_SUBST(FC_DEFAULT_FONTS)
423 # Add more fonts if available. By default, add only the directories
424 # with outline fonts; those with bitmaps can be added as desired in
425 # local.conf or ~/.fonts.conf
427 AC_ARG_WITH(add-fonts,
428 [AC_HELP_STRING([--with-add-fonts=DIR1,DIR2,...],
429 [Find additional fonts in DIR1,DIR2,... ])],
430 add_fonts="$withval", add_fonts=yes)
435 for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
436 case x"$FC_ADD_FONTS" in
439 if test -d "$sub"; then
440 case x$FC_ADD_FONTS in
445 FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
452 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
458 FC_ADD_FONTS="$add_fonts"
459 AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
463 AC_SUBST(FC_ADD_FONTS)
467 case "$FC_ADD_FONTS" in
471 FC_FONTPATH=`echo $FC_ADD_FONTS |
472 sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
476 AC_SUBST(FC_FONTPATH)
479 # Set default cache directory path
481 AC_ARG_WITH(cache-dir,
482 [AC_HELP_STRING([--with-cache-dir=DIR],
483 [Use DIR to store cache files [default=LOCALSTATEDIR/cache/fontconfig]])],
484 fc_cachedir="$withval", fc_cachedir=yes)
488 if test "$os_win32" = "yes"; then
489 fc_cachedir="WINDOWSTEMPDIR_FONTCONFIG_CACHE"
491 fc_cachedir='${localstatedir}/cache/${PACKAGE}'
497 AC_SUBST(fc_cachedir)
498 FC_CACHEDIR=${fc_cachedir}
499 AC_SUBST(FC_CACHEDIR)
501 FC_FONTDATE=`LC_ALL=C date`
503 AC_SUBST(FC_FONTDATE)
506 # Set configuration paths
509 AC_ARG_WITH(templatedir,
510 [AC_HELP_STRING([--with-templatedir=DIR],
511 [Use DIR to store the configuration template files [default=DATADIR/fontconfig/conf.avail]])],
512 [templatedir="$withval"],
514 AC_ARG_WITH(baseconfigdir,
515 [AC_HELP_STRING([--with-baseconfigdir=DIR],
516 [Use DIR to store the base configuration files [default=SYSCONFDIR/fonts]])],
517 [baseconfigdir="$withval"],
519 AC_ARG_WITH(configdir,
520 [AC_HELP_STRING([--with-configdir=DIR],
521 [Use DIR to store active configuration files [default=BASECONFIGDIR/conf.d]])],
522 [configdir="$withval"],
525 [AC_HELP_STRING([--with-xmldir=DIR],
526 [Use DIR to store XML schema files [default=DATADIR/xml/fontconfig]])],
530 case "$templatedir" in
532 templatedir='${datadir}'/fontconfig/conf.avail
537 case "$baseconfigdir" in
539 baseconfigdir='${sysconfdir}'/fonts
546 configdir='${baseconfigdir}'/conf.d
553 xmldir='${datadir}'/xml/fontconfig
559 TEMPLATEDIR=${templatedir}
560 BASECONFIGDIR=${baseconfigdir}
561 CONFIGDIR=${configdir}
563 AC_SUBST(templatedir)
564 AC_SUBST(TEMPLATEDIR)
565 AC_SUBST(baseconfigdir)
566 AC_SUBST(BASECONFIGDIR)
573 dnl ===========================================================================
576 # Thread-safety primitives
579 AC_CACHE_CHECK([for Intel atomic primitives], fc_cv_have_intel_atomic_primitives, [
580 fc_cv_have_intel_atomic_primitives=false
582 void memory_barrier (void) { __sync_synchronize (); }
583 int atomic_add (int *i) { return __sync_fetch_and_add (i, 1); }
584 int mutex_trylock (int *m) { return __sync_lock_test_and_set (m, 1); }
585 void mutex_unlock (int *m) { __sync_lock_release (m); }
586 ], [], fc_cv_have_intel_atomic_primitives=true
589 if $fc_cv_have_intel_atomic_primitives; then
590 AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1, [Have Intel __sync_* atomic primitives])
593 AC_CHECK_HEADERS(sched.h)
594 AC_CHECK_FUNCS(sched_yield)
597 if test "$os_win32" = no; then
598 AX_PTHREAD([have_pthread=true])
600 if $have_pthread; then
601 AC_DEFINE(HAVE_PTHREAD, 1, [Have POSIX threads])
603 AM_CONDITIONAL(HAVE_PTHREAD, $have_pthread)
606 dnl ===========================================================================
609 # Let people not build/install docs if they don't have docbook
612 AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
614 AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
618 # Check if docs exist or can be created
620 if test x$HASDOCBOOK = xno; then
621 if test -f $srcdir/doc/fonts-conf.5; then
629 [AC_HELP_STRING([--disable-docs],
630 [Don't build and install documentation])],
632 enable_docs=$default_docs)
634 AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
636 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
651 dnl Figure out what cache format suffix to use for this architecture
653 AC_CHECK_SIZEOF([void *])
654 AC_CHECK_ALIGNOF([double])
656 dnl include the header file for workaround of miscalculating size on autoconf
657 dnl particularly for fat binaries
658 AH_BOTTOM([#include "config-fixups.h"])
664 fc-glyphname/Makefile