]> git.wh0rd.org - fontconfig.git/blobdiff - configure.in
Update for version 2.4.1
[fontconfig.git] / configure.in
index e87bd810018b908c4f1eff5c65cfe744a1b757d4..9cebc9f2f9559c4aa9c00181bb298df307e788de 100644 (file)
+dnl 
+dnl  $Id$
+dnl 
+dnl  Copyright © 2003 Keith Packard
+dnl 
+dnl  Permission to use, copy, modify, distribute, and sell this software and its
+dnl  documentation for any purpose is hereby granted without fee, provided that
+dnl  the above copyright notice appear in all copies and that both that
+dnl  copyright notice and this permission notice appear in supporting
+dnl  documentation, and that the name of Keith Packard not be used in
+dnl  advertising or publicity pertaining to distribution of the software without
+dnl  specific, written prior permission.  Keith Packard makes no
+dnl  representations about the suitability of this software for any purpose.  It
+dnl  is provided "as is" without express or implied warranty.
+dnl 
+dnl  KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+dnl  EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+dnl  PERFORMANCE OF THIS SOFTWARE.
 dnl
-dnl $XFree86$
-dnl
-dnl Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
-dnl
-dnl Permission to use, copy, modify, distribute, and sell this software and its
-dnl documentation for any purpose is hereby granted without fee, provided that
-dnl the above copyright notice appear in all copies and that both that
-dnl copyright notice and this permission notice appear in supporting
-dnl documentation, and that the name of Keith Packard not be used in
-dnl advertising or publicity pertaining to distribution of the software without
-dnl specific, written prior permission.  Keith Packard makes no
-dnl representations about the suitability of this software for any purpose.  It
-dnl is provided "as is" without express or implied warranty.
-dnl
-dnl KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-dnl EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-dnl CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-dnl DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-dnl TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-dnl PERFORMANCE OF THIS SOFTWARE.
-dnl
+dnl Process this file with autoconf to create configure.
+
+AC_INIT(fonts.dtd)
+
+dnl ==========================================================================
+dnl                               Versioning              
+dnl ==========================================================================
+
+dnl This is the package version number, not the shared library
+dnl version.  This same version number must appear in fontconfig/fontconfig.h
+dnl Yes, it is a pain to synchronize version numbers.  Unfortunately, it's
+dnl not possible to extract the version number here from fontconfig.h
+AM_INIT_AUTOMAKE(fontconfig, 2.4.1)
+AM_MAINTAINER_MODE
+
+dnl libtool versioning
+
+dnl bump revision when fixing bugs
+dnl bump current and age, reset revision to zero when adding APIs
+dnl bump current, leave age, reset revision to zero when changing/removing APIS
+LT_CURRENT=2
+LT_REVISION=0
+AC_SUBST(LT_CURRENT)
+AC_SUBST(LT_REVISION)
+LT_AGE=1
+
+LT_VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE"
+AC_SUBST(LT_VERSION_INFO)
+
+LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
+AC_SUBST(LT_CURRENT_MINUS_AGE)
+
+dnl ==========================================================================
+
+AM_CONFIG_HEADER(config.h)
 
