dnl Process this file with autoconf to create configure.
AC_PREREQ(2.56)

dnl ==========================================================================
dnl                               Versioning              
dnl ==========================================================================

dnl The triplet
m4_define([pango_version_major], [1])
m4_define([pango_version_minor], [28])
m4_define([pango_version_micro], [0])
dnl Module API version.  This should be stepped up when a change causes
dnl older modules to not work with new pango.
m4_define([pango_module_version], [1.6.0])


m4_define([pango_version],
          [pango_version_major.pango_version_minor.pango_version_micro])
dnl The X.Y in -lpango-X.Y line. This is expected to stay 1.0 until Pango 2.
m4_define([pango_api_version], [1.0])
m4_if(m4_eval(pango_version_minor % 2), [1],
      [
	dnl for unstable releases
	m4_define([pango_interface_age], [0])
      ],
      [
	dnl for stable releases
	m4_define([pango_interface_age], pango_version_micro)
      ])
dnl Number of releases since we've broken binary compatibility.
m4_define([pango_binary_age],
          [m4_eval(100 * pango_version_minor + pango_version_micro)])


AC_INIT(pango, pango_version(),
        [http://bugzilla.gnome.org/enter_bug.cgi?product=pango])

AC_CONFIG_SRCDIR([pango.pc.in])

dnl -Wno-portability tells automake to stop complaining about the
dnl usage of GNU Make specific features.
AM_INIT_AUTOMAKE(1.9 gnits dist-bzip2 no-dist-gzip -Wno-portability)
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
AM_CONFIG_HEADER([config.h])


PANGO_VERSION_MAJOR=pango_version_major()
PANGO_VERSION_MINOR=pango_version_minor()
PANGO_VERSION_MICRO=pango_version_micro()
PANGO_VERSION=pango_version()
PANGO_API_VERSION=pango_api_version()
PANGO_INTERFACE_AGE=pango_interface_age()
PANGO_BINARY_AGE=pango_binary_age()
PANGO_MODULE_VERSION=pango_module_version()

AC_SUBST(PANGO_VERSION_MAJOR)
AC_SUBST(PANGO_VERSION_MINOR)
AC_SUBST(PANGO_VERSION_MICRO)
AC_SUBST(PANGO_VERSION)
AC_SUBST(PANGO_API_VERSION)
AC_SUBST(PANGO_INTERFACE_AGE)
AC_SUBST(PANGO_BINARY_AGE)
AC_SUBST(PANGO_MODULE_VERSION)

AC_DEFINE(MODULE_VERSION, "pango_module_version()", [Module interface version])
AC_DEFINE(PANGO_BINARY_AGE, pango_binary_age(), [PANGO binary age])
AC_DEFINE(PANGO_INTERFACE_AGE, pango_interface_age(), [PANGO interface age])
AC_DEFINE(PANGO_VERSION_MAJOR, pango_version_major(), [PANGO major version])
AC_DEFINE(PANGO_VERSION_MINOR, pango_version_minor(), [PANGO minor version])
AC_DEFINE(PANGO_VERSION_MICRO, pango_version_micro(), [PANGO micro version])

dnl libtool versioning
m4_define([lt_current], [m4_eval(100 * pango_version_minor + pango_version_micro - pango_interface_age)])
m4_define([lt_revision], [pango_interface_age])
m4_define([lt_age], [m4_eval(pango_binary_age - pango_interface_age)])
VERSION_INFO="lt_current():lt_revision():lt_age()"
PANGO_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)

AC_SUBST(PANGO_CURRENT_MINUS_AGE)

dnl ==========================================================================

AC_CANONICAL_HOST

AC_MSG_CHECKING([for native Win32])
case "$host" in
  *-*-mingw*)
    pango_os_win32=yes
    case "$host" in
      x86_64-*-*)
	LIB_EXE_MACHINE_FLAG=X64
	;;
      *)
	LIB_EXE_MACHINE_FLAG=X86
	;;
    esac
    ;;
  *)
    pango_os_win32=no
    ;;
esac
AC_MSG_RESULT([$pango_os_win32])

AC_SUBST(LIB_EXE_MACHINE_FLAG)

AM_CONDITIONAL(OS_WIN32, test "$pango_os_win32" = "yes")

AC_PROG_CC

dnl
dnl Check for a working C++ compiler, but do not bail out, if none is found.
dnl We use this for an automated test for C++ header correctness.
dnl
AC_CHECK_PROGS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
AC_LANG_RESTORE

#
# Checks for HarfBuzz
#

AC_PROG_CXX
AC_CHECK_FUNCS(mprotect sysconf getpagesize)
AC_CHECK_HEADERS(unistd.h sys/mman.h)

