Blame configure.ac

Packit 0ec9dd
dnl Process this file with autoconf to create configure.
Packit 0ec9dd
AC_PREREQ(2.56)
Packit 0ec9dd
Packit 0ec9dd
dnl ==========================================================================
Packit 0ec9dd
dnl                               Versioning
Packit 0ec9dd
dnl ==========================================================================
Packit 0ec9dd
Packit 0ec9dd
dnl Making releases:
Packit 0ec9dd
dnl   PANGO_VERSION_MICRO += 1;
Packit 0ec9dd
dnl   PANGO_INTERFACE_AGE += 1;
Packit 0ec9dd
dnl   PANGO_BINARY_AGE += 1;
Packit 0ec9dd
dnl if any functions have been added, set PANGO_INTERFACE_AGE to 0.
Packit 0ec9dd
dnl if backwards compatibility has been broken,
Packit 0ec9dd
dnl set PANGO_BINARY_AGE _and_ PANGO_INTERFACE_AGE to 0.
Packit 0ec9dd
Packit 0ec9dd
dnl
Packit 0ec9dd
dnl We do the version number components as m4 macros
Packit 0ec9dd
dnl so that we can base configure --help output off
Packit 0ec9dd
dnl of them.
Packit 0ec9dd
dnl
Packit 0ec9dd
Packit 0ec9dd
dnl The triplet
Packit 0ec9dd
m4_define([pango_version_major], [1])
Packit 0ec9dd
m4_define([pango_version_minor], [42])
Packit 0ec9dd
m4_define([pango_version_micro], [4])
Packit 0ec9dd
Packit 0ec9dd
m4_define([pango_version],
Packit 0ec9dd
          [pango_version_major.pango_version_minor.pango_version_micro])
Packit 0ec9dd
dnl The X.Y in -lpango-X.Y line. This is expected to stay 1.0 until Pango 2.
Packit 0ec9dd
m4_define([pango_api_version], [1.0])
Packit 0ec9dd
m4_if(m4_eval(pango_version_minor % 2), [1],
Packit 0ec9dd
      [
Packit 0ec9dd
	dnl for unstable releases
Packit 0ec9dd
	m4_define([pango_interface_age], [0])
Packit 0ec9dd
      ],
Packit 0ec9dd
      [
Packit 0ec9dd
	dnl for stable releases
Packit 0ec9dd
	m4_define([pango_interface_age], pango_version_micro)
Packit 0ec9dd
      ])
Packit 0ec9dd
dnl Number of releases since we've broken binary compatibility.
Packit 0ec9dd
m4_define([pango_binary_age],
Packit 0ec9dd
          [m4_eval(100 * pango_version_minor + pango_version_micro)])
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
AC_INIT(pango, pango_version(),
Packit 0ec9dd
        [http://bugzilla.gnome.org/enter_bug.cgi?product=pango])
Packit 0ec9dd
Packit 0ec9dd
AC_CONFIG_SRCDIR([pango.pc.in])
Packit 0ec9dd
Packit 0ec9dd
dnl -Wno-portability tells automake to stop complaining about the
Packit 0ec9dd
dnl usage of GNU Make specific features.
Packit 0ec9dd
AM_INIT_AUTOMAKE(1.9 gnits dist-xz no-dist-gzip -Wno-portability)
Packit 0ec9dd
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
Packit 0ec9dd
AC_CONFIG_HEADERS([config.h])
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
PANGO_VERSION_MAJOR=pango_version_major()
Packit 0ec9dd
PANGO_VERSION_MINOR=pango_version_minor()
Packit 0ec9dd
PANGO_VERSION_MICRO=pango_version_micro()
Packit 0ec9dd
PANGO_VERSION=pango_version()
Packit 0ec9dd
PANGO_API_VERSION=pango_api_version()
Packit 0ec9dd
PANGO_INTERFACE_AGE=pango_interface_age()
Packit 0ec9dd
PANGO_BINARY_AGE=pango_binary_age()
Packit 0ec9dd
Packit 0ec9dd
AC_SUBST(PANGO_VERSION_MAJOR)
Packit 0ec9dd
AC_SUBST(PANGO_VERSION_MINOR)
Packit 0ec9dd
AC_SUBST(PANGO_VERSION_MICRO)
Packit 0ec9dd
AC_SUBST(PANGO_VERSION)
Packit 0ec9dd
AC_SUBST(PANGO_API_VERSION)
Packit 0ec9dd
AC_SUBST(PANGO_INTERFACE_AGE)
Packit 0ec9dd
AC_SUBST(PANGO_BINARY_AGE)
Packit 0ec9dd
Packit 0ec9dd
AC_DEFINE(PANGO_BINARY_AGE, pango_binary_age(), [PANGO binary age])
Packit 0ec9dd
AC_DEFINE(PANGO_INTERFACE_AGE, pango_interface_age(), [PANGO interface age])
Packit 0ec9dd
AC_DEFINE(PANGO_VERSION_MAJOR, pango_version_major(), [PANGO major version])
Packit 0ec9dd
AC_DEFINE(PANGO_VERSION_MINOR, pango_version_minor(), [PANGO minor version])
Packit 0ec9dd
AC_DEFINE(PANGO_VERSION_MICRO, pango_version_micro(), [PANGO micro version])
Packit 0ec9dd
Packit 0ec9dd
dnl libtool versioning
Packit 0ec9dd
m4_define([lt_current], [m4_eval(100 * pango_version_minor + pango_version_micro - pango_interface_age)])
Packit 0ec9dd
m4_define([lt_revision], [pango_interface_age])
Packit 0ec9dd
m4_define([lt_age], [m4_eval(pango_binary_age - pango_interface_age)])
Packit 0ec9dd
VERSION_INFO="lt_current():lt_revision():lt_age()"
Packit 0ec9dd
PANGO_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
Packit 0ec9dd
Packit 0ec9dd
AC_SUBST(PANGO_CURRENT_MINUS_AGE)
Packit 0ec9dd
Packit 0ec9dd
dnl ==========================================================================
Packit 0ec9dd
Packit 0ec9dd
AC_CANONICAL_HOST
Packit 0ec9dd
Packit 0ec9dd
AC_MSG_CHECKING([for native Win32])
Packit 0ec9dd
case "$host" in
Packit 0ec9dd
  *-*-mingw*)
Packit 0ec9dd
    pango_os_win32=yes
Packit 0ec9dd
    case "$host" in
Packit 0ec9dd
      x86_64-*-*)
