Blame configure.ac

Packit 324a5c
AC_PREREQ([2.63])
Packit 324a5c
CAIRO_PARSE_VERSION
Packit 324a5c
AC_INIT([cairo],
Packit 324a5c
	[cairo_version_major.cairo_version_minor.cairo_version_micro],
Packit 324a5c
	[http://bugs.freedesktop.org/enter_bug.cgi?product=cairo],
Packit 324a5c
	[cairo],
Packit 324a5c
	[http://cairographics.org/])
Packit 324a5c
AC_CONFIG_AUX_DIR(build)
Packit 324a5c
AC_CONFIG_MACRO_DIR(build)
Packit 324a5c
AC_USE_SYSTEM_EXTENSIONS
Packit 324a5c
AC_CONFIG_SRCDIR(src/cairo.h)
Packit 324a5c
AC_CONFIG_HEADERS(config.h)
Packit 324a5c
Packit 324a5c
AC_CHECK_HEADERS([unistd.h sys/ioctl.h])
Packit 324a5c
Packit 324a5c
AM_INIT_AUTOMAKE([1.11 foreign -Wall no-define no-dist-gzip dist-xz])
Packit 324a5c
AM_SILENT_RULES([yes])
Packit 324a5c
m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Workaround for Automake 1.12
Packit 324a5c
Packit 324a5c
# Initialize libtool
Packit 324a5c
LT_PREREQ([2.2])
Packit 324a5c
LT_INIT([win32-dll])
Packit 324a5c
Packit 324a5c
# Api documentation
Packit 324a5c
GTK_DOC_CHECK([1.15],[--flavour no-tmpl])
Packit 324a5c
Packit 324a5c
AC_SYS_LARGEFILE
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl
Packit 324a5c
dnl The order of the includes here is rather important
Packit 324a5c
dnl
Packit 324a5c
m4_include(build/configure.ac.version)	dnl macros setting up various version declares
Packit 324a5c
m4_include(build/configure.ac.tools)	dnl checks for tools we use
Packit 324a5c
m4_include(build/configure.ac.features)	dnl macros for backend/feature handling
Packit 324a5c
m4_include(build/configure.ac.warnings)	dnl checks for compiler warning
Packit 324a5c
m4_include(build/configure.ac.system)	dnl checks for system functions, headers, libs
Packit 324a5c
m4_include(build/configure.ac.analysis)	dnl checks for analysis tools (lcov, etc)
Packit 324a5c
m4_include(build/configure.ac.noversion) dnl disable builtin libtool versioning
Packit 324a5c
m4_include(build/configure.ac.pthread)  dnl checks for pthreads
Packit 324a5c
AC_CACHE_SAVE
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
AC_CHECK_LIB(z, compress,
Packit 324a5c
	 [AC_CHECK_HEADER(zlib.h, [
Packit 324a5c
	  have_libz=yes
Packit 324a5c
	  AC_DEFINE(HAVE_ZLIB, 1, [Define to 1 if you have zlib available])
Packit 324a5c
	 ],
Packit 324a5c
	 [have_libz="no (requires zlib http://www.gzip.org/zlib/)"])],
Packit 324a5c
	 [have_libz="no (requires zlib http://www.gzip.org/zlib/)"])
Packit 324a5c
Packit 324a5c
save_LIBS="$LIBS"
Packit 324a5c
AC_CHECK_LIB(lzo2, lzo2a_decompress,
Packit 324a5c
	 [AC_CHECK_HEADER(lzo/lzo2a.h, [
Packit 324a5c
	  have_lzo=yes
Packit 324a5c
	  AC_DEFINE(HAVE_LZO, 1, [Define to 1 if you have lzo available])
Packit 324a5c
	  lzo_LIBS="-llzo2"
Packit 324a5c
	 ],
Packit 324a5c
	 [have_lzo="no (requires lzpo http://www.oberhumer.com/opensource/lzo/)"])],
Packit 324a5c
	 [have_lzo="no (requires lzpo http://www.oberhumer.com/opensource/lzo/)"])
Packit 324a5c
AC_SUBST(lzo_LIBS)
Packit 324a5c
LIBS="$save_LIBS"
Packit 324a5c
Packit 324a5c
AC_CHECK_LIB(dl, dlsym,
Packit 324a5c
	     [have_dlsym=yes; have_dl=yes],
Packit 324a5c
	     [have_dlsym=no; have_dl=no])
Packit 324a5c
if test "x$have_dlsym" = "xno"; then
Packit 324a5c
   AC_CHECK_FUNC(dlsym, [have_dlsym=yes], [have_dlsym=no])
Packit 324a5c
fi
Packit 324a5c
AC_CHECK_HEADERS(dlfcn.h, [have_dlsym=yes], [have_dlsym=no])
Packit 324a5c
AM_CONDITIONAL(CAIRO_HAS_DL, test "x$have_dl" = "xyes")
Packit 324a5c
if test "x$have_dlsym" = "xyes"; then
Packit 324a5c
  AC_DEFINE([CAIRO_HAS_DLSYM], 1, [Define to 1 if dlsym is available])
Packit 324a5c
fi
Packit 324a5c
AM_CONDITIONAL(CAIRO_HAS_DLSYM, test "x$have_dlsym" = "xyes")
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(xlib, Xlib, auto, [
Packit 324a5c
  xlib_REQUIRES="x11 xext"
Packit 324a5c
  PKG_CHECK_MODULES(xlib, $xlib_REQUIRES, ,
Packit 324a5c
		    [xlib_REQUIRES=""
Packit 324a5c
		     AC_PATH_XTRA
Packit 324a5c
		     if test "x$no_x" = xyes; then
Packit 324a5c
		       use_xlib="no (requires X development libraries)"
Packit 324a5c
		     else
Packit 324a5c
		       xlib_NONPKGCONFIG_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext $X_EXTRA_LIBS"
Packit 324a5c
		       xlib_NONPKGCONFIG_CFLAGS=$X_CFLAGS
Packit 324a5c
		     fi])
Packit 324a5c
Packit 324a5c
  AC_CHECK_HEADER(sys/ipc.h)
Packit 324a5c
  AC_CHECK_HEADER(sys/shm.h)
Packit 324a5c
Packit 324a5c
  if test "$ac_cv_header_sys_ipc_h" = "yes" -a "$ac_cv_header_sys_shm_h" = "yes"; then
Packit 324a5c
      AC_MSG_CHECKING(whether shmctl IPC_RMID allowes subsequent attaches)
Packit 324a5c
      AC_TRY_RUN([
Packit 324a5c
		  #include <sys/types.h>
Packit 324a5c
		  #include <sys/ipc.h>
Packit 324a5c
		  #include <sys/shm.h>
Packit 324a5c
		  int main()
Packit 324a5c
		  {
Packit 324a5c
		      char *shmaddr;
Packit 324a5c
		      int id = shmget (IPC_PRIVATE, 4, IPC_CREAT | 0600);
Packit 324a5c
		      if (id == -1) return 2;
Packit 324a5c
		      shmaddr = shmat (id, 0, 0);
Packit 324a5c
		      shmctl (id, IPC_RMID, 0);
Packit 324a5c
		      if ((char*) shmat (id, 0, 0) == (char*) -1) {
Packit 324a5c
			  shmdt (shmaddr);
Packit 324a5c
			  return 1;
Packit 324a5c
		      }
Packit 324a5c
		      shmdt (shmaddr);
Packit 324a5c
		      shmdt (shmaddr);
Packit 324a5c
		      return 0;
Packit 324a5c
		  }
Packit 324a5c
		  ],
Packit 324a5c
		  AC_DEFINE(IPC_RMID_DEFERRED_RELEASE, 1,
Packit 324a5c
			    [Define to 1 if shared memory segments are released deferred.])
Packit 324a5c
		  AC_MSG_RESULT(yes),
Packit 324a5c
		  AC_MSG_RESULT(no),
Packit 324a5c
		  AC_MSG_RESULT(assuming no))
Packit 324a5c
      fi
Packit 324a5c
Packit 324a5c
      AC_CHECK_HEADERS([X11/extensions/XShm.h X11/extensions/shmproto.h X11/extensions/shmstr.h], [], [],
Packit 324a5c
		       [#include <X11/Xlibint.h>
Packit 324a5c
			#include <X11/Xproto.h>])
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(xlib_xrender, Xlib Xrender, auto, [
Packit 324a5c
  if test "x$use_xlib" != "xyes"; then
Packit 324a5c
    use_xlib_xrender="no (requires --enable-xlib)"
Packit 324a5c
  else
Packit 324a5c
    dnl Check for Xrender header files if the Xrender package is not installed:
Packit 324a5c
    xlib_xrender_BASE=cairo-xlib
Packit 324a5c
    xlib_xrender_REQUIRES="xrender >= 0.6"
Packit 324a5c
    PKG_CHECK_MODULES(xlib_xrender, $xlib_xrender_REQUIRES, ,
Packit 324a5c
		      [xlib_xrender_REQUIRES=""
Packit 324a5c
		       old_CPPFLAGS=$CPPFLAGS
Packit 324a5c
		       CPPFLAGS="$CPPFLAGS $xlib_CFLAGS $xlib_NONPKGCONFIG_CFLAGS"
Packit 324a5c
		       AC_CHECK_HEADER(X11/extensions/Xrender.h,
Packit 324a5c
				       [xlib_xrender_NONPKGCONFIG_LIBS="-lXrender"],
Packit 324a5c
				       [use_xlib_xrender="no (requires $xlib_xrender_REQUIRES http://freedesktop.org/Software/xlibs)"],
Packit 324a5c
				       [#include <X11/X.h>])
Packit 324a5c
		       CPPFLAGS=$old_CPPFLAGS
Packit 324a5c
		      ])
Packit 324a5c
Packit 324a5c
    old_CFLAGS=$CFLAGS
Packit 324a5c
    old_LIBS=$LIBS
Packit 324a5c
    CFLAGS="$CFLAGS $xlib_CFLAGS $xlib_NONPKGCONFIG_CFLAGS $xlib_xrender_CFLAGS $xlib_xrender_NONPKGCONFIG_CFLAGS"
Packit 324a5c
    LIBS="$LIBS $xlib_LIBS $xlib_NONPKGCONFIG_LIBS $xlib_xrender_LIBS $xlib_xrender_NONPKGCONFIG_LIBS"
Packit 324a5c
    AC_CHECK_FUNCS([XRenderCreateSolidFill XRenderCreateLinearGradient XRenderCreateRadialGradient XRenderCreateConicalGradient])
Packit 324a5c
    CFLAGS=$old_CFLAGS
Packit 324a5c
    LIBS=$old_LIBS
Packit 324a5c
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(xcb, XCB, auto, [
Packit 324a5c
  xcb_REQUIRES="xcb >= 1.6 xcb-render >= 1.6"
Packit 324a5c
  PKG_CHECK_MODULES(xcb, $xcb_REQUIRES, ,
Packit 324a5c
		    [use_xcb="no (requires $xcb_REQUIRES http://xcb.freedesktop.org)"])
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(xlib_xcb, Xlib/XCB, no, [
Packit 324a5c
  if test "x$use_xcb" = "xyes" -a "x$use_xlib" = "xyes"; then
Packit 324a5c
    xlib_xcb_REQUIRES="x11-xcb"
Packit 324a5c
    PKG_CHECK_MODULES(xlib_xcb, $xlib_xcb_REQUIRES, ,
Packit 324a5c
		      [use_xlib_xcb="no (requires $xlib_xcb_REQUIRES http://xcb.freedesktop.org)"])
Packit 324a5c
  else
Packit 324a5c
    use_xlib_xcb="no (requires both --enable-xlib and --enable-xcb)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(xcb_shm, XCB/SHM, auto, [
Packit 324a5c
  if test "x$use_xcb" = "xyes"; then
Packit 324a5c
      xcb_shm_REQUIRES="xcb-shm"
Packit 324a5c
      PKG_CHECK_MODULES(xcb_shm, $xcb_shm_REQUIRES, ,
Packit 324a5c
			[use_xcb_shm="no (requires $xcb_shm http://xcb.freedesktop.org)"])
Packit 324a5c
  else
Packit 324a5c
    use_xcb_shm="no (requires --enable-xcb)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(qt, Qt, no, [
Packit 324a5c
  qt_REQUIRES="QtGui >= 4.4.0"
Packit 324a5c
  PKG_CHECK_MODULES(qt, $qt_REQUIRES, ,
Packit 324a5c
		    [qt_REQUIRES=""
Packit 324a5c
		     use_qt="no (requires Qt4 development libraries)"
Packit 324a5c
		     ])
Packit 324a5c
  qt_NONPKGCONFIG_LIBS="-lstdc++"
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(quartz, Quartz, auto, [
Packit 324a5c
  dnl There is no pkgconfig for quartz; lets do a header check
Packit 324a5c
  AC_CHECK_HEADER(ApplicationServices/ApplicationServices.h, , [use_quartz="no (requires ApplicationServices framework)"])
Packit 324a5c
  if test "x$use_quartz" != "xyes" ; then
Packit 324a5c
    dnl check for CoreGraphics as a separate framework
Packit 324a5c
    AC_CHECK_HEADER(CoreGraphics/CoreGraphics.h, , [use_quartz="no (requires CoreGraphics framework)"])
Packit 324a5c
    quartz_LIBS="-Xlinker -framework -Xlinker CoreGraphics"
Packit 324a5c
  else
Packit 324a5c
    quartz_LIBS="-Xlinker -framework -Xlinker ApplicationServices"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FONT_BACKEND(quartz_font, Quartz, auto, [
Packit 324a5c
  use_quartz_font=$use_quartz
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(quartz_image, Quartz Image, no, [
Packit 324a5c
  use_quartz_image=$use_quartz
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(win32, Microsoft Windows, auto, [
Packit 324a5c
  if test "x$have_windows" != xyes; then
Packit 324a5c
    use_win32="no (requires a Win32 platform)"
Packit 324a5c
  fi
Packit 324a5c
  win32_LIBS="-lgdi32 -lmsimg32"
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FONT_BACKEND(win32_font, Microsoft Windows, auto, [
Packit 324a5c
  use_win32_font=$use_win32
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
test_win32_printing=no
Packit 324a5c
if test "x$use_win32" = "xyes"; then
Packit 324a5c
  AC_CHECK_PROG(GS, gs, gs)
Packit 324a5c
  if test "$GS"; then
Packit 324a5c
    AC_DEFINE([CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE], 1, [Define to 1 if the Win32 Printing backend can be tested (needs ghostscript)])
Packit 324a5c
    test_win32_printing="yes"
Packit 324a5c
  else
Packit 324a5c
    AC_MSG_WARN([Win32 Printing backend will not be tested since ghostscript is not available])
Packit 324a5c
    test_win32_printing="no (requires ghostscript)"
Packit 324a5c
  fi
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(CAIRO_CAN_TEST_WIN32_PRINTING_SURFACE, test "x$test_win32_printing" = "xyes")
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(skia, Skia, no, [
Packit 324a5c
  AC_ARG_WITH([skia],
Packit 324a5c
	      [AS_HELP_STRING([--with-skia=/path/to/skia],
Packit 324a5c
			      [directory to find compiled skia sources])],
Packit 324a5c
	      [skia_DIR="$withval"],
Packit 324a5c
	      [skia_DIR="`pwd`/../skia"])
Packit 324a5c
  AC_ARG_WITH([skia-build-type],
Packit 324a5c
	      [AS_HELP_STRING([--with-skia-build-type=(Release|Debug)]
Packit 324a5c
			      [build of skia to link with, default is Release])],
Packit 324a5c
	      [skia_BUILD_TYPE="$withval"],
Packit 324a5c
	      [skia_BUILD_TYPE="Release"])
Packit 324a5c
  skia_NONPKGCONFIG_CFLAGS="-I$skia_DIR/include/config -I$skia_DIR/include/core -I$skia_DIR/include/effects"
Packit 324a5c
  if test "x$skia_BUILD_TYPE" = "xRelease"; then
Packit 324a5c
  	skia_NONPKGCONFIG_CFLAGS="-DSK_RELEASE -DSK_CAN_USE_FLOAT $skia_NONPKGCONFIG_CFLAGS"
Packit 324a5c
  fi
Packit 324a5c
  skia_NONPKGCONFIG_LIBS="-L$skia_DIR/out/$skia_BUILD_TYPE/lib.target/ -lskia -lstdc++"
Packit 324a5c
  AC_SUBST(skia_DIR)
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(os2, OS/2, no, [
Packit 324a5c
  case "$host" in
Packit 324a5c
    *-*-os2*)
Packit 324a5c
      :
Packit 324a5c
      ;;
Packit 324a5c
    *)
Packit 324a5c
      use_os2="no (requires an OS/2 platform)"
Packit 324a5c
      ;;
Packit 324a5c
  esac
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(beos, BeOS/Zeta, no, [
Packit 324a5c
  case "$host" in
Packit 324a5c
    *-*-beos)
Packit 324a5c
      beos_LIBS=""
Packit 324a5c
      dnl Add libbe and libzeta if available
Packit 324a5c
      AC_CHECK_LIB(be,main,beos_LIBS="$beos_LIBS -lbe")
Packit 324a5c
      AC_CHECK_LIB(zeta,main,beos_LIBS="$beos_LIBS -lzeta")
Packit 324a5c
      ;;
Packit 324a5c
    *)
Packit 324a5c
      use_beos="no (requires a BeOS platform)"
Packit 324a5c
      ;;
Packit 324a5c
  esac
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(drm, DRM, no, [
Packit 324a5c
  drm_REQUIRES="libudev >= 136"
Packit 324a5c
  PKG_CHECK_MODULES(drm, $drm_REQUIRES, ,
Packit 324a5c
   [use_drm="no (requires $drm_REQUIRES, udev is available from git://git.kernel.org/pub/scm/linux/hotplug/udev.git)"])
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(gallium, Gallium3D, no, [
Packit 324a5c
  if test "x$use_drm" = "xyes"; then
Packit 324a5c
      AC_ARG_WITH([gallium],
Packit 324a5c
		  [AS_HELP_STRING([--with-gallium=/path/to/mesa],
Packit 324a5c
				  [directory to find gallium enabled mesa])],
Packit 324a5c
		  [mesa_DIR="$withval"],
Packit 324a5c
		  [mesa_DIR="`pwd`/../mesa"])
Packit 324a5c
      gallium_DIR="$mesa_DIR/src/gallium"
Packit 324a5c
      gallium_NONPKGCONFIG_CFLAGS="-I$mesa_DIR/include -I$mesa_DIR/src/mesa -I$gallium_DIR/include -I$gallium_DIR/auxiliary"
Packit 324a5c
      gallium_NONPKGCONFIG_LIBS="-lGL"
Packit 324a5c
      AC_SUBST(mesa_DIR)
Packit 324a5c
      AC_SUBST(gallium_DIR)
Packit 324a5c
  else
Packit 324a5c
    use_gallium="no (requires --enable-drm)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(png, PNG, yes, [
Packit 324a5c
  use_png=no
Packit 324a5c
  AC_ARG_VAR([png_REQUIRES], [module name for libpng to search for using pkg-config])
Packit 324a5c
  if test "x$png_REQUIRES" = x; then
Packit 324a5c
    # libpng13 is GnuWin32's libpng-1.2.8 :-(
Packit 324a5c
    for l in libpng libpng14 libpng12 libpng13 libpng10; do
Packit 324a5c
      if $PKG_CONFIG --exists $l ; then
Packit 324a5c
        png_REQUIRES=$l
Packit 324a5c
        use_png=yes
Packit 324a5c
        break
Packit 324a5c
      fi
Packit 324a5c
    done
Packit 324a5c
  else
Packit 324a5c
    use_png=yes
Packit 324a5c
  fi
Packit 324a5c
Packit 324a5c
  if test "x$use_png" = "xyes" ; then 
Packit 324a5c
    PKG_CHECK_MODULES(png, $png_REQUIRES, , : )
Packit 324a5c
  else
Packit 324a5c
    AC_MSG_WARN([Could not find libpng in the pkg-config search path])
Packit 324a5c
  fi    
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(gl, OpenGL, no, [
Packit 324a5c
  gl_REQUIRES="gl"
Packit 324a5c
  PKG_CHECK_MODULES(gl, $gl_REQUIRES,, [
Packit 324a5c
	  dnl Fallback to searching for headers
Packit 324a5c
	  AC_CHECK_HEADER(GL/gl.h,, [use_gl="no (gl.pc nor OpenGL headers not found)"])
Packit 324a5c
	  if test "x$use_gl" = "xyes"; then
Packit 324a5c
	      gl_NONPKGCONFIG_CFLAGS=
Packit 324a5c
	      gl_NONPKGCONFIG_LIBS="-lGL"
Packit 324a5c
	  fi])
Packit 324a5c
Packit 324a5c
  if test "x$have_dl" = "xyes" -a "x$have_dlsym" = "xyes"; then
Packit 324a5c
    gl_LIBS="$gl_LIBS -ldl"
Packit 324a5c
  fi
Packit 324a5c
Packit 324a5c
  need_glx_functions=yes
Packit 324a5c
  need_wgl_functions=yes
Packit 324a5c
  need_egl_functions=yes
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(glesv2, OpenGLESv2, no, [
Packit 324a5c
  glesv2_REQUIRES="glesv2"
Packit 324a5c
  PKG_CHECK_MODULES(glesv2, $glesv2_REQUIRES,, [
Packit 324a5c
	  dnl Fallback to searching for headers
Packit 324a5c
	  AC_CHECK_HEADER(GLES2/gl2.h,, [use_glesv2="no (glesv2.pc nor OpenGL ES 2.0 headers not found)"])
Packit 324a5c
	  if test "x$use_glesv2" = "xyes"; then
Packit 324a5c
	      glesv2_NONPKGCONFIG_CFLAGS=
Packit 324a5c
	      glesv2_NONPKGCONFIG_LIBS="-lGLESv2"
Packit 324a5c
	  fi])
Packit 324a5c
Packit 324a5c
  if test "x$have_dl" = "xyes" -a "x$have_dlsym" = "xyes"; then
Packit 324a5c
    glesv2_LIBS="$glesv2_LIBS -ldl"
Packit 324a5c
  fi
Packit 324a5c
Packit 324a5c
  if test "x$use_glesv2" = "xyes" -a "x$use_gl" = "xyes"; then
Packit 324a5c
      AC_MSG_ERROR([use either --enable-gl=yes or --enable-glesv2=yes. Not both at the same time.])
Packit 324a5c
  fi
Packit 324a5c
Packit 324a5c
  need_egl_functions=yes
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(cogl, Cogl, no, [
Packit 324a5c
  cogl_REQUIRES="cogl-2.0-experimental"
Packit 324a5c
  PKG_CHECK_MODULES(cogl, $cogl_REQUIRES,, [use_cogl="no"])
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(directfb, directfb, no, [
Packit 324a5c
  directfb_REQUIRES=directfb
Packit 324a5c
  PKG_CHECK_MODULES(directfb, $directfb_REQUIRES, ,
Packit 324a5c
		    [use_directfb="no (requires $directfb_REQUIRES http://www.directfb.org)"])
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(vg, OpenVG, no, [
Packit 324a5c
  dnl There is no pkgconfig for OpenVG; lets do a header check
Packit 324a5c
  AC_CHECK_HEADER(VG/openvg.h,, [use_vg="no (OpenVG headers not found)"])
Packit 324a5c
  if test "x$use_vg" = "xyes"; then
Packit 324a5c
      vg_NONPKGCONFIG_CFLAGS=
Packit 324a5c
      vg_NONPKGCONFIG_LIBS="-lOpenVG"
Packit 324a5c
      need_egl_functions=yes
Packit 324a5c
      need_glx_functions=yes
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(egl, EGL, auto, [
Packit 324a5c
  if test "x$need_egl_functions" = "xyes"; then
Packit 324a5c
      egl_REQUIRES="egl"
Packit 324a5c
      PKG_CHECK_MODULES(egl, $egl_REQUIRES, ,
Packit 324a5c
		    [egl_REQUIRES=""
Packit 324a5c
		     AC_CHECK_HEADER(EGL/egl.h,, [use_egl="no (EGL headers not found)"])
Packit 324a5c
		     if test "x$use_egl" = "xyes"; then
Packit 324a5c
			 egl_NONPKGCONFIG_CFLAGS=
Packit 324a5c
			 egl_NONPKGCONFIG_LIBS=
Packit 324a5c
			 save_LIBS="$LIBS"
Packit 324a5c
			 other_egl_LIBS=""
Packit 324a5c
			 # Temporary workaround for missing link from egl13
Packit 324a5c
			 AC_CHECK_LIB(csi, csi_stream_attachresource, other_egl_LIBS="-lcsi")
Packit 324a5c
			 LIBS="$other_egl_LIBS $LIBS"
Packit 324a5c
			 for egl_lib in EGL egl13 egl12 egl11; do
Packit 324a5c
			     if test -z "$egl_NONPKGCONFIG_LIBS"; then
Packit 324a5c
				 AC_CHECK_LIB($egl_lib, eglGetError, egl_NONPKGCONFIG_LIBS="-l$egl_lib")
Packit 324a5c
			     fi
Packit 324a5c
			 done
Packit 324a5c
			 if test -z "$egl_NONPKGCONFIG_LIBS"; then
Packit 324a5c
			     use_egl="no (EGL library not found)"
Packit 324a5c
			 else
Packit 324a5c
			     egl_NONPKGCONFIG_LIBS="$egl_NONPKGCONFIG_LIBS $other_egl_LIBS"
Packit 324a5c
			 fi
Packit 324a5c
			 LIBS="$save_LIBS"
Packit 324a5c
		     fi
Packit 324a5c
  	])
Packit 324a5c
  else
Packit 324a5c
      use_egl="no (not required by any backend)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(glx, GLX, auto, [
Packit 324a5c
  if test "x$need_glx_functions" = "xyes"; then
Packit 324a5c
    save_CFLAGS="$CFLAGS"
Packit 324a5c
    CFLAGS="$CFLAGS $gl_CFLAGS $gl_NONPKGCONFIG_CFLAGS"
Packit 324a5c
    AC_CHECK_HEADER(GL/glx.h,, [use_glx="no (GLX headers not found)"])
Packit 324a5c
    glx_NONPKGCONFIG_CFLAGS=
Packit 324a5c
    glx_NONPKGCONFIG_LIBS="-lGL"
Packit 324a5c
    CFLAGS="$save_CFLAGS"
Packit 324a5c
  else
Packit 324a5c
      use_glx="no (not required by any backend)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(wgl, WGL, auto, [
Packit 324a5c
  if test "x$need_wgl_functions" = "xyes"; then
Packit 324a5c
    AC_CHECK_HEADER(windows.h,, [use_wgl="no (WGL headers not found)"])
Packit 324a5c
  else
Packit 324a5c
      use_wgl="no (not required by any backend)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
any2ppm_cs=no
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(script, script, yes, [
Packit 324a5c
  any2ppm_cs=yes
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
# We use pkg-config to look for freetype2, but fall back to
Packit 324a5c
# freetype-config if it fails.  We prefer pkg-config, since we can
Packit 324a5c
# then just put freetype2 >= $FREETYPE_MIN_VERSION in
Packit 324a5c
# Requires.private, but at least up to 2003-06-07, there was no
Packit 324a5c
# freetype2.pc in the release.
Packit 324a5c
#
Packit 324a5c
# FreeType versions come in three forms:
Packit 324a5c
#   release (such as 2.1.9)
Packit 324a5c
#   libtool (such as 9.7.3) (returned by freetype-config and pkg-config)
Packit 324a5c
#   platform-specific/soname (such as 6.3.4)
Packit 324a5c
# and they recommend you never use the platform-specific version
Packit 324a5c
# (see docs/VERSION.DLL in freetype2 sources)
Packit 324a5c
#
Packit 324a5c
# Set these as appropriate:
Packit 324a5c
Packit 324a5c
# release number - for information only
Packit 324a5c
FREETYPE_MIN_RELEASE=2.1.9
Packit 324a5c
# libtool-specific version - this is what is checked
Packit 324a5c
FREETYPE_MIN_VERSION=9.7.3
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FONT_BACKEND(ft, FreeType, auto, [
Packit 324a5c
Packit 324a5c
    PKG_CHECK_MODULES(FREETYPE, freetype2 >= $FREETYPE_MIN_VERSION,
Packit 324a5c
                      [freetype_pkgconfig=yes],
Packit 324a5c
		      [freetype_pkgconfig=no])
Packit 324a5c
  
Packit 324a5c
    if test "x$freetype_pkgconfig" = "xyes"; then
Packit 324a5c
      ft_REQUIRES="freetype2 >= $FREETYPE_MIN_VERSION $ft_REQUIRES"
Packit 324a5c
    else
Packit 324a5c
  
Packit 324a5c
      if test -z "$FREETYPE_CONFIG"; then
Packit 324a5c
        AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
Packit 324a5c
      fi
Packit 324a5c
      if test "x$FREETYPE_CONFIG" = "xno" ; then
Packit 324a5c
        use_ft='no (freetype-config not found in path or $FREETYPE_CONFIG)'
Packit 324a5c
      else
Packit 324a5c
        AC_MSG_CHECKING(freetype2 libtool version)
Packit 324a5c
Packit 324a5c
        FREETYPE_VERSION=`$FREETYPE_CONFIG --version`
Packit 324a5c
	AX_COMPARE_VERSION([$FREETYPE_VERSION], [gt], [$FREETYPE_MIN_VERSION],
Packit 324a5c
			   [AC_MSG_RESULT($FREETYPE_VERSION - OK)
Packit 324a5c
			   ft_NONPKGCONFIG_CFLAGS=`$FREETYPE_CONFIG --cflags`
Packit 324a5c
			   ft_NONPKGCONFIG_LIBS=`$FREETYPE_CONFIG --libs`],
Packit 324a5c
			   [AC_MSG_RESULT($FREETYPE_VERSION - Too old)
Packit 324a5c
			   use_ft="no ($FREETYPE_VERSION found; version $FREETYPE_MIN_VERSION from release $FREETYPE_MIN_RELEASE required)"])
Packit 324a5c
      fi
Packit 324a5c
    fi
Packit 324a5c
Packit 324a5c
  ft_CFLAGS="$FREETYPE_CFLAGS"
Packit 324a5c
  ft_LIBS="$FREETYPE_LIBS"
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
FONTCONFIG_MIN_VERSION=2.2.95
Packit 324a5c
CAIRO_ENABLE_FONT_BACKEND(fc, Fontconfig, auto, [
Packit 324a5c
  use_fc=$use_ft
Packit 324a5c
  if test "x$use_fc" = "xyes"; then
Packit 324a5c
    fc_REQUIRES="fontconfig >= $FONTCONFIG_MIN_VERSION"
Packit 324a5c
    PKG_CHECK_MODULES(FONTCONFIG, $fc_REQUIRES,,
Packit 324a5c
		      [use_fc="no (requires $fc_REQUIRES)"])
Packit 324a5c
  fi
Packit 324a5c
  fc_CFLAGS="$FONTCONFIG_CFLAGS"
Packit 324a5c
  fc_LIBS="$FONTCONFIG_LIBS"
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
if test "x$use_ft" = "xyes"; then
Packit 324a5c
  _save_libs="$LIBS"
Packit 324a5c
  _save_cflags="$CFLAGS"
Packit 324a5c
  LIBS="$LIBS $ft_LIBS"
Packit 324a5c
  CFLAGS="$CFLAGS $ft_CFLAGS"
Packit 324a5c
Packit 324a5c
  AC_CHECK_FUNCS(FT_Get_X11_Font_Format FT_GlyphSlot_Embolden FT_GlyphSlot_Oblique FT_Load_Sfnt_Table FT_Library_SetLcdFilter)
Packit 324a5c
Packit 324a5c
  LIBS="$_save_libs"
Packit 324a5c
  CFLAGS="$_save_cflags"
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
if test "x$use_fc" = "xyes"; then
Packit 324a5c
  CAIRO_CHECK_FUNCS_WITH_FLAGS(FcInit FcFini, [$FONTCONFIG_CFLAGS], [$FONTCONFIG_LIBS])
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(ps, PostScript, yes, [
Packit 324a5c
    # The ps backend requires zlib.
Packit 324a5c
    use_ps=$have_libz
Packit 324a5c
    ps_NONPKGCONFIG_LIBS=-lz
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
SPECTRE_VERSION_REQUIRED=0.2.0
Packit 324a5c
test_ps=no
Packit 324a5c
any2ppm_ps=no
Packit 324a5c
if test "x$use_ps" = "xyes"; then
Packit 324a5c
  AC_CHECK_PROG(GS, gs, gs)
Packit 324a5c
  if test "$GS"; then
Packit 324a5c
    AC_DEFINE([CAIRO_CAN_TEST_PS_SURFACE], 1, [Define to 1 if the PS backend can be tested (needs ghostscript)])
Packit 324a5c
    test_ps="yes"
Packit 324a5c
  else
Packit 324a5c
    AC_MSG_WARN([PS backend will not be tested since ghostscript is not available])
Packit 324a5c
    test_ps="no (requires ghostscript)"
Packit 324a5c
  fi
Packit 324a5c
Packit 324a5c
  libspectre_DEPENDENCY="libspectre >= $SPECTRE_VERSION_REQUIRED"
Packit 324a5c
  PKG_CHECK_MODULES(LIBSPECTRE, $libspectre_DEPENDENCY,
Packit 324a5c
		    [any2ppm_ps=yes],
Packit 324a5c
		    [test_ps="no (requires libspectre)"])
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(CAIRO_CAN_TEST_PS_SURFACE, test "x$test_ps" = "xyes")
Packit 324a5c
AM_CONDITIONAL(CAIRO_HAS_SPECTRE, test "x$any2ppm_ps" = "xyes")
Packit 324a5c
if test "x$any2ppm_ps" = "xyes"; then
Packit 324a5c
    AC_DEFINE([CAIRO_HAS_SPECTRE], 1, [Define to 1 if libspectre is available])
Packit 324a5c
fi
Packit 324a5c
AC_SUBST(LIBSPECTRE_CFLAGS)
Packit 324a5c
AC_SUBST(LIBSPECTRE_LIBS)
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(pdf, PDF, yes, [
Packit 324a5c
    # The pdf backend requires zlib.
Packit 324a5c
    use_pdf=$have_libz
Packit 324a5c
    pdf_NONPKGCONFIG_LIBS=-lz
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
# poppler-0.17.4 fixes text-pattern and text-transform
Packit 324a5c
POPPLER_VERSION_REQUIRED=0.17.4
Packit 324a5c
test_pdf=no
Packit 324a5c
any2ppm_pdf=no
Packit 324a5c
if test "x$use_pdf" = "xyes"; then
Packit 324a5c
  poppler_DEPENDENCY="poppler-glib >= $POPPLER_VERSION_REQUIRED"
Packit 324a5c
  PKG_CHECK_MODULES(POPPLER, $poppler_DEPENDENCY,
Packit 324a5c
		    [CAIRO_CHECK_FUNCS_WITH_FLAGS(poppler_page_render, [$POPPLER_CFLAGS], [$POPPLER_LIBS],
Packit 324a5c
                    [test_pdf=yes; any2ppm_pdf=yes],
Packit 324a5c
		    [test_pdf="no (requires $poppler_DEPENDENCY)"])],
Packit 324a5c
		    [test_pdf="no (requires $poppler_DEPENDENCY)"])
Packit 324a5c
  if test "x$test_pdf" = "xyes"; then
Packit 324a5c
    AC_DEFINE([CAIRO_CAN_TEST_PDF_SURFACE], 1, [Define to 1 if the PDF backend can be tested (need poppler and other dependencies for pdf2png)])
Packit 324a5c
  else
Packit 324a5c
    AC_MSG_WARN([PDF backend will not be tested since poppler >= $POPPLER_VERSION_REQUIRED is not available])
Packit 324a5c
  fi
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(CAIRO_CAN_TEST_PDF_SURFACE, test "x$test_pdf" = "xyes")
Packit 324a5c
AC_SUBST(POPPLER_CFLAGS)
Packit 324a5c
AC_SUBST(POPPLER_LIBS)
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(CAIRO_HAS_MULTI_PAGE_SURFACES, test "x$use_ps" = "xyes" -o "x$use_pdf" = "xyes")
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(svg, SVG, yes, [
Packit 324a5c
  if test "x$use_png" != "xyes"; then
Packit 324a5c
    use_svg="no (requires --enable-png)"
Packit 324a5c
  fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
LIBRSVG_VERSION_REQUIRED=2.35.0
Packit 324a5c
test_svg=no
Packit 324a5c
any2ppm_svg=no
Packit 324a5c
if test "x$use_svg" = "xyes"; then
Packit 324a5c
  librsvg_DEPENDENCY="librsvg-2.0 >= $LIBRSVG_VERSION_REQUIRED"
Packit 324a5c
  PKG_CHECK_MODULES(LIBRSVG, $librsvg_DEPENDENCY gdk-2.0,
Packit 324a5c
		    [CAIRO_CHECK_FUNCS_WITH_FLAGS(rsvg_pixbuf_from_file, [$LIBRSVG_CFLAGS], [$LIBRSVG_LIBS],
Packit 324a5c
                    [test_svg=yes; any2ppm_svg=yes],
Packit 324a5c
		    [test_svg="no (requires $librsvg_DEPENDENCY)"])],
Packit 324a5c
		    [test_svg="no (requires $librsvg_DEPENDENCY)"])
Packit 324a5c
  if test "x$test_svg" = "xyes"; then
Packit 324a5c
    AC_DEFINE([CAIRO_CAN_TEST_SVG_SURFACE], 1, [Define to 1 if the SVG backend can be tested])
Packit 324a5c
  else
Packit 324a5c
    AC_MSG_WARN([SVG backend will not be tested since librsvg >= $LIBRSVG_VERSION_REQUIRED is not available])
Packit 324a5c
  fi
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(CAIRO_CAN_TEST_SVG_SURFACE, test "x$test_svg" = "xyes")
Packit 324a5c
AC_SUBST(LIBRSVG_CFLAGS)
Packit 324a5c
AC_SUBST(LIBRSVG_LIBS)
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
dnl XXX make this a private feature?
Packit 324a5c
CAIRO_ENABLE(test_surfaces, test surfaces, no)
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(image, image, always, [
Packit 324a5c
  pixman_REQUIRES="pixman-1 >= 0.30.0"
Packit 324a5c
  PKG_CHECK_MODULES(pixman, $pixman_REQUIRES, ,
Packit 324a5c
    [use_image="no (requires $pixman_REQUIRES http://cairographics.org/releases/)"])
Packit 324a5c
  image_REQUIRES=$pixman_REQUIRES
Packit 324a5c
  image_CFLAGS=$pixman_CFLAGS
Packit 324a5c
  image_LIBS=$pixman_LIBS
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
if pkg-config --exists 'pixman-1 >= 0.27.1'; then
Packit 324a5c
    AC_DEFINE([HAS_PIXMAN_GLYPHS], 1, [Enable pixman glyph cache])
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(mime, mime, always)
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(recording, recording, always)
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(observer, observer, always)
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(tee, tee, no)
Packit 324a5c
CAIRO_ENABLE_SURFACE_BACKEND(xml, xml, no, [
Packit 324a5c
    use_xml=$have_libz
Packit 324a5c
    xml_NONPKGCONFIG_LIBS=-lz
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FONT_BACKEND(user, user, always)
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl
Packit 324a5c
dnl This needs to be last on our list of features so that the pthread libs and flags
Packit 324a5c
dnl gets prefixed in front of everything else in CAIRO_{CFLAGS,LIBS}.
Packit 324a5c
dnl
Packit 324a5c
have_real_pthread=no
Packit 324a5c
have_pthread=no
Packit 324a5c
CAIRO_ENABLE(pthread, pthread, auto, [CAIRO_CONFIGURE_PTHREAD])
Packit 324a5c
AM_CONDITIONAL(HAVE_REAL_PTHREAD, test "x$use_pthread" = "xyes" -a "x$have_real_pthread" = "xyes")
Packit 324a5c
AM_CONDITIONAL(HAVE_PTHREAD, test "x$use_pthread" = "xyes")
Packit 324a5c
AC_SUBST(pthread_CFLAGS)
Packit 324a5c
AC_SUBST(pthread_LIBS)
Packit 324a5c
AC_SUBST(real_pthread_CFLAGS)
Packit 324a5c
AC_SUBST(real_pthread_LIBS)
Packit 324a5c
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl Build gobject integration library
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE_FUNCTIONS(gobject, gobject, auto, [
Packit 324a5c
  gobject_REQUIRES="gobject-2.0 glib-2.0 >= 2.14"
Packit 324a5c
  PKG_CHECK_MODULES(GOBJECT, $gobject_REQUIRES, ,
Packit 324a5c
    [use_gobject="no (requires $gobject_REQUIRES http://download.gnome.org/pub/GNOME/sources/glib/)"])
Packit 324a5c
  gobject_NONPKGCONFIG_EXTRA_LIBS="-L\${libdir} -lcairo-gobject"
Packit 324a5c
])
Packit 324a5c
dnl I'm too lazy to fix the caching properly
Packit 324a5c
if test "x$use_gobject" = "xyes"; then
Packit 324a5c
  PKG_CHECK_MODULES(GOBJECT, $gobject_REQUIRES, : )
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl Default to quick testing during development, but force a full test before
Packit 324a5c
dnl release
Packit 324a5c
Packit 324a5c
AC_ARG_ENABLE(full-testing,
Packit 324a5c
  AS_HELP_STRING([--enable-full-testing],
Packit 324a5c
                 [Sets the test suite to perform full testing by default, which
Packit 324a5c
		  will dramatically slow down make check, but is a
Packit 324a5c
		  *requirement* before release.]), [
Packit 324a5c
if test "x$enableval" = "xyes"; then
Packit 324a5c
    CAIRO_TEST_MODE=full
Packit 324a5c
    AC_SUBST(CAIRO_TEST_MODE)
Packit 324a5c
fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl Build the external converter if we have any of the test backends
Packit 324a5c
AM_CONDITIONAL(BUILD_ANY2PPM,
Packit 324a5c
	       test "x$any2ppm_svg" = "xyes" \
Packit 324a5c
	         -o "x$any2ppm_pdf" = "xyes" \
Packit 324a5c
		 -o "x$any2ppm_ps"  = "xyes" \
Packit 324a5c
		 -o "x$any2ppm_cs"  = "xyes")
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl Some utilities need to dlopen the shared libraries, so they need to
Packit 324a5c
dnl know how libtools will name them
Packit 324a5c
Packit 324a5c
case $host in
Packit 324a5c
*-*-darwin*)
Packit 324a5c
	SHLIB_EXT="dylib"
Packit 324a5c
	;;
Packit 324a5c
*)
Packit 324a5c
	SHLIB_EXT="so"
Packit 324a5c
	;;
Packit 324a5c
esac
Packit 324a5c
AC_DEFINE_UNQUOTED(SHARED_LIB_EXT, "${SHLIB_EXT}", [Shared library file extension])
Packit 324a5c
AC_SUBST(SHLIB_EXT)
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
dnl The tracing utility requires LD_PRELOAD, so only build it for systems
Packit 324a5c
dnl that are known to work.
Packit 324a5c
Packit 324a5c
case $host in
Packit 324a5c
*-linux*|*-*bsd*|*-solaris*|*-*-darwin*|*-dragonfly*|*-*-gnu*)
Packit 324a5c
	have_ld_preload="yes"
Packit 324a5c
	;;
Packit 324a5c
*)
Packit 324a5c
	have_ld_preload="no"
Packit 324a5c
	;;
Packit 324a5c
esac
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE(trace, cairo-trace, auto, [
Packit 324a5c
	if test "x$have_ld_preload" != "xyes" -o \
Packit 324a5c
		"x$have_libz" != "xyes" -o \
Packit 324a5c
		"x$have_real_pthread" != "xyes" -o \
Packit 324a5c
		"x$have_dlsym" != "xyes"; then
Packit 324a5c
		use_trace="no (requires dynamic linker and zlib and real pthreads)"
Packit 324a5c
	fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE(interpreter, cairo-script-interpreter, yes, [
Packit 324a5c
	if test "x$have_libz" != "xyes"; then
Packit 324a5c
		use_interpreter="no (requires zlib)"
Packit 324a5c
	fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
AC_CHECK_LIB(bfd, bfd_openr,
Packit 324a5c
	 [AC_CHECK_HEADER(bfd.h, [have_bfd=yes],
Packit 324a5c
	 [have_bfd=no])], [have_bfd=no])
Packit 324a5c
AC_CHECK_HEADER(libiberty.h,, [have_bfd=no])
Packit 324a5c
if test "x$have_bfd" = "xyes"; then
Packit 324a5c
    AC_DEFINE([HAVE_BFD], [1], [Define to 1 if you have the binutils development files installed])
Packit 324a5c
    BFD_LIBS=-lbfd
Packit 324a5c
    AC_SUBST(BFD_LIBS)
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
CAIRO_ENABLE(symbol_lookup, symbol-lookup, auto, [
Packit 324a5c
	if test "x$have_bfd" != "xyes"; then
Packit 324a5c
		use_symbol_lookup="no (requires bfd)"
Packit 324a5c
	fi
Packit 324a5c
])
Packit 324a5c
Packit 324a5c
PKG_CHECK_MODULES(glib, glib-2.0, have_glib=yes, have_glib=no)
Packit 324a5c
AC_SUBST(glib_CFLAGS)
Packit 324a5c
AC_SUBST(glib_LIBS)
Packit 324a5c
AM_CONDITIONAL(BUILD_SPHINX, test "x$have_glib" = "xyes" -a "x$have_windows" = "xno")
Packit 324a5c
Packit 324a5c
save_LIBS="$LIBS"
Packit 324a5c
AC_CHECK_LIB(rt, shm_open, shm_LIBS="-lrt")
Packit 324a5c
AC_SUBST(shm_LIBS)
Packit 324a5c
LIBS="$save_LIBS"
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
AC_ARG_ENABLE(some-floating-point,
Packit 324a5c
  AS_HELP_STRING([--disable-some-floating-point],
Packit 324a5c
                 [Disable certain code paths that rely heavily on double precision
Packit 324a5c
                  floating-point calculation. This option can improve
Packit 324a5c
                  performance on systems without a double precision floating-point
Packit 324a5c
                  unit, but might degrade performance on those that do.]), [
Packit 324a5c
if test "x$enableval" = "xno"; then
Packit 324a5c
  # A value of 'no' for $enableval means that they want to disable, which
Packit 324a5c
  # means 'yes' for $disable_some_floating_point.
Packit 324a5c
  disable_some_floating_point=yes
Packit 324a5c
fi
Packit 324a5c
], [disable_some_floating_point=no])
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(DISABLE_SOME_FLOATING_POINT,
Packit 324a5c
               test "x$disable_some_floating_point" = "xyes")
Packit 324a5c
if test "x$disable_some_floating_point" = "xyes"; then
Packit 324a5c
  AC_DEFINE(DISABLE_SOME_FLOATING_POINT, 1,
Packit 324a5c
            [Define to 1 to disable certain code paths that rely heavily on
Packit 324a5c
             double precision floating-point calculation])
Packit 324a5c
fi
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
dnl Extra stuff we need to do when building C++ code
Packit 324a5c
need_cxx="no"
Packit 324a5c
AS_IF([test "x$use_skia" = "xyes"], [need_cxx="yes"])
Packit 324a5c
AS_IF([test "x$use_qt" = "xyes"], [need_cxx="yes"])
Packit 324a5c
AS_IF([test "x$use_beos" = "xyes"], [need_cxx="yes"])
Packit 324a5c
Packit 324a5c
AM_CONDITIONAL(BUILD_CXX, test "x$need_cxx" = "xyes")
Packit 324a5c
Packit 324a5c
dnl ===========================================================================
Packit 324a5c
Packit 324a5c
# We use GTK+ for some utility/debugging tools
Packit 324a5c
PKG_CHECK_MODULES(gtk, "gtk+-2.0",have_gtk=yes, have_gtk=no)
Packit 324a5c
AM_CONDITIONAL(HAVE_GTK, test "x$have_gtk" = "xyes")
Packit 324a5c
Packit 324a5c
AC_CONFIG_FILES([
Packit 324a5c
Makefile
Packit 324a5c
boilerplate/Makefile
Packit 324a5c
src/Makefile
Packit 324a5c
test/Makefile
Packit 324a5c
test/pdiff/Makefile
Packit 324a5c
perf/Makefile
Packit 324a5c
perf/micro/Makefile
Packit 324a5c
util/Makefile
Packit 324a5c
util/cairo-fdr/Makefile
Packit 324a5c
util/cairo-gobject/Makefile
Packit 324a5c
util/cairo-missing/Makefile
Packit 324a5c
util/cairo-script/Makefile
Packit 324a5c
util/cairo-script/examples/Makefile
Packit 324a5c
util/cairo-sphinx/Makefile
Packit 324a5c
util/cairo-trace/Makefile
Packit 324a5c
util/cairo-trace/cairo-trace
Packit 324a5c
doc/Makefile
Packit 324a5c
doc/public/Makefile
Packit 324a5c
])
Packit 324a5c
AC_CONFIG_COMMANDS([cairo-trace],
Packit 324a5c
		   [chmod a+x util/cairo-trace/cairo-trace])
Packit 324a5c
Packit 324a5c
AC_OUTPUT
Packit 324a5c
CAIRO_REPORT