# Make sure we don't link to libstdc++ (needs de-gcc-fication)
CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions"


#
# Win32 stuff
#

AC_LIBTOOL_WIN32_DLL
AM_DISABLE_STATIC

if test "$pango_os_win32" = "yes"; then
  if test x$enable_static = xyes -o x$enable_static = x; then
    AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
    enable_static=no
  fi
  if test x$enable_shared = xno; then
    AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
  fi
  enable_shared=yes
fi

AM_PROG_LIBTOOL
dnl when using libtool 2.x create libtool early, because it's used in configure
m4_ifdef([LT_OUTPUT], [LT_OUTPUT])

AC_MSG_CHECKING([for some Win32 platform])
case "$host" in
  *-*-mingw*|*-*-cygwin*)
    pango_platform_win32=yes
    ;;
  *)
    pango_platform_win32=no
    ;;
esac
AC_MSG_RESULT([$pango_platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$pango_platform_win32" = "yes")

if test "$pango_platform_win32" = "yes"; then
  AC_CHECK_TOOL(WINDRES, windres, no)
  if test "$WINDRES" = no; then
    AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
  fi
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

changequote(,)dnl
if test "x$GCC" = "xyes"; then
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
fi
changequote([,])dnl

dnl declare --enable-* args and collect ac_help strings

m4_define([debug_default],
          m4_if(m4_eval(pango_version_minor() % 2), [1], [yes], [minimum]))

AC_ARG_ENABLE(debug,
              AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                             [turn on debugging @<:@default=debug_default()@:>@]),
	      ,
              enable_debug=debug_default())

if test "x$enable_debug" = "xyes"; then
  PANGO_DEBUG_FLAGS="-DPANGO_ENABLE_DEBUG"
else
  PANGO_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"

  if test "x$enable_debug" = "xno"; then
    PANGO_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS $PANGO_DEBUG_FLAGS"
  fi
fi

AC_SUBST(PANGO_DEBUG_FLAGS)

AC_ARG_ENABLE(rebuilds,
              [AC_HELP_STRING([--disable-rebuilds],
                              [disable all source autogeneration rules])],,
              [enable_rebuilds=yes])

AM_CONDITIONAL(CROSS_COMPILING, [test $cross_compiling = yes])

have_x=false
if test "x$pango_os_win32" != xyes; then
  AC_PATH_XTRA

  if test x$no_x = xyes ; then
    AC_MSG_WARN([X development libraries not found])
    have_x=false
  else
    X_LIBS="$X_LIBS -lX11"
    have_x=true
    AC_DEFINE(HAVE_X, 1, [Have X libraries])
  fi
fi
AM_CONDITIONAL(HAVE_X, $have_x) 

have_fontconfig=false
have_freetype=false
have_xft=false

#
# Check for fontconfig
#
PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.5.0, have_fontconfig=true, AC_MSG_RESULT([no]))

#
# Checks for FreeType
#
if $have_fontconfig ; then
  # The first version of freetype with a .pc file is 2.1.5.  That's recent
  # enough for all the functions we use I guess.  No version check needed.
  PKG_CHECK_MODULES(FREETYPE, freetype2, have_freetype=true, AC_MSG_RESULT([no]))
fi
if $have_freetype ; then
  AC_DEFINE(HAVE_FREETYPE, 1, [Have FreeType 2 library])
  # By freetype, we really always mean freetype+fontconfig
  FREETYPE_CFLAGS="$FREETYPE_CFLAGS $FONTCONFIG_CFLAGS"
  FREETYPE_LIBS="$FREETYPE_LIBS $FONTCONFIG_LIBS"
fi
AM_CONDITIONAL(HAVE_FREETYPE, $have_freetype)

#
# Checks for Xft/XRender
#
if $have_x && $have_freetype ; then
  PKG_CHECK_MODULES(XFT, xft >= 2.0.0 xrender, have_xft=true, AC_MSG_RESULT([no]))
fi
if $have_xft ; then
  AC_DEFINE(HAVE_XFT, 1, [Have Xft library])
fi
AM_CONDITIONAL(HAVE_XFT, $have_xft)

#
# Checks for Win32 GDI
#
have_win32=false
WIN32_LIBS=""
WIN32_CFLAGS=""
# The following doesn't work with autoconf-2.13, so we check $host instead
# AC_CHECK_LIB(gdi32, GetTextMetricsA@8, have_win32=true, : )
case "$host" in
  *-*-mingw*|*-*-cygwin*) have_win32=true ;;
esac


if test $have_win32 = true; then
  WIN32_LIBS="-lgdi32"
fi

AC_SUBST(WIN32_LIBS)
AM_CONDITIONAL(HAVE_WIN32, $have_win32) 