Packit 0ec9dd
	LIB_EXE_MACHINE_FLAG=X64
Packit 0ec9dd
	;;
Packit 0ec9dd
      *)
Packit 0ec9dd
	LIB_EXE_MACHINE_FLAG=X86
Packit 0ec9dd
	;;
Packit 0ec9dd
    esac
Packit 0ec9dd
    ;;
Packit 0ec9dd
  *)
Packit 0ec9dd
    pango_os_win32=no
Packit 0ec9dd
    ;;
Packit 0ec9dd
esac
Packit 0ec9dd
AC_MSG_RESULT([$pango_os_win32])
Packit 0ec9dd
Packit 0ec9dd
AC_SUBST(LIB_EXE_MACHINE_FLAG)
Packit 0ec9dd
Packit 0ec9dd
AM_CONDITIONAL(OS_WIN32, test "$pango_os_win32" = "yes")
Packit 0ec9dd
Packit 0ec9dd
AC_PROG_CC
Packit 0ec9dd
Packit 0ec9dd
dnl
Packit 0ec9dd
dnl Check for a working C++ compiler, but do not bail out, if none is found.
Packit 0ec9dd
dnl We use this for an automated test for C++ header correctness.
Packit 0ec9dd
dnl
Packit 0ec9dd
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
Packit 0ec9dd
AC_LANG_SAVE
Packit 0ec9dd
AC_LANG_CPLUSPLUS
Packit 0ec9dd
AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
Packit 0ec9dd
AC_LANG_RESTORE
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
AC_CHECK_FUNCS(sysconf getpagesize)
Packit 0ec9dd
AC_CHECK_HEADERS(unistd.h sys/mman.h)
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Win32 stuff
Packit 0ec9dd
#
Packit 0ec9dd
Packit 0ec9dd
AC_LIBTOOL_WIN32_DLL
Packit 0ec9dd
AM_DISABLE_STATIC
Packit 0ec9dd
Packit 0ec9dd
AM_PROG_LIBTOOL
Packit 0ec9dd
dnl when using libtool 2.x create libtool early, because it's used in configure
Packit 0ec9dd
m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
Packit 0ec9dd
Packit 0ec9dd
AC_MSG_CHECKING([for some Win32 platform])
Packit 0ec9dd
case "$host" in
Packit 0ec9dd
  *-*-mingw*|*-*-cygwin*)
Packit 0ec9dd
    pango_platform_win32=yes
Packit 0ec9dd
    ;;
Packit 0ec9dd
  *)
Packit 0ec9dd
    pango_platform_win32=no
Packit 0ec9dd
    ;;
Packit 0ec9dd
esac
Packit 0ec9dd
AC_MSG_RESULT([$pango_platform_win32])
Packit 0ec9dd
AM_CONDITIONAL(PLATFORM_WIN32, test "$pango_platform_win32" = "yes")
Packit 0ec9dd
Packit 0ec9dd
if test "$pango_platform_win32" = "yes"; then
Packit 0ec9dd
  AC_CHECK_TOOL(WINDRES, windres, no)
Packit 0ec9dd
  if test "$WINDRES" = no; then
Packit 0ec9dd
    AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
Packit 0ec9dd
  fi
Packit 0ec9dd
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
Packit 0ec9dd
fi
Packit 0ec9dd
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
Packit 0ec9dd
Packit 0ec9dd
changequote(,)dnl
Packit 0ec9dd
if test "x$GCC" = "xyes"; then
Packit 0ec9dd
  case " $CFLAGS " in
Packit 0ec9dd
  *[\ \	]-Wall[\ \	]*) ;;
Packit 0ec9dd
  *) CFLAGS="$CFLAGS -Wall" ;;
Packit 0ec9dd
  esac
Packit 0ec9dd
fi
Packit 0ec9dd
changequote([,])dnl
Packit 0ec9dd
Packit 0ec9dd
dnl declare --enable-* args and collect ac_help strings
Packit 0ec9dd
Packit 0ec9dd
m4_define([debug_default],
Packit 0ec9dd
          m4_if(m4_eval(pango_version_minor() % 2), [1], [yes], [minimum]))