-# Process this file with autoconf to produce a configure script.
-AC_INIT(fontconfig, 1.0.1, fonts@xfree86.org)
-AC_CONFIG_AUX_DIR(config)
-AC_CONFIG_HEADER(config.h)
-
-AC_ARG_WITH(freetype_includes, [  --with-freetype-includes=DIR  Use FreeType includes in DIR], freetype_includes=$withval, freetype_includes=yes)
-AC_ARG_WITH(freetype_lib,      [  --with-freetype-lib=DIR       Use FreeType library in DIR], freetype_lib=$withval, freetype_lib=yes)
-AC_ARG_WITH(freetype_config,   [  --with-freeetype-config=PROG  Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=yes)
-AC_ARG_WITH(expat,             [  --with-expat=DIR              Use Expat in DIR instead of xml2], expat=$withval, expat=maybe)
-AC_ARG_WITH(expat_includes,    [  --with-expat-includes=DIR     Use Expat includes in DIR], expat_includes=$withval, expat_includes=yes)
-AC_ARG_WITH(expat_lib,         [  --with-expat-lib=DIR          Use Expat library in DIR], expat_lib=$withval, expat_lib=yes)
-AC_ARG_WITH(xml2,              [  --with-xml2=DIR               Use Libxml2 in DIR instead of expat], xml2=$withval, xml2=maybe)
-AC_ARG_WITH(xml2_includes,     [  --with-xml2-includes=DIR      Use Libxml2 includes in DIR], xml2_includes=$withval, xml2_includes=yes)
-AC_ARG_WITH(xml2_lib,          [  --with-xml2-lib=DIR           Use Libxml2 library in DIR], xml2_lib=$withval, xml2_lib=yes)
-AC_ARG_WITH(fallback_fonts,    [  --with-fallback-fonts=DIR     Use fonts from DIR when config is busted], fallback_fonts="$withval", fallback_fonts=yes)
-
-# Checks for programs.
 AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_LN_S
+AC_LIBTOOL_WIN32_DLL
+AM_PROG_LIBTOOL
+AC_PROG_MAKE_SET
+
+dnl ==========================================================================
+
+case "$host" in
+  *-*-mingw*)
+    os_win32=yes
+    ;;
+  *)
+    os_win32=no
+esac
+AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+
+if test "$os_win32" = "yes"; then
+  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
+fi
+AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
+
+WARN_CFLAGS=""
+if test "x$GCC" = "xyes"; then
+       WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \
+       -Wmissing-prototypes -Wmissing-declarations \
+       -Wnested-externs -fno-strict-aliasing"
+       AC_DEFINE_UNQUOTED(HAVE_WARNING_CPP_DIRECTIVE,1,
+       [Can use #warning in C files])
+fi
+AC_SUBST(WARN_CFLAGS)
+
+
+dnl ==========================================================================
+
+AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
+
+dnl ==========================================================================
+
+# Setup for compiling build tools (fc-glyphname, etc)
+AC_MSG_CHECKING([for a C compiler for build tools])
+if test $cross_compiling = yes; then
+  AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
+else
+  CC_FOR_BUILD=$CC
+fi
+AC_MSG_RESULT([$CC_FOR_BUILD])
+AC_SUBST(CC_FOR_BUILD)
+
+AC_MSG_CHECKING([for suffix of executable build tools])
+if test $cross_compiling = yes; then
+  cat >conftest.c <<\_______EOF
+int
+main ()
+{
+  exit (0);
+}
+_______EOF
+  for i in .exe ""; do
+    compile="$CC_FOR_BUILD conftest.c -o conftest$i"
+    if AC_TRY_EVAL(compile); then
+      if (./conftest) 2>&AC_FD_CC; then
+       EXEEXT_FOR_BUILD=$i
+       break
+      fi
+    fi
+  done
+  rm -f conftest*
+  if test "${EXEEXT_FOR_BUILD+set}" != set; then
+    AC_MSG_ERROR([Cannot determine suffix of executable build tools])
+  fi
+else
+  EXEEXT_FOR_BUILD=$EXEEXT
+fi
+AC_MSG_RESULT([$EXEEXT_FOR_BUILD])
+AC_SUBST(EXEEXT_FOR_BUILD)
 
-PACKAGE_VERSION=1.0.1
+dnl ==========================================================================
 
-# Set major version
-PACKAGE_MAJOR=`echo $PACKAGE_VERSION | awk -F . '{ print $1 }'`
-PACKAGE_MINOR=`echo $PACKAGE_VERSION | awk -F . '{ print $2 }'`
-PACKAGE_REVISION=`echo $PACKAGE_VERSION | awk -F . '{ print $3 }'`
-AC_SUBST(PACKAGE_MAJOR)
-AC_SUBST(PACKAGE_MINOR)
-AC_SUBST(PACKAGE_REVISION)
+AC_ARG_WITH(arch,      [  --with-arch=ARCH      Force architecture to ARCH], arch="$withval", arch=auto)
 
-OBJEXT="o"
-AC_SUBST(OBJEXT)
+if test $cross_compiling = yes; then
+       case "$arch" in
+       auto)
+               AC_MSG_ERROR([Cannot autodetect architecture in cross compile environment]
+                            [Use --with-arch=ARCH to specify architecture])
+               ;;
+       esac
+fi
+
+ARCHITECTURE=$arch
+AC_SUBST(ARCHITECTURE)
 
-AC_DEFINE_UNQUOTED(PACKAGE_MAJOR,$PACKAGE_MAJOR)
-AC_DEFINE_UNQUOTED(PACKAGE_MINOR,$PACKAGE_MINOR)
-AC_DEFINE_UNQUOTED(PACKAGE_REVISION,$PACKAGE_REVISION)
-        
-#AH_TEMPLATE([PACKAGE_MAJOR],[Library major version])
-#AH_TEMPLATE([PACKAGE_MINOR],[Library minor version])
-#AH_TEMPLATE([PACKAGE_REVISION],[Library revision])
+dnl ==========================================================================
 
 # Checks for header files.
 AC_HEADER_DIRENT
@@ -71,312 +160,419 @@ AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
+AC_C_INLINE
 AC_TYPE_PID_T
 
 # Checks for library functions.
-#AC_FUNC_MALLOC
-#AC_FUNC_STAT
-#AC_FUNC_STRTOD
 AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([memmove memset strchr strrchr strtol getopt getopt_long])
+AC_FUNC_MMAP
+AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand_r])
 