# Ensure MSVC-compatible struct packing convention is used when
# compiling for Win32 with gcc.
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
# gcc2 uses "-fnative-struct".
if test "$pango_os_win32" = "yes"; then
  if test x"$GCC" = xyes; then
    msnative_struct=''
    AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
    if test -z "$ac_cv_prog_CC"; then
      our_gcc="$CC"
    else
      our_gcc="$ac_cv_prog_CC"
    fi
    case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
      2.)
	if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
	  msnative_struct='-fnative-struct'
	fi
	;;
      *)
	if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
	  msnative_struct='-mms-bitfields'
	fi
	;;
    esac
    if test x"$msnative_struct" = x ; then
      AC_MSG_RESULT([no way])
      AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
    else
      CFLAGS="$CFLAGS $msnative_struct"
      AC_MSG_RESULT([${msnative_struct}])
    fi
  fi
fi

#
# Checks for ATSUI
#
AC_CHECK_HEADER(Carbon/Carbon.h, [have_atsui=true], [have_atsui=false])

#
# Checks for Cairo
#
have_cairo=false
have_cairo_png=false
have_cairo_ps=false
have_cairo_pdf=false
have_cairo_xlib=false
have_cairo_freetype=false
have_cairo_win32=false
have_cairo_atsui=false
cairo_required=1.7.6

PKG_CHECK_MODULES(CAIRO, cairo >= $cairo_required, have_cairo=true, AC_MSG_RESULT([no]))
   
if $have_cairo ; then
  pango_save_libs=$LIBS
  LIBS="$LIBS $CAIRO_LIBS"
  pango_save_ldflags=$LDFLAGS
  LDFLAGS="$LDFLAGS $CAIRO_LIBS"

  have_cairo=false
  cairo_font_backends=""

  if $have_freetype; then
    PKG_CHECK_EXISTS(cairo-ft >= $cairo_required, have_cairo_freetype=true, :)
  fi
  if $have_cairo_freetype; then
    AC_DEFINE(HAVE_CAIRO_FREETYPE, 1, [Whether Cairo can use FreeType for fonts])
    cairo_font_backends="freetype $cairo_font_backends"
    have_cairo=true
  fi

  if $have_win32; then
    PKG_CHECK_EXISTS(cairo-win32 >= $cairo_required, have_cairo_win32=true, :)
  fi
  if $have_cairo_win32; then
    AC_DEFINE(HAVE_CAIRO_WIN32, 1, [Whether Cairo can use the Win32 GDI for fonts])
    cairo_font_backends="win32 $cairo_font_backends"
    have_cairo=true
  fi

  if $have_atsui; then
    PKG_CHECK_EXISTS(cairo-quartz-font >= $cairo_required, have_cairo_atsui=true, :)
  fi
  if $have_cairo_atsui; then
    AC_DEFINE(HAVE_CAIRO_ATSUI, 1, [Whether Cairo can use ATSUI for fonts])
    cairo_font_backends="quartz $cairo_font_backends"
    have_cairo=true
  fi

  AC_MSG_CHECKING([which cairo font backends could be used])
  if $have_cairo ; then
    AC_MSG_RESULT([$cairo_font_backends])
  else
    AC_MSG_RESULT([none])
    AC_MSG_NOTICE([Disabling cairo support])
  fi

  if $have_cairo ; then
    AC_DEFINE(HAVE_CAIRO, 1, [Have usable Cairo library and font backend])

    PKG_CHECK_EXISTS(cairo-png >= $cairo_required, have_cairo_png=true, :)
    if $have_cairo_png; then
      AC_DEFINE(HAVE_CAIRO_PNG, 1, [Whether Cairo has PNG support])
    fi
  
    PKG_CHECK_EXISTS(cairo-ps >= $cairo_required, have_cairo_ps=true, :)
    if $have_cairo_ps; then
      AC_DEFINE(HAVE_CAIRO_PS, 1, [Whether Cairo has PS support])
    fi
  
    PKG_CHECK_EXISTS(cairo-pdf >= $cairo_required, have_cairo_pdf=true, :)
    if $have_cairo_pdf; then
      AC_DEFINE(HAVE_CAIRO_PDF, 1, [Whether Cairo has PDF support])
    fi
  
    PKG_CHECK_EXISTS(cairo-xlib >= $cairo_required, have_cairo_xlib=true, :)
    if $have_cairo_xlib; then
      AC_DEFINE(HAVE_CAIRO_XLIB, 1, [Whether Cairo has Xlib support])
    fi
  fi

  LIBS=$pango_save_libs
  LDFLAGS=$pango_save_ldflags
fi