Packit 0ec9dd
Packit 0ec9dd
AC_ARG_ENABLE(debug,
Packit 0ec9dd
              AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
Packit 0ec9dd
                             [turn on debugging @<:@default=debug_default()@:>@]),
Packit 0ec9dd
	      ,
Packit 0ec9dd
              enable_debug=debug_default())
Packit 0ec9dd
Packit 0ec9dd
if test "x$enable_debug" = "xyes"; then
Packit 0ec9dd
  PANGO_DEBUG_FLAGS="-DPANGO_ENABLE_DEBUG"
Packit 0ec9dd
else
Packit 0ec9dd
  PANGO_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
Packit 0ec9dd
Packit 0ec9dd
  if test "x$enable_debug" = "xno"; then
Packit 0ec9dd
    PANGO_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS $PANGO_DEBUG_FLAGS"
Packit 0ec9dd
  fi
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
AC_SUBST(PANGO_DEBUG_FLAGS)
Packit 0ec9dd
Packit 0ec9dd
AC_ARG_ENABLE(rebuilds,
Packit 0ec9dd
              [AC_HELP_STRING([--disable-rebuilds],
Packit 0ec9dd
                              [disable all source autogeneration rules])],,
Packit 0ec9dd
              [enable_rebuilds=yes])
Packit 0ec9dd
Packit 0ec9dd
AM_CONDITIONAL(CROSS_COMPILING, [test $cross_compiling = yes])
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for HarfBuzz
Packit 0ec9dd
#
Packit 0ec9dd
have_harfbuzz=false
Packit 0ec9dd
PKG_CHECK_MODULES(HARFBUZZ, harfbuzz >= 1.4.2, have_harfbuzz=true, :)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_HARFBUZZ, $have_harfbuzz)
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Check for fontconfig
Packit 0ec9dd
#
Packit 0ec9dd
have_fontconfig=false
Packit 0ec9dd
if $have_harfbuzz ; then
Packit 0ec9dd
  PKG_CHECK_MODULES(FONTCONFIG, fontconfig >= 2.11.91, have_fontconfig=true, :)
Packit 0ec9dd
fi
Packit 0ec9dd
if $have_fontconfig ; then
Packit 0ec9dd
  pango_save_libs=$LIBS
Packit 0ec9dd
  LIBS="$LIBS $FONTCONFIG_LIBS"
Packit 0ec9dd
  AC_CHECK_FUNCS(FcWeightFromOpenTypeDouble)
Packit 0ec9dd
  LIBS=$pango_save_libs
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for FreeType
Packit 0ec9dd
#
Packit 0ec9dd
have_freetype=false
Packit 0ec9dd
if $have_fontconfig ; then
Packit 0ec9dd
  # The first version of freetype with a .pc file is 2.1.5.  That's recent
Packit 0ec9dd
  # enough for all the functions we use I guess.  No version check needed.
Packit 0ec9dd
  PKG_CHECK_MODULES(FREETYPE, freetype2, have_freetype=true, :)
Packit 0ec9dd
fi
Packit 0ec9dd
if $have_freetype ; then
Packit 0ec9dd
  AC_DEFINE(HAVE_FREETYPE, 1, [Have FreeType 2 library])
Packit 0ec9dd
fi
Packit 0ec9dd
AM_CONDITIONAL(HAVE_FREETYPE, $have_freetype)
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for Xft/XRender
Packit 0ec9dd
#
Packit 0ec9dd
have_xft=false
Packit 0ec9dd
AC_ARG_WITH(xft,
Packit 0ec9dd
  AS_HELP_STRING([--with-xft], [build xft backend]),
Packit 0ec9dd
  [], [with_xft=yes])
Packit 0ec9dd
if $have_freetype ; then
Packit 0ec9dd
  PKG_CHECK_MODULES(XFT, xft >= 2.0.0 xrender, have_xft=true, :)
Packit 0ec9dd
fi
Packit 0ec9dd
if test "x$with_xft" = xyes && $have_xft ; then
Packit 0ec9dd
  AC_DEFINE(HAVE_XFT, 1, [Have Xft library])
Packit 0ec9dd
fi
Packit 0ec9dd
AM_CONDITIONAL(HAVE_XFT, test "x$with_xft" = xyes && $have_xft )
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for Win32
Packit 0ec9dd
#
Packit 0ec9dd
have_win32=false
Packit 0ec9dd
# The following doesn't work with autoconf-2.13, so we check $host instead
Packit 0ec9dd
# AC_CHECK_LIB(gdi32, GetTextMetricsA@8, have_win32=true, : )
Packit 0ec9dd
case "$host" in
Packit 0ec9dd
  *-*-mingw*|*-*-cygwin*) have_win32=true ;;
Packit 0ec9dd
esac
Packit 0ec9dd
AM_CONDITIONAL(HAVE_WIN32, $have_win32)
Packit 0ec9dd
Packit 0ec9dd
# Ensure MSVC-compatible struct packing convention is used when
Packit 0ec9dd
# compiling for Win32 with gcc.
Packit 0ec9dd
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
Packit 0ec9dd
# gcc2 uses "-fnative-struct".
Packit 0ec9dd
if test "$pango_os_win32" = "yes"; then
Packit 0ec9dd
  if test x"$GCC" = xyes; then