-if test "$GCC" = "yes"; then
-    MKSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
-    DSO_LDOPTS='-shared -Wl,-h,`echo $@ | sed '"'s/\.so\.\([[0-9][0-9]]*\).*/.so.\1/'"'`'
-    DSO_CFLAGS=''
-    DSO_PIC_CFLAGS='-fPIC -DPIC'
+#
+# Checks for iconv
+#
+AC_MSG_CHECKING([for a usable iconv])
+ICONV_LIBS=""
+AC_TRY_LINK([#include <iconv.h>],
+           [iconv_open ("from", "to");],
+           [use_iconv=1],
+           [use_iconv=0])
+if test x$use_iconv = x1; then
+       AC_MSG_RESULT([libc])
 else
-    MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
-    DSO_LDOPTS='-shared -h $@'
-    DSO_CFLAGS=''
-    DSO_PIC_CFLAGS='-KPIC -DPIC'
-fi
+       # try using libiconv
+       fontconfig_save_libs="$LIBS"
+       LIBS="$LIBS -liconv"
 
-AC_SUBST(MKSHLIB)
-AC_SUBST(DSO_LDOPTS)
-AC_SUBST(DSO_CFLAGS)
-AC_SUBST(DSO_PIC_CFLAGS)
+       AC_TRY_LINK([#include <iconv.h>],
+                   [iconv_open ("from", "to");],
+                   [use_iconv=true],
+                   [use_iconv=false])
+       
+       if test x$use_iconv = x1; then
+               ICONV_LIBS="-liconv"
+               AC_MSG_RESULT([libiconv])
+       else
+               AC_MSG_RESULT([no])
+       fi
+
+       LIBS="$fontconfig_save_libs"
+fi
+AC_SUBST(ICONV_LIBS)
+AC_DEFINE_UNQUOTED(USE_ICONV,$use_iconv,[Use iconv.])
 
 #
-# Check freetype configuration
+# Checks for FreeType
 #
-case "$freetype_config" in
-no)
-       ;;
-yes)
-       AC_CHECK_PROG(ft_config,freetype-config,freetype-config,no)
-       ;;
-*)
-       ft_config="$freetype_config"
-       ;;
-esac
-
-case "$freetype_includes" in
-no)
-       freetype_includes=""
-       ;;
-yes)
-       case "$ft_config" in
-       no)
-               freetype_includes=""
-               ;;
-       *)
-               freetype_includes="`$ft_config --cflags`"
-               ;;
-       esac
-       ;;
-*)
-       freetype_includes="-I$freetype_includes"
-       ;;
-esac
 