AM_CONDITIONAL(HAVE_CAIRO, $have_cairo)
AM_CONDITIONAL(HAVE_CAIRO_PNG, $have_cairo_png)
AM_CONDITIONAL(HAVE_CAIRO_PS, $have_cairo_ps)
AM_CONDITIONAL(HAVE_CAIRO_PDF, $have_cairo_pdf)
AM_CONDITIONAL(HAVE_CAIRO_XLIB, $have_cairo_xlib)
AM_CONDITIONAL(HAVE_CAIRO_WIN32, $have_cairo_win32)
AM_CONDITIONAL(HAVE_CAIRO_FREETYPE, $have_cairo_freetype)
AM_CONDITIONAL(HAVE_CAIRO_ATSUI, $have_cairo_atsui)

#
# We must have some backend defined, in order for the pango-querymodules
# rule in pango/Makefile.am to work correctly. If you are up to writing
# a new Pango backend outside of Pango, you are up to sending the necessary
# patch to fix that rule. :-)
#
if $have_freetype || $have_x || $have_xft || $have_cairo || $have_win32 ; then : ; else
  AC_MSG_ERROR([*** Could not enable any of FreeType, X11, Cairo, or Win32 backends.
*** Must have at least one backend to build Pango.])
fi

#
# Checks for GLib
#
GLIB_REQUIRED_VERSION=2.17.3
GLIB_MODULES="glib-2.0 >= $GLIB_REQUIRED_VERSION gobject-2.0 gmodule-no-export-2.0"

PKG_CHECK_MODULES(GLIB, $GLIB_MODULES, :,
  AC_MSG_ERROR([
*** Glib $GLIB_REQUIRED_VERSION or better is required. The latest version of 
*** Glib is always available from ftp://ftp.gtk.org/.]))

# Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled.
GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
AC_SUBST(GLIB_MKENUMS)


# Add in gthread-2.0 to CFLAGS but not to LIBS so we get any
# necesary defines for thread-safety.
GLIB_CFLAGS=`$PKG_CONFIG --cflags $GLIB_MODULES gthread-2.0`

# See if it's safe to turn G_DISABLE_DEPRECATED on.
GLIB_VERSION_MAJOR_MINOR=`$PKG_CONFIG --modversion glib-2.0 | sed "s/\.@<:@^.@:>@*\$//"`
GLIB_REQUIRED_VERSION_MAJOR_MINOR=`echo $GLIB_REQUIRED_VERSION | sed "s/\.@<:@^.@:>@*\$//"`
if test "x$GLIB_VERSION_MAJOR_MINOR" = "x$GLIB_REQUIRED_VERSION_MAJOR_MINOR"; then
  GLIB_CFLAGS="-DG_DISABLE_DEPRECATED $GLIB_CFLAGS"
fi

#
# Checks for LibThai
#
have_libthai=false
LIBTHAI_REQUIRED_VERSION=0.1.9
PKG_CHECK_MODULES(LIBTHAI, libthai >= $LIBTHAI_REQUIRED_VERSION, have_libthai=true, AC_MSG_RESULT([no]))

#
# Checks for GObject Introspection
#

GOBJECT_INTROSPECTION_CHECK([0.6.7])

#
# Modules to build
#
arabic_modules="arabic-fc,arabic-lang"
basic_modules="basic-fc,basic-win32,basic-x,basic-atsui"
hangul_modules="hangul-fc"
hebrew_modules="hebrew-fc"
indic_modules="indic-fc,indic-lang"
khmer_modules="khmer-fc"
syriac_modules="syriac-fc"
thai_modules="thai-fc"
tibetan_modules="tibetan-fc"

if $have_libthai ; then
  thai_modules="$thai_modules,thai-lang"
fi

all_modules="$arabic_modules,$basic_modules,$hangul_modules,$hebrew_modules,$indic_modules,$khmer_modules,$syriac_modules,$thai_modules,$tibetan_modules"

#
# Allow building some or all modules included
#
AC_MSG_CHECKING(modules to link statically)

AC_ARG_WITH(included_modules,
   AC_HELP_STRING([--with-included-modules=no/yes/MODULE1 MODULE2 ...],
                  [build the given modules included @<:@default=no@:>@]))

included_modules=""
case x$with_included_modules in
	xyes)	included_modules=$all_modules ;;
	xno|x)	included_modules="" ;;
	*)	included_modules=$with_included_modules ;;
esac
AC_MSG_RESULT($included_modules)
AM_CONDITIONAL(HAVE_INCLUDED_MODULES, test "x$included_modules" != x)

#
# Allow building only some or none of modules dynamic
#
AC_MSG_CHECKING(dynamic modules to build)