Packit 0ec9dd
    msnative_struct=''
Packit 0ec9dd
    AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
Packit 0ec9dd
    if test -z "$ac_cv_prog_CC"; then
Packit 0ec9dd
      our_gcc="$CC"
Packit 0ec9dd
    else
Packit 0ec9dd
      our_gcc="$ac_cv_prog_CC"
Packit 0ec9dd
    fi
Packit 0ec9dd
    case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
Packit 0ec9dd
      2.)
Packit 0ec9dd
	if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
Packit 0ec9dd
	  msnative_struct='-fnative-struct'
Packit 0ec9dd
	fi
Packit 0ec9dd
	;;
Packit 0ec9dd
      *)
Packit 0ec9dd
	if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
Packit 0ec9dd
	  msnative_struct='-mms-bitfields'
Packit 0ec9dd
	fi
Packit 0ec9dd
	;;
Packit 0ec9dd
    esac
Packit 0ec9dd
    if test x"$msnative_struct" = x ; then
Packit 0ec9dd
      AC_MSG_RESULT([no way])
Packit 0ec9dd
      AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
Packit 0ec9dd
    else
Packit 0ec9dd
      CFLAGS="$CFLAGS $msnative_struct"
Packit 0ec9dd
      AC_MSG_RESULT([${msnative_struct}])
Packit 0ec9dd
    fi
Packit 0ec9dd
  fi
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for CoreText
Packit 0ec9dd
#
Packit 0ec9dd
Packit 0ec9dd
AC_MSG_CHECKING([for CoreText availability])
Packit 0ec9dd
pango_save_libs=$LIBS
Packit 0ec9dd
LIBS="$LIBS -framework ApplicationServices"
Packit 0ec9dd
AC_TRY_LINK([#include <Carbon/Carbon.h>], [CTGetCoreTextVersion ();],
Packit 0ec9dd
[have_core_text=yes], [have_core_text=no])
Packit 0ec9dd
LIBS=$pango_save_libs
Packit 0ec9dd
Packit 0ec9dd
if test "$have_core_text" = "yes"; then
Packit 0ec9dd
  AC_DEFINE(HAVE_CORE_TEXT, 1, [Whether CoreText is available on the system])
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
AC_MSG_RESULT([$have_core_text])
Packit 0ec9dd
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CORE_TEXT, test "$have_core_text" = "yes")
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for Cairo
Packit 0ec9dd
#
Packit 0ec9dd
have_cairo=false
Packit 0ec9dd
have_cairo_png=false
Packit 0ec9dd
have_cairo_ps=false
Packit 0ec9dd
have_cairo_pdf=false
Packit 0ec9dd
have_cairo_xlib=false
Packit 0ec9dd
have_cairo_freetype=false
Packit 0ec9dd
have_cairo_win32=false
Packit 0ec9dd
have_cairo_quartz=false
Packit 0ec9dd
cairo_required=1.12.10
Packit 0ec9dd
Packit 0ec9dd
AC_ARG_WITH(cairo,
Packit 0ec9dd
	    AS_HELP_STRING([--without-cairo], [Do not use cairo]),
Packit 0ec9dd
	    :, with_cairo=auto)
Packit 0ec9dd
AS_IF([test x$with_cairo != xno], [
Packit 0ec9dd
  PKG_CHECK_MODULES(CAIRO, cairo >= $cairo_required, have_cairo=true, :)
Packit 0ec9dd
])
Packit 0ec9dd
Packit 0ec9dd
if $have_cairo ; then
Packit 0ec9dd
  pango_save_libs=$LIBS
Packit 0ec9dd
  LIBS="$LIBS $CAIRO_LIBS"
Packit 0ec9dd
  pango_save_ldflags=$LDFLAGS
Packit 0ec9dd
  LDFLAGS="$LDFLAGS $CAIRO_LIBS"
Packit 0ec9dd
Packit 0ec9dd
  have_cairo=false
Packit 0ec9dd
  cairo_font_backends=""
Packit 0ec9dd
Packit 0ec9dd
  if $have_freetype; then
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-ft >= $cairo_required, have_cairo_freetype=true, :)
Packit 0ec9dd
  fi
Packit 0ec9dd
  if $have_cairo_freetype; then
Packit 0ec9dd
    AC_DEFINE(HAVE_CAIRO_FREETYPE, 1, [Whether Cairo can use FreeType for fonts])
Packit 0ec9dd
    cairo_font_backends="freetype $cairo_font_backends"
Packit 0ec9dd
    have_cairo=true
Packit 0ec9dd
  fi
Packit 0ec9dd
Packit 0ec9dd
  if $have_win32; then
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-win32 >= $cairo_required, have_cairo_win32=true, :)
Packit 0ec9dd
  fi
Packit 0ec9dd
  if $have_cairo_win32; then
Packit 0ec9dd
    AC_DEFINE(HAVE_CAIRO_WIN32, 1, [Whether Cairo can use the Win32 GDI for fonts])
Packit 0ec9dd
    cairo_font_backends="win32 $cairo_font_backends"
Packit 0ec9dd
    have_cairo=true
Packit 0ec9dd
  fi