-case "$freetype_lib" in
-no)
-       freetype_lib=""
-       ;;
-yes)
-       case "$ft_config" in
-       no)
-               freetype_lib=""
-               ;;
-       *)
-               freetype_lib="`$ft_config --libs`"
-               ;;
-       esac
-       ;;
-*)
-       freetype_lib="-L$freetype_lib -lfreetype"
-       ;;
-esac
+AC_ARG_WITH(freetype-config, [  --with-freetype-config=PROG   Use FreeType configuration program PROG], freetype_config=$withval, freetype_config=yes)
 
-saved_LIBS="$LIBS"
-LIBS="$LIBS $freetype_lib"
-saved_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $freetype_includes"
-AC_CHECK_HEADERS(freetype/freetype.h)
+if test "$freetype_config" = "yes"; then 
+       AC_PATH_PROG(ft_config,freetype-config,no)
+       if test "$ft_config" = "no"; then
+               AC_MSG_ERROR([You must have freetype installed; see http://www.freetype.org/])
+       fi
+else
+       ft_config="$freetype_config"
+fi
 
-case "$ac_cv_header_freetype_freetype_h" in
-no)
-       CPPFLAGS="$saved_CPPFLAGS"
-       LIBS="$saved_LIBS"
-       ;;
-yes)
-       AC_CHECK_FUNCS(FT_Init_FreeType)
-       case "$ac_cv_func_FT_Init_FreeType" in
-       no)
-               CPPFLAGS="$saved_CPPFLAGS"
-               LIBS="$saved_LIBS"
-               ;;
-       yes)
-               AC_DEFINE(HAVE_FREETYPE)
-               ;;
-       esac
-       ;;
-esac
-#AH_TEMPLATE([HAVE_FREETYPE],[whether system has freetype2 library])
+FREETYPE_CFLAGS="`$ft_config --cflags`"
+FREETYPE_LIBS="`$ft_config --libs`"
 
-case "$fallback_fonts" in
-yes)
-       AC_DEFINE_UNQUOTED(FC_FALLBACK_FONTS, "/usr/share/fonts")
-       ;;
-*)
-       AC_DEFINE_UNQUOTED(FC_FALLBACK_FONTS, "$fallback_fonts")
-       ;;
-esac
-#AH_TEMPLATE([FC_FALLBACK_FONTS],
-#          [Path library uses when config file is broken])
+AC_SUBST(FREETYPE_LIBS)
+AC_SUBST(FREETYPE_CFLAGS)
 
 #
-# Check expat/libxml2 configuration
+# Check to see whether we have:
+#  FT_Get_Next_Char
+#  FT_Get_BDF_Property
+#  FT_Get_PS_Font_Info
+#  FT_Has_PS_Glyph_Names
 #
 
-case "$expat" in
-maybe)
-       ;;
-no)
-       xml2=yes
-       ;;
-*)
-       xml2=no
-       ;;
-esac
+fontconfig_save_libs="$LIBS"
+fontconfig_save_cflags="$CFLAGS"
+LIBS="$LIBS $FREETYPE_LIBS"
+CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
+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)
+AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem,
+               HAVE_FT_BITMAP_SIZE_Y_PPEM=1,
+               HAVE_FT_BITMAP_SIZE_Y_PPEM=0,
+[#include <ft2build.h>
+#include FT_FREETYPE_H])
+AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM,
+                  [FT_Bitmap_Size structure includes y_ppem field])
+CFLAGS="$fontconfig_save_cflags"
+LIBS="$fontconfig_save_libs"
 