AC_ARG_WITH(dynamic_modules,
   AC_HELP_STRING([--with-dynamic-modules=no/yes/MODULE1 MODULE2 ...],
                  [build the given dynamic modules @<:@default=yes@:>@]))

dynamic_modules=""
case x$with_dynamic_modules in
	xyes|x)	dynamic_modules=$all_modules ;;
	xno)	dynamic_modules="" ;;
	*)	dynamic_modules=$with_dynamic_modules ;;
esac
AC_MSG_RESULT([$dynamic_modules (those built into Pango will be excluded)])
AM_CONDITIONAL(HAVE_DYNAMIC_MODULES, test "x$dynamic_modules" != x)


INCLUDED_X_MODULES=
INCLUDED_FC_MODULES=
INCLUDED_WIN32_MODULES=
INCLUDED_ATSUI_MODULES=
INCLUDED_LANG_MODULES=

AC_SUBST(INCLUDED_X_MODULES)
AC_SUBST(INCLUDED_FC_MODULES)
AC_SUBST(INCLUDED_WIN32_MODULES)
AC_SUBST(INCLUDED_ATSUI_MODULES)
AC_SUBST(INCLUDED_LANG_MODULES)

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=", "
for module in $included_modules; do
  case $indic_modules in
    *$module*)	dir=indic ;;
    *)		dir=`echo $module | sed "s/-.*//"` ;;
  esac
  included_path="\$(top_builddir)/modules/$dir/libpango-$module.la"

  case $module in
    *-x)	INCLUDED_X_MODULES="$INCLUDED_X_MODULES $included_path" ;;
    *-fc)	INCLUDED_FC_MODULES="$INCLUDED_FC_MODULES $included_path" ;;
    *-win32)	INCLUDED_WIN32_MODULES="$INCLUDED_WIN32_MODULES $included_path" ;;
    *-atsui)	INCLUDED_ATSUI_MODULES="$INCLUDED_ATSUI_MODULES $included_path" ;;
    *-lang)	INCLUDED_LANG_MODULES="$INCLUDED_LANG_MODULES $included_path" ;;
    *)		AC_MSG_ERROR([specified module $module not recognized]) ;;
  esac
done
IFS="$pango_save_ifs"