Packit 0ec9dd
Packit 0ec9dd
  if test $have_core_text; then
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-quartz-font >= $cairo_required, have_cairo_quartz=true, :)
Packit 0ec9dd
  fi
Packit 0ec9dd
  if $have_cairo_quartz; then
Packit 0ec9dd
    AC_DEFINE(HAVE_CAIRO_QUARTZ, 1, [Whether Cairo can use Quartz for fonts])
Packit 0ec9dd
    cairo_font_backends="quartz $cairo_font_backends"
Packit 0ec9dd
    have_cairo=true
Packit 0ec9dd
  fi
Packit 0ec9dd
Packit 0ec9dd
  AC_MSG_CHECKING([which cairo font backends could be used])
Packit 0ec9dd
  if $have_cairo ; then
Packit 0ec9dd
    AC_MSG_RESULT([$cairo_font_backends])
Packit 0ec9dd
  else
Packit 0ec9dd
    if test x${with_cairo} != xauto; then
Packit 0ec9dd
      AC_MSG_ERROR([cairo support requested, but not present])
Packit 0ec9dd
    fi
Packit 0ec9dd
    AC_MSG_RESULT([none])
Packit 0ec9dd
    AC_MSG_NOTICE([Disabling cairo support])
Packit 0ec9dd
  fi
Packit 0ec9dd
Packit 0ec9dd
  if $have_cairo ; then
Packit 0ec9dd
    AC_DEFINE(HAVE_CAIRO, 1, [Have usable Cairo library and font backend])
Packit 0ec9dd
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-png >= $cairo_required, have_cairo_png=true, :)
Packit 0ec9dd
    if $have_cairo_png; then
Packit 0ec9dd
      AC_DEFINE(HAVE_CAIRO_PNG, 1, [Whether Cairo has PNG support])
Packit 0ec9dd
    fi
Packit 0ec9dd
  
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-ps >= $cairo_required, have_cairo_ps=true, :)
Packit 0ec9dd
    if $have_cairo_ps; then
Packit 0ec9dd
      AC_DEFINE(HAVE_CAIRO_PS, 1, [Whether Cairo has PS support])
Packit 0ec9dd
    fi
Packit 0ec9dd
  
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-pdf >= $cairo_required, have_cairo_pdf=true, :)
Packit 0ec9dd
    if $have_cairo_pdf; then
Packit 0ec9dd
      AC_DEFINE(HAVE_CAIRO_PDF, 1, [Whether Cairo has PDF support])
Packit 0ec9dd
    fi
Packit 0ec9dd
  
Packit 0ec9dd
    PKG_CHECK_EXISTS(cairo-xlib >= $cairo_required, have_cairo_xlib=true, :)
Packit 0ec9dd
    if $have_cairo_xlib; then
Packit 0ec9dd
      AC_DEFINE(HAVE_CAIRO_XLIB, 1, [Whether Cairo has Xlib support])
Packit 0ec9dd
    fi
Packit 0ec9dd
  fi
Packit 0ec9dd
Packit 0ec9dd
  LIBS=$pango_save_libs
Packit 0ec9dd
  LDFLAGS=$pango_save_ldflags
Packit 0ec9dd
Packit 0ec9dd
  PKGCONFIG_CAIRO_REQUIRES=
Packit 0ec9dd
  if $have_cairo_freetype;  then
Packit 0ec9dd
    PKGCONFIG_CAIRO_REQUIRES="$PKGCONFIG_CAIRO_REQUIRES pangoft2"
Packit 0ec9dd
  fi
Packit 0ec9dd
  if $have_cairo_win32;  then
Packit 0ec9dd
    PKGCONFIG_CAIRO_REQUIRES="$PKGCONFIG_CAIRO_REQUIRES pangowin32"
Packit 0ec9dd
  fi