-case "$xml2" in
-maybe)
-       ;;
-no)
-       expat=yes
-       ;;
-*)
-       expat=no
-       ;;
-esac
+#
+# Check expat configuration
+#
 
-case "$expat" in
-no)
+AC_ARG_WITH(expat,             [  --with-expat=DIR              Use Expat in DIR], expat=$withval, expat=yes)
+AC_ARG_WITH(expat-includes,    [  --with-expat-includes=DIR     Use Expat includes in DIR], expat_includes=$withval, expat_includes=yes)
+AC_ARG_WITH(expat-lib,         [  --with-expat-lib=DIR          Use Expat library in DIR], expat_lib=$withval, expat_lib=yes)
+
+if test "$enable_libxml2" != "yes"; then
+       case "$expat" in
+       no)
        ;;
-*)
-       case "$expat_includes" in
-       yes|no)
-               expat_include_path=""
-               ;;
        *)
-               expat_include_path="-I$expat_includes"
-               ;;
-       esac
-       case "$expat_lib" in
-       yes)
-               case "$expat" in
-               yes|maybe)
-                       expat_library="-lexpat"
+               case "$expat_includes" in
+               yes)
+                       case "$expat" in
+                       yes)
+                               ;;
+                       *)
+                               EXPAT_CFLAGS="-I$expat/include"
+                               ;;
+                       esac
+                       ;;
+               no)
+                       EXPAT_CFLAGS=""
                        ;;
                *)
-                       expat_library="-L$expat/lib -lexpat"
+                       EXPAT_CFLAGS="-I$expat_includes"
+                       ;;
+               esac
+               case "$expat_lib" in
+               yes)
+                       case "$expat" in
+                       yes)
+                               EXPAT_LIBS="-lexpat"
+                               ;;
+                       *)
+                               EXPAT_LIBS="-L$expat/lib -lexpat"
+                               ;;
+                       esac
+                       ;;
+               no)
+                       ;;
+               *)
+                       EXPAT_LIBS="-L$expat_lib -lexpat"
                        ;;
                esac
-               ;;
-       no)
-               ;;
-       *)
-               expat_library="-L$expat_lib -lexpat"
-               ;;
-       esac
 
-       saved_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS $expat_include_path"
-       saved_LIBS="$LIBS"
-       LIBS="$LIBS $expat_library"
+               expatsaved_CPPFLAGS="$CPPFLAGS"
+               CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS"
+               expatsaved_LIBS="$LIBS"
+               LIBS="$LIBS $EXPAT_LIBS"
 
-       AC_CHECK_HEADER(expat.h)
-       case "$ac_cv_header_expat_h" in
-       no)
-               AC_CHECK_HEADER(xmlparse.h)
-               case "$ac_cv_header_xmlparse_h" in
+               AC_CHECK_HEADER(expat.h)
+               case "$ac_cv_header_expat_h" in
                no)
-                       have_expat_header=no;
+                       AC_CHECK_HEADER(xmlparse.h)
+                       case "$ac_cv_header_xmlparse_h" in
+                       no)
+                               have_expat_header=no;
+                               ;;
+                       yes)
+                               HAVE_XMLPARSE_H=1
+                               AC_SUBST(HAVE_XMLPARSE_H)
+                               AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H,
+                               [Use xmlparse.h instead of expat.h])
+                               have_expat_header=yes
+                               ;;
+                       esac
                        ;;
                yes)
-                       HAVE_XMLPARSE_H=1
-                       AC_SUBST(HAVE_XMLPARSE_H)
-                       AC_DEFINE_UNQUOTED(HAVE_XMLPARSE_H,$HAVE_XMLPARSE_H)
                        have_expat_header=yes
                        ;;
                esac