AM_CONDITIONAL(INCLUDE_ARABIC_FC,	echo $included_modules | egrep '(^|,)arabic-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_ARABIC_LANG,	echo $included_modules | egrep '(^|,)arabic-lang($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_BASIC_FC,	echo $included_modules | egrep '(^|,)basic-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_BASIC_WIN32,	echo $included_modules | egrep '(^|,)basic-win32($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_BASIC_X,		echo $included_modules | egrep '(^|,)basic-x($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_BASIC_ATSUI,	echo $included_modules | egrep '(^|,)basic-atsui($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_HANGUL_FC,	echo $included_modules | egrep '(^|,)hangul-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_HEBREW_FC,	echo $included_modules | egrep '(^|,)hebrew-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_INDIC_FC,	echo $included_modules | egrep '(^|,)indic-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_INDIC_LANG,	echo $included_modules | egrep '(^|,)indic-lang($|,)'	> /dev/null)
AM_CONDITIONAL(INCLUDE_KHMER_FC,	echo $included_modules | egrep '(^|,)khmer-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_SYRIAC_FC,	echo $included_modules | egrep '(^|,)syriac-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_THAI_FC,		echo $included_modules | egrep '(^|,)thai-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_THAI_LANG,	echo $included_modules | egrep '(^|,)thai-lang($|,)' 	> /dev/null)
AM_CONDITIONAL(INCLUDE_TIBETAN_FC,	echo $included_modules | egrep '(^|,)tibetan-fc($|,)' 	> /dev/null)

AM_CONDITIONAL(DYNAMIC_ARABIC_FC,	echo $dynamic_modules | egrep '(^|,)arabic-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_ARABIC_LANG,	echo $dynamic_modules | egrep '(^|,)arabic-lang($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_BASIC_FC,	echo $dynamic_modules | egrep '(^|,)basic-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_BASIC_WIN32,	echo $dynamic_modules | egrep '(^|,)basic-win32($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_BASIC_X,		echo $dynamic_modules | egrep '(^|,)basic-x($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_BASIC_ATSUI,	echo $dynamic_modules | egrep '(^|,)basic-atsui($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_HANGUL_FC,	echo $dynamic_modules | egrep '(^|,)hangul-fc($|,)'	> /dev/null)
AM_CONDITIONAL(DYNAMIC_HEBREW_FC,	echo $dynamic_modules | egrep '(^|,)hebrew-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_INDIC_FC,	echo $dynamic_modules | egrep '(^|,)indic-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_INDIC_LANG,	echo $dynamic_modules | egrep '(^|,)indic-lang($|,)'	> /dev/null)
AM_CONDITIONAL(DYNAMIC_KHMER_FC,	echo $dynamic_modules | egrep '(^|,)khmer-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_SYRIAC_FC,	echo $dynamic_modules | egrep '(^|,)syriac-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_THAI_FC,		echo $dynamic_modules | egrep '(^|,)thai-fc($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_THAI_LANG,	echo $dynamic_modules | egrep '(^|,)thai-lang($|,)' 	> /dev/null)
AM_CONDITIONAL(DYNAMIC_TIBETAN_FC,	echo $dynamic_modules | egrep '(^|,)tibetan-fc($|,)' 	> /dev/null)

#
# We use flockfile to implement pango_getline() - should be moved to GLib
# strtok_r isn't present on some systems
#
AC_CHECK_FUNCS(flockfile strtok_r)

dnl **************************
dnl *** Checks for gtk-doc ***
dnl **************************

if $have_cairo ; then : ; else
   if  test x$enable_gtk_doc = xyes ; then
      AC_MSG_WARN([Cairo not present, disabling doc building])      
      enable_gtk_doc=no
   fi
fi

GTK_DOC_CHECK([1.0])

AC_ARG_ENABLE(man,
              AC_HELP_STRING([--enable-man],
                             [regenerate man pages from Docbook @<:@default=no@:>@]),
	      enable_man=yes,
              enable_man=no)

if test "x$enable_man" != xno ; then
  dnl
  dnl Check for xsltproc
  dnl
  AC_PATH_PROG([XSLTPROC], [xsltproc])
  if test -z "$XSLTPROC"; then
    enable_man=no
  fi
fi

if test "x$enable_man" != xno ; then
  dnl check for DocBook DTD and stylesheets in the local catalog.
  JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
     [DocBook XML DTD V4.1.2],,enable_man=no)
  JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
     [DocBook XSL Stylesheets],,enable_man=no)
fi

AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)

AC_ARG_ENABLE(doc-cross-references,
              AC_HELP_STRING([--disable-doc-cross-references],
                             [cross reference glib and cairo symbols @<:@default=yes@:>@]),
	      enable_doc_cross_references=$enableval,
	      enable_doc_cross_references=yes)

if test "x$enable_doc_cross_references" != xno ; then
	GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
	CAIRO_PREFIX="`pkg-config --variable=prefix cairo`"
	AC_SUBST(GLIB_PREFIX)
	AC_SUBST(CAIRO_PREFIX)
fi
AM_CONDITIONAL(ENABLE_DOC_CROSS_REFERENCES, test x$enable_doc_cross_references != xno)

dnl ********************************************************
dnl * Options to pass to libtool
dnl ********************************************************

# Note that -module isn't included here since automake needs to see it to know
# that something like pango-arabic-fc.la is a valid libtool archive
#
LIBRARY_LIBTOOL_OPTIONS="-version-info $VERSION_INFO"
MODULE_LIBTOOL_OPTIONS="-export-dynamic -avoid-version"
if test "$pango_platform_win32" = yes; then
    # We currently use .def files on Windows
    true
    LIBRARY_LIBTOOL_OPTIONS="$LIBRARY_LIBTOOL_OPTIONS -no-undefined"
    MODULE_LIBTOOL_OPTIONS="$MODULE_LIBTOOL_OPTIONS -no-undefined"
else
    # libtool option to control which symbols are exported
    # right now, symbols starting with '_' are not exported
    LIBRARY_LIBTOOL_OPTIONS="$LIBRARY_LIBTOOL_OPTIONS "'-export-symbols-regex "^pango_.*"'
    MODULE_LIBTOOL_OPTIONS="$MODULE_LIBTOOL_OPTIONS "'-export-symbols-regex "^script_engine_.*"'
fi
AC_SUBST(LIBRARY_LIBTOOL_OPTIONS)
AC_SUBST(MODULE_LIBTOOL_OPTIONS)

dnl ********************************************************
dnl * See whether we need to load our modules as .la files *
dnl ********************************************************

use_la_modules=false

# is there any platform that we have to use .la files?

if $use_la_modules ; then
   AC_DEFINE(USE_LA_MODULES, 1, [Whether to load modules via .la files rather than directly])
fi

dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

AC_ARG_ENABLE(explicit-deps, 
              AC_HELP_STRING([--enable-explicit-deps=@<:@no/auto/yes@:>@],
                             [use explicit dependencies in .pc files @<:@default=auto@:>@]),
              enable_explicit_deps="$enableval", 
              enable_explicit_deps=auto)

AC_MSG_CHECKING([Whether to write dependencies into .pc files])
case $enable_explicit_deps in
  auto)
    export SED
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
    if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
      enable_explicit_deps=yes  
    else
      enable_explicit_deps=no  
    fi
  ;;
  yes|no) 
  ;;
  *) AC_MSG_ERROR([Value given to --enable-explicit-deps must be one of yes, no or auto])
  ;;
esac
AC_MSG_RESULT($enable_explicit_deps)

PKGCONFIG_MATH_LIBS=
PKGCONFIG_CAIRO_REQUIRES=

if test $enable_explicit_deps = yes ; then
  PKGCONFIG_MATH_LIBS=-lm

  X_LIBS="$X_LIBS $X_EXTRA_LIBS"

  if $have_cairo_freetype;  then
    PKGCONFIG_CAIRO_REQUIRES="$PKGCONFIG_CAIRO_REQUIRES pangoft2"
  fi
  if $have_cairo_win32;  then
    PKGCONFIG_CAIRO_REQUIRES="$PKGCONFIG_CAIRO_REQUIRES pangowin32"
  fi
fi

AC_SUBST(PKGCONFIG_MATH_LIBS)
AC_SUBST(PKGCONFIG_CAIRO_REQUIRES)
AM_CONDITIONAL(DISABLE_EXPLICIT_DEPS, test $enable_explicit_deps = no)

AC_CONFIG_COMMANDS([pango/module-defs.h],
[
cat > pango/module-defs.h <<EOTEXT
/* Autogenerated by configure. Do not edit */

#include "modules.h"

EOTEXT

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=","
for module in $included_modules; do
  module_c=`echo $module | sed s/-/_/`
  cat >> pango/module-defs.h <<EOTEXT
extern void         _pango_${module_c}_script_engine_list (PangoEngineInfo **engines, int *n_engines);
extern PangoEngine *_pango_${module_c}_script_engine_init (GTypeModule *module);
extern void         _pango_${module_c}_script_engine_exit (void);
extern void         _pango_${module_c}_script_engine_create (const char *id);

EOTEXT
done 

IFS="$pango_save_ifs"
],[
included_modules=$included_modules
])

AC_CONFIG_COMMANDS([pango/module-defs-x.c],
[
### X modules
cat > pango/module-defs-x.c <<EOTEXT
/* Autogenerated by configure. Do not edit */

#include "module-defs.h"

PangoIncludedModule _pango_included_x_modules@<:@@:>@ = {
EOTEXT

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=","
for module in $included_modules; do
  if echo $module | egrep -- "-x($|,)" > /dev/null; then  
    module_c=`echo $module | sed s/-/_/`
    cat >> pango/module-defs-x.c <<EOTEXT
 { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create },
EOTEXT
 fi
done

IFS="$pango_save_ifs"

cat >> pango/module-defs-x.c <<EOTEXT
 { NULL, NULL, NULL, NULL },
};
EOTEXT
])

AC_CONFIG_COMMANDS([pango/module-defs-fc.c],
[
### FC modules
cat > pango/module-defs-fc.c <<EOTEXT
/* Autogenerated by configure. Do not edit */

#include "module-defs.h"

PangoIncludedModule _pango_included_fc_modules@<:@@:>@ = {
EOTEXT

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=","
for module in $included_modules; do
  if echo $module | egrep -- "-fc($|,)" > /dev/null; then
    module_c=`echo $module | sed s/-/_/`
    cat >> pango/module-defs-fc.c <<EOTEXT
 { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create },
EOTEXT
  fi
done

IFS="$pango_save_ifs"

cat >> pango/module-defs-fc.c <<EOTEXT
 { NULL, NULL, NULL, NULL },
};
EOTEXT
])

AC_CONFIG_COMMANDS([pango/module-defs-win32.c],
[
### Win32 modules
cat > pango/module-defs-win32.c <<EOTEXT
/* Autogenerated by configure. Do not edit */

#include "module-defs.h"

PangoIncludedModule _pango_included_win32_modules@<:@@:>@ = {
EOTEXT

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=","
for module in $included_modules; do
  if echo $module | egrep -- "-win32($|,)" > /dev/null; then
    module_c=`echo $module | sed s/-/_/`
    cat >> pango/module-defs-win32.c <<EOTEXT
 { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create },
EOTEXT
  fi
done

IFS="$pango_save_ifs"

cat >> pango/module-defs-win32.c <<EOTEXT
 { NULL, NULL, NULL, NULL },
};
EOTEXT
])

AC_CONFIG_COMMANDS([pango/module-defs-atsui.c],
[
### ATSUI modules
cat > pango/module-defs-atsui.c <<EOTEXT
/* Autogenerated by configure. Do not edit */

#include "module-defs.h"

PangoIncludedModule _pango_included_atsui_modules@<:@@:>@ = {
EOTEXT

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=","
for module in $included_modules; do
  if echo $module | egrep -- "-atsui($|,)" > /dev/null; then
    module_c=`echo $module | sed s/-/_/`
    cat >> pango/module-defs-atsui.c <<EOTEXT
 { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create },
EOTEXT
  fi
done

IFS="$pango_save_ifs"

cat >> pango/module-defs-atsui.c <<EOTEXT
 { NULL, NULL, NULL, NULL },
};
EOTEXT
])

AC_CONFIG_COMMANDS([pango/module-defs-lang.c],
[
### lang modules
cat > pango/module-defs-lang.c <<EOTEXT
/* Autogenerated by configure. Do not edit */

#include "module-defs.h"

PangoIncludedModule _pango_included_lang_modules@<:@@:>@ = {
EOTEXT

IFS="${IFS= 	}"; pango_save_ifs="$IFS"; IFS=","
for module in $included_modules; do
  if echo $module | egrep -- "-lang($|,)" > /dev/null; then
    module_c=`echo $module | sed s/-/_/`
    cat >> pango/module-defs-lang.c <<EOTEXT
 { _pango_${module_c}_script_engine_list, _pango_${module_c}_script_engine_init, _pango_${module_c}_script_engine_exit, _pango_${module_c}_script_engine_create },
EOTEXT
  fi
done

IFS="$pango_save_ifs"

cat >> pango/module-defs-lang.c <<EOTEXT
 { NULL, NULL, NULL, NULL },
};
EOTEXT
])


AC_HEADER_DIRENT
AC_CHECK_HEADERS(unistd.h)

# Honor aclocal flags
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
dnl ===========================================================================
AC_CONFIG_COMMANDS([pango/pango-features.h],
          [featuresfile=pango/pango-features.h
           outfile=$featuresfile.tmp
           AC_MSG_NOTICE([creating $featuresfile])
           cat >$outfile <<_EOF
/* Generated by configure. Do not edit */
#ifndef PANGO_FEATURES_H
#define PANGO_FEATURES_H

#define PANGO_VERSION_MAJOR $PANGO_VERSION_MAJOR
#define PANGO_VERSION_MINOR $PANGO_VERSION_MINOR
#define PANGO_VERSION_MICRO $PANGO_VERSION_MICRO

#define PANGO_VERSION_STRING "$PANGO_VERSION_MAJOR.$PANGO_VERSION_MINOR.$PANGO_VERSION_MICRO"

_EOF
	# TODO: define macros for enabled features/backends here

        echo '' >>$outfile
        echo '#endif' >>$outfile

        if cmp -s $outfile $featuresfile; then
          AC_MSG_NOTICE([$featuresfile is unchanged])
          rm -f $outfile
        else
          mv $outfile $featuresfile
        fi
],[
        PANGO_VERSION_MAJOR=$PANGO_VERSION_MAJOR
        PANGO_VERSION_MINOR=$PANGO_VERSION_MINOR
        PANGO_VERSION_MICRO=$PANGO_VERSION_MICRO
])

AC_CONFIG_FILES([
Makefile 
pango/Makefile
pango/mini-fribidi/Makefile
pango/opentype/Makefile
pango/pango.rc
pango/pangoft2.rc
pango/pangowin32.rc
pango/pangox.rc
pango/pangoxft.rc
pango-view/Makefile
modules/Makefile
modules/arabic/Makefile
modules/basic/Makefile
modules/hangul/Makefile
modules/hebrew/Makefile
modules/indic/Makefile
modules/khmer/Makefile
modules/syriac/Makefile
modules/thai/Makefile
modules/tibetan/Makefile
examples/Makefile
docs/Makefile
docs/version.xml
tools/Makefile
tests/Makefile
pango.pc
pangox.pc
pangowin32.pc
pangoft2.pc
pangoxft.pc
pangocairo.pc
pango-uninstalled.pc
pangox-uninstalled.pc
pangowin32-uninstalled.pc
pangoft2-uninstalled.pc
pangoxft-uninstalled.pc
pangocairo-uninstalled.pc
pango-zip.sh
])

AC_CONFIG_FILES([tests/runtests.sh],
	        [chmod +x tests/runtests.sh])

AC_OUTPUT

backends=""
if $have_cairo ; then backends="$backends Cairo"; fi
if $have_win32 ; then backends="$backends Win32"; fi
if $have_xft ; then backends="$backends Xft"; fi
if $have_freetype && $have_fontconfig ; then backends="$backends FreeType"; fi
if $have_x ; then backends="$backends X"; fi
   
echo "configuration:
	backends:$backends"