Packit 0ec9dd
  AC_SUBST(PKGCONFIG_CAIRO_REQUIRES)
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
# To compensate for Meson builds on MSVC where pkg-config files may well not be
Packit 0ec9dd
# available for cairo, harfbuzz, freetype2 and fontconfig
Packit 0ec9dd
CAIRO_PC="cairo"
Packit 0ec9dd
FREETYPE2_PC="freetype2"
Packit 0ec9dd
FONTCONFIG_PC="fontconfig"
Packit 0ec9dd
HARFBUZZ_PC="harfbuzz"
Packit 0ec9dd
AC_SUBST(CAIRO_PC)
Packit 0ec9dd
AC_SUBST(FREETYPE2_PC)
Packit 0ec9dd
AC_SUBST(FONTCONFIG_PC)
Packit 0ec9dd
AC_SUBST(HARFBUZZ_PC)
Packit 0ec9dd
CAIRO_LIB=
Packit 0ec9dd
FREETYPE2_LIB=
Packit 0ec9dd
FONTCONFIG_LIB=
Packit 0ec9dd
HARFBUZZ_LIB=
Packit 0ec9dd
AC_SUBST(CAIRO_LIB)
Packit 0ec9dd
AC_SUBST(FREETYPE2_LIB)
Packit 0ec9dd
AC_SUBST(FONTCONFIG_LIB)
Packit 0ec9dd
AC_SUBST(HARFBUZZ_LIB)
Packit 0ec9dd
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO, $have_cairo)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_PNG, $have_cairo_png)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_PS, $have_cairo_ps)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_PDF, $have_cairo_pdf)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_XLIB, $have_cairo_xlib)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_WIN32, $have_cairo_win32)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_FREETYPE, $have_cairo_freetype)
Packit 0ec9dd
AM_CONDITIONAL(HAVE_CAIRO_QUARTZ, $have_cairo_quartz)
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# We must have some backend defined
Packit 0ec9dd
#
Packit 0ec9dd
if $have_freetype || `test "x$with_xft" = xyes && $have_xft` || $have_cairo || $have_win32 ; then : ; else
Packit 0ec9dd
  AC_MSG_ERROR([*** Could not enable any backends.
Packit 0ec9dd
*** Must have at least one backend to build Pango.])
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for GLib
Packit 0ec9dd
#
Packit 0ec9dd
GLIB_REQUIRED_VERSION=2.33.12
Packit 0ec9dd
GLIB_MODULES="glib-2.0 >= $GLIB_REQUIRED_VERSION gobject-2.0 gthread-2.0"
Packit 0ec9dd
Packit 0ec9dd
PKG_CHECK_MODULES(GLIB, $GLIB_MODULES, :,
Packit 0ec9dd
  AC_MSG_ERROR([
Packit 0ec9dd
*** Glib $GLIB_REQUIRED_VERSION or better is required. The latest version of 
Packit 0ec9dd
*** Glib is always available from ftp://ftp.gtk.org/.]))
Packit 0ec9dd
Packit 0ec9dd
# Setup GLIB_MKENUMS to use glib-mkenums even if GLib is uninstalled.
Packit 0ec9dd
GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
Packit 0ec9dd
AC_SUBST(GLIB_MKENUMS)
Packit 0ec9dd
Packit 0ec9dd
# Checks for FriBiDi
Packit 0ec9dd
FRIBIDI_REQUIRED_VERSION=0.19.7
Packit 0ec9dd
PKG_CHECK_MODULES(FRIBIDI, fribidi >= $FRIBIDI_REQUIRED_VERSION)
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for LibThai
Packit 0ec9dd
#
Packit 0ec9dd
LIBTHAI_REQUIRED_VERSION=0.1.9
Packit 0ec9dd
have_libthai=false
Packit 0ec9dd
PKG_CHECK_MODULES(LIBTHAI, libthai >= $LIBTHAI_REQUIRED_VERSION, have_libthai=true, :)
Packit 0ec9dd
if $have_libthai; then
Packit 0ec9dd
	AC_DEFINE(HAVE_LIBTHAI, 1, [Whether libthai is available])
Packit 0ec9dd
	pango_save_libs=$LIBS
Packit 0ec9dd
	LIBS="$LIBS $LIBTHAI_LIBS"
Packit 0ec9dd
	AC_CHECK_FUNCS(th_brk_find_breaks)
Packit 0ec9dd
	LIBS=$pango_save_libs
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# Checks for GObject Introspection
Packit 0ec9dd
#
Packit 0ec9dd
Packit 0ec9dd
GOBJECT_INTROSPECTION_CHECK([0.9.5])
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
#
Packit 0ec9dd
# We use flockfile to implement pango_getline() - should be moved to GLib
Packit 0ec9dd
# strtok_r isn't present on some systems
Packit 0ec9dd
#
Packit 0ec9dd
AC_CHECK_FUNCS(flockfile strtok_r)
Packit 0ec9dd
Packit 0ec9dd
dnl **************************
Packit 0ec9dd
dnl *** Checks for gtk-doc ***
Packit 0ec9dd
dnl **************************
Packit 0ec9dd
Packit 0ec9dd
if $have_cairo ; then : ; else
Packit 0ec9dd
   if  test x$enable_gtk_doc = xyes ; then
Packit 0ec9dd
      AC_MSG_WARN([Cairo not present, disabling doc building])      
Packit 0ec9dd
      enable_gtk_doc=no
Packit 0ec9dd
   fi
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
Packit 0ec9dd
Packit 0ec9dd
AC_ARG_ENABLE(doc-cross-references,
Packit 0ec9dd
              AC_HELP_STRING([--disable-doc-cross-references],
Packit 0ec9dd
                             [cross reference glib and cairo symbols @<:@default=yes@:>@]),
Packit 0ec9dd
	      enable_doc_cross_references=$enableval,
Packit 0ec9dd
	      enable_doc_cross_references=yes)
Packit 0ec9dd
Packit 0ec9dd
if test "x$enable_doc_cross_references" != xno ; then
Packit 0ec9dd
	GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
Packit 0ec9dd
	CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
Packit 0ec9dd
	AC_SUBST(GLIB_PREFIX)
Packit 0ec9dd
	AC_SUBST(CAIRO_PREFIX)
Packit 0ec9dd
fi
Packit 0ec9dd
AM_CONDITIONAL(ENABLE_DOC_CROSS_REFERENCES, test x$enable_doc_cross_references != xno)
Packit 0ec9dd
Packit 0ec9dd
dnl ********************************************************
Packit 0ec9dd
dnl * Options to pass to libtool
Packit 0ec9dd
dnl ********************************************************
Packit 0ec9dd
Packit 0ec9dd
# Note that -module isn't included here since automake needs to see it to know
Packit 0ec9dd
# that something like pango-basic-fc.la is a valid libtool archive
Packit 0ec9dd
#
Packit 0ec9dd
LIBRARY_LIBTOOL_OPTIONS="-version-info $VERSION_INFO"
Packit 0ec9dd
if test "$pango_platform_win32" = yes; then
Packit 0ec9dd
    # We currently use .def files on Windows
Packit 0ec9dd
    LIBRARY_LIBTOOL_OPTIONS="$LIBRARY_LIBTOOL_OPTIONS -no-undefined"
Packit 0ec9dd
else
Packit 0ec9dd
    # libtool option to control which symbols are exported
Packit 0ec9dd
    # right now, symbols starting with '_' are not exported
Packit 0ec9dd
    LIBRARY_LIBTOOL_OPTIONS="$LIBRARY_LIBTOOL_OPTIONS "'-export-symbols-regex "^pango_.*"'
Packit 0ec9dd
fi
Packit 0ec9dd
AC_SUBST(LIBRARY_LIBTOOL_OPTIONS)
Packit 0ec9dd
Packit 0ec9dd
dnl
Packit 0ec9dd
dnl Check for -Bsymbolic-functions linker flag used to avoid
Packit 0ec9dd
dnl intra-library PLT jumps, if available.
Packit 0ec9dd
dnl
Packit 0ec9dd
AC_ARG_ENABLE(Bsymbolic,
Packit 0ec9dd
              [AS_HELP_STRING([--disable-Bsymbolic],
Packit 0ec9dd
                              [avoid linking with -Bsymbolic])],,
Packit 0ec9dd
              [SAVED_LDFLAGS="${LDFLAGS}"
Packit 0ec9dd
               AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
Packit 0ec9dd
               LDFLAGS=-Wl,-Bsymbolic-functions
Packit 0ec9dd
               AC_TRY_LINK([], [int main (void) { return 0; }],
Packit 0ec9dd
                           AC_MSG_RESULT(yes)
Packit 0ec9dd
                           enable_Bsymbolic=yes,
Packit 0ec9dd
                           AC_MSG_RESULT(no)
Packit 0ec9dd
                           enable_Bsymbolic=no)
Packit 0ec9dd
               LDFLAGS="${SAVED_LDFLAGS}"])
Packit 0ec9dd
Packit 0ec9dd
if test "x${enable_Bsymbolic}" = "xyes"; then
Packit 0ec9dd
  LIBRARY_LIBTOOL_OPTIONS="$LIBRARY_LIBTOOL_OPTIONS -Wl,-Bsymbolic-functions"
Packit 0ec9dd
fi
Packit 0ec9dd
Packit 0ec9dd
dnl ********************************************************
Packit 0ec9dd
dnl * Installed test                                       *
Packit 0ec9dd
dnl ********************************************************
Packit 0ec9dd
Packit 0ec9dd
AC_ARG_ENABLE(installed_tests,
Packit 0ec9dd
              AS_HELP_STRING([--enable-installed-tests],
Packit 0ec9dd
                             [Install test programs (default: no)]),,
Packit 0ec9dd
              [enable_installed_tests=no])
Packit 0ec9dd
AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes)
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
dnl *********************************************************************
Packit 0ec9dd
dnl * Check for -fvisibility=hidden to determine if we can do GNU-style *
Packit 0ec9dd
dnl * visibility attributes for symbol export control                   *
Packit 0ec9dd
dnl *********************************************************************
Packit 0ec9dd
Packit 0ec9dd
PANGO_HIDDEN_VISIBILITY_CFLAGS=""
Packit 0ec9dd
case "$host" in
Packit 0ec9dd
  *-*-mingw*)
Packit 0ec9dd
    dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
Packit 0ec9dd
    AC_DEFINE([_PANGO_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
Packit 0ec9dd
              [defines how to decorate public symbols while building])
Packit 0ec9dd
    CFLAGS="${CFLAGS} -fvisibility=hidden"
Packit 0ec9dd
    ;;
Packit 0ec9dd
  *)
Packit 0ec9dd
    dnl on other compilers, check if we can do -fvisibility=hidden
Packit 0ec9dd
    SAVED_CFLAGS="${CFLAGS}"
Packit 0ec9dd
    CFLAGS="-fvisibility=hidden"
Packit 0ec9dd
    AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
Packit 0ec9dd
    AC_TRY_COMPILE([], [return 0],
Packit 0ec9dd
                   AC_MSG_RESULT(yes)
Packit 0ec9dd
                   enable_fvisibility_hidden=yes,
Packit 0ec9dd
                   AC_MSG_RESULT(no)
Packit 0ec9dd
                   enable_fvisibility_hidden=no)
Packit 0ec9dd
    CFLAGS="${SAVED_CFLAGS}"
Packit 0ec9dd
Packit 0ec9dd
    AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
Packit 0ec9dd
      AC_DEFINE([_PANGO_EXTERN], [__attribute__((visibility("default"))) extern],
Packit 0ec9dd
                [defines how to decorate public symbols while building])
Packit 0ec9dd
      PANGO_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
Packit 0ec9dd
    ])