-               ;;
-       yes)
-               have_expat_header=yes
-               ;;
-       esac
-       case "$have_expat_header" in
-       no)
-               CPPFLAGS="$saved_CPPFLAGS"
-               LIBS="$saved_LIBS"
-               expat=no
-               ;;
-       yes)
-               AC_CHECK_FUNCS(XML_ParserCreate)
-               case "$ac_cv_func_XML_ParserCreate" in
+               case "$have_expat_header" in
                no)
-                       CPPFLAGS="$saved_CPPFLAGS"
-                       LIBS="$saved_LIBS"
                        expat=no
                        ;;
                yes)
-                       HAVE_EXPAT=1
-                       AC_SUBST(HAVE_EXPAT)
-                       AC_DEFINE_UNQUOTED(HAVE_EXPAT,$HAVE_EXPAT)
-                       xml2=no
+                       AC_CHECK_FUNCS(XML_SetDoctypeDeclHandler)
+                       case "$ac_cv_func_XML_SetDoctypeDeclHandler" in
+                       yes)
+                               HAVE_EXPAT=1
+                               AC_SUBST(HAVE_EXPAT)
+                               AC_DEFINE_UNQUOTED(HAVE_EXPAT,$HAVE_EXPAT,
+                               [Found a useable expat library])
+                               ;;
+                       *)
+                               expat=no
+                               ;;
+                       esac
                        ;;
                esac
+               CPPFLAGS="$expatsaved_CPPFLAGS"
+               LIBS="$expatsaved_LIBS"
                ;;
        esac
-       ;;
-esac
        
-case "$xml2" in
-no)
-       ;;
-*)
-       case "$xml2_includes" in
-       yes|no)
-               xml2_include_path=""
-               ;;
-       *)
-               xml2_include_path="-I$xml2_includes"
-               ;;
-       esac
-       case "$xml2_lib" in
-       yes)
-               case "$xml2" in
-               yes|maybe)
-                       xml2_library="-lxml2"
-                       ;;
-               *)
-                       xml2_library="-L$xml2/lib -lxml2"
-                       ;;
-               esac
-               ;;
+       AC_SUBST(EXPAT_CFLAGS)
+       AC_SUBST(EXPAT_LIBS)
+
+       case "$expat" in
        no)
-               ;;
-       *)
-               xml2_library="-L$xml2_lib -lxml2"
+               EXPAT_CFLAGS=""
+               EXPAT_LIBS=""
+
+               AC_MSG_WARN([Cannot find usable expat library. Trying to use libxml2 as fallback.])
                ;;
        esac
+fi
 
-       saved_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS $xml2_include_path"
-       saved_LIBS="$LIBS"
-       LIBS="$LIBS $xml2_library"
+#
+# Check libxml2 configuration
+#
 
-       AC_CHECK_HEADER(libxml/parser.h)
-       case "$ac_cv_header_libxml_parser_h" in
-       no)
-               CPPFLAGS="$saved_CPPFLAGS"
-               LIBS="$saved_LIBS"
-               xml2=no
-               ;;
-       yes)
-               AC_CHECK_FUNCS(xmlInitParser)
-               case "$ac_cv_func_xmlInitParser" in
-               no)
-                       CPPFLAGS="$saved_CPPFLAGS"
-                       LIBS="$saved_LIBS"
-                       xml2=no
-                       ;;
-               yes)
-                       HAVE_XML2=1
-                       AC_SUBST(HAVE_XML2)
-                       AC_DEFINE_UNQUOTED(HAVE_XML2,$HAVE_XML2)
-                       expat=no
+AC_ARG_ENABLE(libxml2,         [  --enable-libxml2              Use libxml2 instead of Expat])
+
+PKG_PROG_PKG_CONFIG
+
+if test "$enable_libxml2" = "yes" -o "$expat" = "no"; then
+    PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6])
+    AC_DEFINE_UNQUOTED(ENABLE_LIBXML2,1,[Use libxml2 instead of Expat])
+
+    AC_SUBST(LIBXML2_CFLAGS)
+    AC_SUBST(LIBXML2_LIBS)
+fi
+
+#
+# Set default font directory
+#
+
+AC_ARG_WITH(default-fonts,     [  --with-default-fonts=DIR      Use fonts from DIR when config is busted], default_fonts="$withval", default_fonts=yes)
+
+case "$default_fonts" in
+yes)
+       if test "$os_win32" = "yes"; then
+               FC_DEFAULT_FONTS="WINDOWSFONTDIR"
+               AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "WINDOWSFONTDIR", 
+                                  [Windows font directory])
+       else
+               FC_DEFAULT_FONTS="/usr/share/fonts"
+               AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "/usr/share/fonts", 
+                                  [System font directory])
+       fi
+       ;;
+*)
+       FC_DEFAULT_FONTS="$default_fonts"
+       AC_DEFINE_UNQUOTED(FC_DEFAULT_FONTS, "$default_fonts",
+                          [System font directory])
+       ;;
+esac
+
+AC_SUBST(FC_DEFAULT_FONTS)
+
+#
+# Add more fonts if available.  By default, add only the directories
+# with outline fonts; those with bitmaps can be added as desired in
+# local.conf or ~/.fonts.conf
+#
+AC_ARG_WITH(add-fonts,        [  --with-add-fonts=DIR1,DIR2,...Find additional fonts in DIR1,DIR2,... ], add_fonts="$withval", add_fonts=yes)
+
+case "$add_fonts" in
+yes)
+       FC_ADD_FONTS=""
+       for dir in /usr/X11R6/lib/X11 /usr/X11/lib/X11 /usr/lib/X11; do
+               case x"$FC_ADD_FONTS" in
+               x)
+                       sub="$dir/fonts"
+                       if test -d "$sub"; then
+                               case x$FC_ADD_FONTS in
+                               x)
+                                       FC_ADD_FONTS="$sub"
+                                       ;;
+                               *)
+                                       FC_ADD_FONTS="$FC_ADD_FONTS,$sub"
+                                       ;;
+                               esac
+                       fi
                        ;;
                esac
-               ;;
-       esac
+       done
+       AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
+       ;;
+no)
+       FC_ADD_FONTS=""
+       ;;
+*)
+       FC_ADD_FONTS="$add_fonts"
+       AC_DEFINE_UNQUOTED(FC_ADD_FONTS,"$add_fonts",[Additional font directories])
        ;;
 esac
-       
-#AH_TEMPLATE([HAVE_EXPAT],[Use expat library for xml parsing])
-#AH_TEMPLATE([HAVE_XML2],[Use libxml2 library for xml parsing])
 
-case "$expat""$xml2" in
-nono)
-       AC_MSG_ERROR([cannot find either libxml2 or expat])
+AC_SUBST(FC_ADD_FONTS)
+
+FC_FONTPATH=""
+
+case "$FC_ADD_FONTS" in
+"")
+       ;;
+*)
+       FC_FONTPATH=`echo $FC_ADD_FONTS | 
+                       sed -e 's/^/<dir>/' -e 's/$/<\/dir>/' -e 's/,/<\/dir> <dir>/g'`
+       ;;
+esac
+
+AC_SUBST(FC_FONTPATH)
+
+#
+# Set default cache directory path
+#
+AC_ARG_WITH(cache-dir,         [ --with-cache-dir=DIR           Use DIR to store cache files (default /var/cache/fontconfig)], fc_cachedir="$withval", fc_cachedir=yes)
+
+case $fc_cachedir in
+no|yes)
+       fc_cachedir=`eval echo "${localstatedir}/cache/"${PACKAGE}`
+       ;;
+*)
        ;;
 esac