Packit 0ec9dd
    ;;
Packit 0ec9dd
esac
Packit 0ec9dd
AC_SUBST(PANGO_HIDDEN_VISIBILITY_CFLAGS)
Packit 0ec9dd
Packit 0ec9dd
Packit 0ec9dd
AC_HEADER_DIRENT
Packit 0ec9dd
AC_CHECK_HEADERS(unistd.h)
Packit 0ec9dd
Packit 0ec9dd
# Check whether MSVC toolset is explicitly set
Packit 0ec9dd
AM_CONDITIONAL(MSVC_BASE_NO_TOOLSET_SET, [test x$MSVC_BASE_TOOLSET = x])
Packit 0ec9dd
AM_CONDITIONAL(MSVC_NO_TOOLSET_SET, [test x$MSVC_TOOLSET = x])
Packit 0ec9dd
Packit 0ec9dd
# Honor aclocal flags
Packit 0ec9dd
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
Packit 0ec9dd
dnl ===========================================================================
Packit 0ec9dd
AC_CONFIG_COMMANDS([pango/pango-features.h],
Packit 0ec9dd
          [featuresfile=pango/pango-features.h
Packit 0ec9dd
           outfile=$featuresfile.tmp
Packit 0ec9dd
           AC_MSG_NOTICE([creating $featuresfile])
Packit 0ec9dd
           cat >$outfile <<_EOF
Packit 0ec9dd
/* Generated by configure. Do not edit */
Packit 0ec9dd
#ifndef PANGO_FEATURES_H
Packit 0ec9dd
#define PANGO_FEATURES_H
Packit 0ec9dd
Packit 0ec9dd
#define PANGO_VERSION_MAJOR $PANGO_VERSION_MAJOR
Packit 0ec9dd
#define PANGO_VERSION_MINOR $PANGO_VERSION_MINOR
Packit 0ec9dd
#define PANGO_VERSION_MICRO $PANGO_VERSION_MICRO
Packit 0ec9dd
Packit 0ec9dd
#define PANGO_VERSION_STRING "$PANGO_VERSION_MAJOR.$PANGO_VERSION_MINOR.$PANGO_VERSION_MICRO"
Packit 0ec9dd
Packit 0ec9dd
_EOF
Packit 0ec9dd
	# TODO: define macros for enabled features/backends here
Packit 0ec9dd
Packit 0ec9dd
        echo '' >>$outfile
Packit 0ec9dd
        echo '#endif' >>$outfile
Packit 0ec9dd
Packit 0ec9dd
        if cmp -s $outfile $featuresfile; then
Packit 0ec9dd
          AC_MSG_NOTICE([$featuresfile is unchanged])
Packit 0ec9dd
          rm -f $outfile
Packit 0ec9dd
        else
Packit 0ec9dd
          mv $outfile $featuresfile
Packit 0ec9dd
        fi
Packit 0ec9dd
],[
Packit 0ec9dd
        PANGO_VERSION_MAJOR=$PANGO_VERSION_MAJOR
Packit 0ec9dd
        PANGO_VERSION_MINOR=$PANGO_VERSION_MINOR
Packit 0ec9dd
        PANGO_VERSION_MICRO=$PANGO_VERSION_MICRO
Packit 0ec9dd
])
Packit 0ec9dd
Packit 0ec9dd
AC_CONFIG_FILES([
Packit 0ec9dd
Makefile
Packit 0ec9dd
pango/Makefile
Packit 0ec9dd
pango/pango.rc
Packit 0ec9dd
pango/pangoft2.rc
Packit 0ec9dd
pango/pangowin32.rc
Packit 0ec9dd
pango/pangocairo.rc
Packit 0ec9dd
pango/pangoxft.rc
Packit 0ec9dd
utils/Makefile
Packit 0ec9dd
examples/Makefile
Packit 0ec9dd
docs/Makefile
Packit 0ec9dd
docs/version.xml
Packit 0ec9dd
tools/Makefile
Packit 0ec9dd
tests/Makefile
Packit 0ec9dd
win32/Makefile
Packit 0ec9dd
win32/vs9/Makefile
Packit 0ec9dd
win32/vs9/pango-version-paths.vsprops
Packit 0ec9dd
win32/vs10/Makefile
Packit 0ec9dd
win32/vs10/pango-version-paths.props
Packit 0ec9dd
win32/vs11/Makefile
Packit 0ec9dd
win32/vs12/Makefile
Packit 0ec9dd
win32/vs14/Makefile
Packit 0ec9dd
win32/vs15/Makefile
Packit 0ec9dd
pango.pc
Packit 0ec9dd
pangowin32.pc
Packit 0ec9dd
pangoft2.pc
Packit 0ec9dd
pangoxft.pc
Packit 0ec9dd
pangocairo.pc
Packit 0ec9dd
config.h.win32
Packit 0ec9dd
])
Packit 0ec9dd
Packit 0ec9dd
AC_OUTPUT
Packit 0ec9dd
Packit 0ec9dd
backends=""
Packit 0ec9dd
if $have_cairo ; then backends="$backends Cairo"; fi
Packit 0ec9dd
if $have_win32 ; then backends="$backends Win32"; fi
Packit 0ec9dd
if test "x$with_xft" = xyes && $have_xft ; then backends="$backends Xft"; fi
Packit 0ec9dd
if $have_freetype && $have_fontconfig ; then backends="$backends FreeType"; fi
Packit 0ec9dd
Packit 0ec9dd
echo "configuration:
Packit 0ec9dd
	backends:$backends"