+AC_SUBST(fc_cachedir)
+FC_CACHEDIR=${fc_cachedir}
+AC_SUBST(FC_CACHEDIR)
+
+FC_FONTDATE=`LC_ALL=C date`
+
+AC_SUBST(FC_FONTDATE)
+
+AC_ARG_WITH(confdir,           [  --with-confdir=DIR            Use DIR to store configuration files (default /etc/fonts)], confdir="$withval", confdir=yes)
+
+#
+# Set CONFDIR and FONTCONFIG_PATH
+#
+
+case "$confdir" in
+no|yes)
+       confdir='${sysconfdir}'/fonts
+       ;;
+*)
+       ;;
+esac
+AC_SUBST(confdir)
+CONFDIR=${confdir}
+AC_DEFINE_UNQUOTED(CONFDIR, "$CONFDIR",[Font configuration directory])
+AC_SUBST(CONFDIR)
+
+#
+# Find out what language orthographies are included
+#
+
+ORTH_FILES=`cd ${srcdir}/fc-lang && echo *.orth`
+AC_SUBST(ORTH_FILES)
+
+#
+# Let people not build/install docs if they don't have docbook
+#
+
+AC_CHECK_PROG(HASDOCBOOK, docbook2html, yes, no)
+
+AM_CONDITIONAL(USEDOCBOOK, test "x$HASDOCBOOK" = xyes)
+
+default_docs="yes"
+#
+# Check if docs exist or can be created
+#
+if test x$HASDOCBOOK = xno; then
+       if test -f doc/fonts-conf.5; then
+               :
+       else
+               default_docs="no"
+       fi
+fi
+
+AC_ARG_ENABLE(docs,           [  --disable-docs                Don't build and install documentation],,enable_docs=$default_docs)
+
+AM_CONDITIONAL(ENABLE_DOCS, test "x$enable_docs" = xyes)
+
+if test "x$enable_docs" = xyes; then
+       DOCSRC="doc"
+       tmp=funcs.$$
+       cat $srcdir/doc/*.fncs | awk '
+       /^@TITLE@/      { if (!done) { printf ("%s\n", $2); done = 1; } }
+       /^@FUNC@/       { if (!done) { printf ("%s\n", $2); done = 1; } }
+       /^@@/           { done = 0; }' > $tmp
+       DOCMAN3=`cat $tmp | awk '{ printf ("%s.3 ", $1); }'`
+       echo DOCMAN3 $DOCMAN3
+       rm -f $tmp
+else
+       DOCSRC=""
+       DOCMAN3=""
+fi
+
+AC_SUBST(DOCSRC)
+AC_SUBST(DOCMAN3)
+
+#
+# Figure out where to install documentation
+#
+
+AC_ARG_WITH(docdir,           [  --with-docdir=DIR             Use DIR to store documentation files (default ${datadir}/doc/fontconfig)], confdir="$withval")
+
+if test "x$with_docdir" = "x" ; then
+  DOCDIR='${datadir}/doc/fontconfig'
+else
+  DOCDIR=$with_docdir
+fi
+
+AC_SUBST(DOCDIR)
+
 
-#AC_CONFIG_FILES([Makefile
-#                 fc-cache/Makefile
-#                 fc-list/Makefile
-#                 fontconfig/Makefile
-#                 src/Makefile])
-#AC_CONFIG_FILES([Makefile
-#               config/Makedefs
-#               src/Makefile
-#               fc-cache/Makefile
-#               fc-list/Makefile])
-AC_OUTPUT([Makefile
-         config/Makedefs
-         src/Makefile
-         fc-cache/Makefile
-         fc-list/Makefile])
-#AC_OUTPUT
+AC_OUTPUT([
+Makefile 
+fontconfig/Makefile
+fc-lang/Makefile
+fc-glyphname/Makefile
+fc-case/Makefile
+fc-arch/Makefile
+src/Makefile
+src/fontconfig.def
+conf.d/Makefile
+fc-cache/Makefile
+fc-cat/Makefile
+fc-list/Makefile
+fc-match/Makefile
+doc/Makefile
+doc/version.sgml
+test/Makefile
+fontconfig.spec
+fontconfig.pc
+fonts.conf
+fontconfig-zip
+])