AC_PREREQ(2.54) # cairo package version number, (as distinct from shared library version) # An odd micro number indicates in-progress development, (eg. from git/cvs) # An even micro number indicates a released version. m4_define(cairo_version_major, 1) m4_define(cairo_version_minor, 1) m4_define(cairo_version_micro, 11) AC_INIT([cairo], cairo_version_major.cairo_version_minor.cairo_version_micro, [http://bugs.freedesktop.org/enter_bug.cgi?product=cairo]) AC_CONFIG_SRCDIR(src/cairo.h) AC_CONFIG_HEADERS(config.h) AM_INIT_AUTOMAKE([1.7]) dnl =========================================================================== # libtool shared library version # Increment if the interface has additions, changes, removals. LT_CURRENT=10 # Increment any time the source changes; set to # 0 if you increment CURRENT LT_REVISION=0 # Increment if any interfaces have been added; set to 0 # if any interfaces have been removed. removal has # precedence over adding, so set to 0 if both happened. LT_AGE=8 dnl =========================================================================== VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE" AC_SUBST(VERSION_INFO) LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE` AC_SUBST(LT_CURRENT_MINUS_AGE) CAIRO_VERSION_MAJOR=cairo_version_major() CAIRO_VERSION_MINOR=cairo_version_minor() CAIRO_VERSION_MICRO=cairo_version_micro() AC_SUBST(CAIRO_VERSION_MAJOR) AC_SUBST(CAIRO_VERSION_MINOR) AC_SUBST(CAIRO_VERSION_MICRO) AC_SUBST(CAIRO_VERSION_OTHER) AM_MAINTAINER_MODE AC_PROG_CC AC_PROG_CPP AM_PROG_LIBTOOL AC_STDC_HEADERS AC_C_BIGENDIAN dnl =========================================================================== dnl === Local macros dnl =========================================================================== # _CHECK_FUNCS_WITH_FLAGS(FUNCTION..., CFLAGS, LIBS # [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) # Like AC_CHECK_FUNCS but with additional CFLAGS and LIBS # -------------------------------------------------------------------- AC_DEFUN([_CHECK_FUNCS_WITH_FLAGS], [ save_cflags="$CFLAGS" save_libs="$LIBS" CFLAGS="$CFLAGS $2" LIBS="$LIBS $3" AC_CHECK_FUNCS($1, $4, $5) CFLAGS="$save_cflags" LIBS="$save_libs" ]) dnl =========================================================================== AC_CHECK_FUNCS(vasnprintf) AC_CHECK_LIBM LIBS="$LIBS $LIBM" dnl =========================================================================== PKG_PROG_PKG_CONFIG dnl =========================================================================== dnl dnl Define a macro to enable backends. dnl - Macro: CAIRO_BACKEND_ENABLE (ID, NAME, DEFAULT, NAMESPACE, REQUIRES, COMMANDS-TO-CHECK-IT) dnl dnl Where COMMANDS should set $use_ID to something other than yes if the dnl backend cannot be built. dnl dnl Check the CAIRO_BACKEND_ENABLE line for fontconfig to understand each dnl parameter. dnl AC_DEFUN([CAIRO_BACKEND_ENABLE], [AC_ARG_ENABLE([$1], AS_HELP_STRING([--enable-$1=@<:@no/auto/yes@:>@], [Enable cairo's $2 backend @<:@default=$3@:>@]), use_$1=$enableval, use_$1=$3) if test "x$use_$1" = xno; then use_$1="no (disabled, use --enable-$1 to enable)" else AC_CACHE_CHECK([for cairo's $1 backend], cairo_cv_use_$1, [echo saved_use_$1=$use_$1 use_$1=yes $6 cairo_cv_use_$1=$use_$1 use_$1=$saved_use_$1 AC_MSG_CHECKING([whether cairo's $1 backend could be enabled])]) case $use_$1 in yes) if test "x$cairo_cv_use_$1" = xyes; then use_$1=yes else AC_MSG_ERROR([requested $2 backend could not be enabled]) fi ;; auto) use_$1=$cairo_cv_use_$1 ;; *) AC_MSG_ERROR([invalid argument passed to --enable-$1: $use_$1, should be one of @<:@no/auto/yes@:>@]) ;; esac if test "x$use_$1" = xyes; then AC_MSG_NOTICE([creating src/cairo-$4.pc]) mkdir src AS_IF([sed \ -e "s/@backend_name@/$4/g" \ -e "s/@Backend_Name@/$2/g" \ -e "s/@BACKEND_REQUIRES@/$5/g" \ -e "s,@prefix@,$prefix,g" \ -e "s,@exec_prefix@,$exec_prefix,g" \ -e "s,@libdir@,$libdir,g" \ -e "s,@includedir@,$includedir,g" \ -e "s,@VERSION@,$VERSION,g" \ $srcdir/src/cairo-backend.pc.in > src/cairo-$4.pc],,[ rm -f "src/cairo-$4.pc" AC_MSG_ERROR([failed creating src/cairo-$4.pc]) ]) fi fi]) dnl =========================================================================== CAIRO_BACKEND_ENABLE(xlib, Xlib, auto, xlib, [xrender], [ dnl Check for Xrender header files if the Xrender package is not installed: PKG_CHECK_MODULES(XRENDER, xrender >= 0.6, [ XRENDER_REQUIRES=xrender], [ AC_CHECK_HEADER(X11/extensions/Xrender.h, [ AC_PATH_XTRA XRENDER_LIBS="$X_LIBS -lXrender -lXext -lX11 $X_EXTRA_LIBS"], [ use_xlib="no (requires Xrender http://freedesktop.org/Software/xlibs)"])]) _CHECK_FUNCS_WITH_FLAGS(XrmFinalize, $XRENDER_CFLAGS, $XRENDER_LIBS) ]) AM_CONDITIONAL(CAIRO_HAS_XLIB_SURFACE, test "x$use_xlib" = "xyes") if test "x$use_xlib" = "xyes"; then XLIB_SURFACE_FEATURE="#define CAIRO_HAS_XLIB_SURFACE 1" fi AC_SUBST(XLIB_SURFACE_FEATURE) AC_SUBST(XRENDER_REQUIRES) CAIRO_CFLAGS="$CAIRO_CFLAGS $XRENDER_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $XRENDER_LIBS" CAIRO_BACKEND_ENABLE(quartz, Quartz, no, quartz, [], [ dnl There is no pkgconfig for quartz; lets do a header check AC_CHECK_HEADER(Carbon/Carbon.h, [use_quartz=yes], [use_quartz="no (Carbon headers not found)"]) ]) AM_CONDITIONAL(CAIRO_HAS_QUARTZ_SURFACE, test "x$use_quartz" = "xyes") if test "x$use_quartz" = "xyes"; then QUARTZ_SURFACE_FEATURE="#define CAIRO_HAS_QUARTZ_SURFACE 1" QUARTZ_LIBS="-Xlinker -framework -Xlinker Carbon" fi AC_SUBST(QUARTZ_SURFACE_FEATURE) CAIRO_LIBS="$CAIRO_LIBS $QUARTZ_LIBS" dnl =========================================================================== CAIRO_BACKEND_ENABLE(xcb, XCB, no, xcb, [xcb xcb-render], [ PKG_CHECK_MODULES(XCB, xcb xcb-render, [use_xcb=yes], [ use_xcb="no (requires XCB http://xcb.freedesktop.org)"]) ]) AM_CONDITIONAL(CAIRO_HAS_XCB_SURFACE, test "x$use_xcb" = "xyes") if test "x$use_xcb" = "xyes"; then XCB_SURFACE_FEATURE="#define CAIRO_HAS_XCB_SURFACE 1" fi AC_SUBST(XCB_SURFACE_FEATURE) CAIRO_CFLAGS="$CAIRO_CFLAGS $XCB_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $XCB_LIBS" dnl =========================================================================== case "$host" in *-*-mingw*|*-*-cygwin*) cairo_platform_win32=yes ;; *) cairo_platform_win32=no ;; esac CAIRO_BACKEND_ENABLE(win32, Microsoft Windows, auto, win32, [], [ case "$host" in *-*-mingw*|*-*-cygwin*) use_win32=yes ;; *) use_win32="no (the Microsoft Windows backend requires a Win32 platform)" ;; esac ]) if test "x$use_win32" = "xyes"; then CAIRO_LIBS="$CAIRO_LIBS -lgdi32 -lmsimg32" fi AM_CONDITIONAL(CAIRO_HAS_WIN32_SURFACE, test "x$use_win32" = "xyes") if test "x$use_win32" = "xyes"; then WIN32_SURFACE_FEATURE="#define CAIRO_HAS_WIN32_SURFACE 1" fi AC_SUBST(WIN32_SURFACE_FEATURE) AM_CONDITIONAL(CAIRO_HAS_WIN32_FONT, test "x$use_win32" = "xyes") if test "x$use_win32" = "xyes"; then WIN32_FONT_FEATURE="#define CAIRO_HAS_WIN32_FONT 1" fi AC_SUBST(WIN32_FONT_FEATURE) dnl =========================================================================== CAIRO_BACKEND_ENABLE(beos, BeOS/Zeta, no, beos, [], [ case "$host" in *-*-beos) use_beos=yes ;; *) use_beos="no (the BeOS backend requires a BeOS platform)" ;; esac ]) if test "x$use_beos" = "xyes"; then AC_PROG_CXX dnl Add libbe and libzeta if available AC_CHECK_LIB(be,main,CAIRO_LIBS="$CAIRO_LIBS -lbe") AC_CHECK_LIB(zeta,main,CAIRO_LIBS="$CAIRO_LIBS -lzeta") fi AM_CONDITIONAL(CAIRO_HAS_BEOS_SURFACE, test "x$use_beos" = "xyes") if test "x$use_beos" = "xyes"; then BEOS_SURFACE_FEATURE="#define CAIRO_HAS_BEOS_SURFACE 1" fi AC_SUBST(BEOS_SURFACE_FEATURE) dnl =========================================================================== CAIRO_BACKEND_ENABLE(png, PNG, yes, png, [], [ use_png=no # libpng13 is GnuWin32's libpng-1.2.8 :-( for l in libpng12 libpng13 libpng10 ; do if $PKG_CONFIG --exists $l ; then PNG_REQUIRES=$l use_png=yes break fi done if test "x$use_png" = "xyes" ; then # Sets PNG_CFLAGS, PNG_LIBS PKG_CHECK_MODULES(PNG, $PNG_REQUIRES) else AC_MSG_WARN([Could not find libpng in the pkg-config search path]) fi ]) AM_CONDITIONAL(CAIRO_HAS_PNG_FUNCTIONS, test "x$use_png" = "xyes") if test "x$use_png" = "xyes"; then PNG_FUNCTIONS_FEATURE="#define CAIRO_HAS_PNG_FUNCTIONS 1" else AC_MSG_WARN([*** To run the tests, cairo must be built with png support ***]) fi AC_SUBST(PNG_FUNCTIONS_FEATURE) CAIRO_CFLAGS="$CAIRO_CFLAGS $PNG_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $PNG_LIBS" AC_SUBST(PNG_REQUIRES) dnl =========================================================================== CAIRO_BACKEND_ENABLE(glitz, glitz, no, glitz, [glitz], [ PKG_CHECK_MODULES(GLITZ, glitz >= 0.5.1, [ GLITZ_REQUIRES=glitz use_glitz=yes], [use_glitz="no (requires glitz http://freedesktop.org/Software/glitz)"]) ]) if test "x$use_glitz" = "xyes";then PKG_CHECK_MODULES(GLITZ_AGL, glitz-agl >= 0.5.1, [have_glitz_agl=yes], [have_glitz_agl=no]) PKG_CHECK_MODULES(GLITZ_EGL, glitz-egl >= 0.5.1, [have_glitz_egl=yes], [have_glitz_egl=no]) PKG_CHECK_MODULES(GLITZ_GLX, glitz-glx >= 0.5.1, [have_glitz_glx=yes], [have_glitz_glx=no]) PKG_CHECK_MODULES(GLITZ_WGL, glitz-wgl >= 0.5.1, [have_glitz_wgl=yes], [have_glitz_wgl=no]) if test "x$have_glitz_agl" = "xyes";then AC_DEFINE(CAIRO_CAN_TEST_GLITZ_AGL_SURFACE, 1, [define if glitz backend can be tested against agl]) fi if test "x$have_glitz_egl" = "xyes";then AC_DEFINE(CAIRO_CAN_TEST_GLITZ_EGL_SURFACE, 1, [define if glitz backend can be tested against egl]) fi if test "x$have_glitz_glx" = "xyes";then AC_DEFINE(CAIRO_CAN_TEST_GLITZ_GLX_SURFACE, 1, [define if glitz backend can be tested against glx]) fi if test "x$have_glitz_wgl" = "xyes";then AC_DEFINE(CAIRO_CAN_TEST_GLITZ_WGL_SURFACE, 1, [define if glitz backend can be tested against wgl]) fi fi AM_CONDITIONAL(CAIRO_CAN_TEST_GLITZ_AGL_SURFACE, test "x$have_glitz_agl" = "xyes") AM_CONDITIONAL(CAIRO_CAN_TEST_GLITZ_EGL_SURFACE, test "x$have_glitz_egl" = "xyes") AM_CONDITIONAL(CAIRO_CAN_TEST_GLITZ_GLX_SURFACE, test "x$have_glitz_glx" = "xyes") AM_CONDITIONAL(CAIRO_CAN_TEST_GLITZ_WGL_SURFACE, test "x$have_glitz_wgl" = "xyes") AM_CONDITIONAL(CAIRO_HAS_GLITZ_SURFACE, test "x$use_glitz" = "xyes") if test "x$use_glitz" = "xyes"; then GLITZ_SURFACE_FEATURE="#define CAIRO_HAS_GLITZ_SURFACE 1" fi AC_SUBST(GLITZ_SURFACE_FEATURE) CAIRO_CFLAGS="$CAIRO_CFLAGS $GLITZ_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $GLITZ_LIBS" AC_SUBST(GLITZ_REQUIRES) dnl =========================================================================== CAIRO_BACKEND_ENABLE(directfb, directfb, no, directfb, [directfb], [ PKG_CHECK_MODULES(DIRECTFB, directfb, [use_directfb=yes], [ use_directfb="no (requires directfb http://www.directfb.org)"]) ]) AM_CONDITIONAL(CAIRO_HAS_DIRECTFB_SURFACE, test "x$use_directfb" = "xyes") if test "x$use_directfb" = "xyes"; then DIRECTFB_SURFACE_FEATURE="#define CAIRO_HAS_DIRECTFB_SURFACE 1" fi AC_SUBST(DIRECTFB_SURFACE_FEATURE) CAIRO_CFLAGS="$CAIRO_CFLAGS $DIRECTFB_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $DIRECTFB_LIBS" dnl =========================================================================== CAIRO_BACKEND_ENABLE(freetype, freetype font, auto, ft, [freetype2 fontconfig], [ PKG_CHECK_MODULES(FONTCONFIG, fontconfig, [use_freetype=yes], [use_freetype=no]) _CHECK_FUNCS_WITH_FLAGS(FcFini, $FONTCONFIG_CFLAGS, $FONTCONFIG_LIBS) ]) CAIRO_CFLAGS="$CAIRO_CFLAGS $FONTCONFIG_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $FONTCONFIG_LIBS" # We use pkg-config to look for freetype2, but fall back to # freetype-config if it fails. We prefer pkg-config, since we can # then just put freetype2 >= $FREETYPE_MIN_VERSION in # Requires.private, but at least up to 2003-06-07, there was no # freetype2.pc in the release. # # Freetype versions come in three forms: # release (such as 2.1.5) # libtool (such as 9.4.3) (returned by freetype-config and pkg-config) # platform-specific/soname (such as 6.3.4) # and they recommend you never use the platform-specific version # (see docs/VERSION.DLL in freetype2 sources) # # Set these as appropriate: # release number - for information only FREETYPE_MIN_RELEASE=2.1.0 # libtool-specific version - this is what is checked FREETYPE_MIN_VERSION=8.0.2 if test "x$use_freetype" = "xyes"; then PKG_CHECK_MODULES(FREETYPE, freetype2 >= $FREETYPE_MIN_VERSION, [freetype_pkgconfig=yes], [freetype_pkgconfig=no]) if test "x$freetype_pkgconfig" = "xyes"; then FREETYPE_REQUIRES="freetype2 >= $FREETYPE_MIN_VERSION fontconfig" else if test -z "$FREETYPE_CONFIG"; then AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) fi if test "$FREETYPE_CONFIG" = "no" ; then AC_MSG_WARN([No freetype-config script found in path or FREETYPE_CONFIG]) use_freetype=no else AC_MSG_CHECKING(freetype2 libtool version) FREETYPE_VERSION=`$FREETYPE_CONFIG --version` VERSION_DEC=`echo $FREETYPE_VERSION | awk -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` MIN_VERSION_DEC=`echo $FREETYPE_MIN_VERSION | awk -F. '{printf("%d\n", 10000*$1 + 100*$2 + $3)};'` if test $VERSION_DEC -lt $MIN_VERSION_DEC; then AC_MSG_RESULT($FREETYPE_VERSION - Too old) AC_MSG_WARN([$FREETYPE_VERSION - version $FREETYPE_MIN_VERSION from release $FREETYPE_MIN_RELEASE required]) use_freetype=no else AC_MSG_RESULT($FREETYPE_VERSION - OK) FREETYPE_CONFIG_CFLAGS=`$FREETYPE_CONFIG --cflags` FREETYPE_CONFIG_LIBS=`$FREETYPE_CONFIG --libs` FREETYPE_CFLAGS=$FREETYPE_CONFIG_CFLAGS FREETYPE_LIBS=$FREETYPE_CONFIG_LIBS FREETYPE_REQUIRES=fontconfig fi fi fi fi have_ft_load_sfnt_table=no if test "x$use_freetype" = "xyes"; then AC_SUBST(FREETYPE_CFLAGS) AC_SUBST(FREETYPE_LIBS) AC_SUBST(FREETYPE_CONFIG_CFLAGS) AC_SUBST(FREETYPE_CONFIG_LIBS) AC_SUBST(FREETYPE_REQUIRES) temp_save_libs="$LIBS" temp_save_cflags="$CFLAGS" LIBS="$LIBS $FREETYPE_LIBS" CFLAGS="$CFLAGS $FREETYPE_CFLAGS" AC_CHECK_MEMBER(FT_Bitmap_Size.y_ppem, HAVE_FT_BITMAP_SIZE_Y_PPEM=1, HAVE_FT_BITMAP_SIZE_Y_PPEM=0, [#include #include FT_FREETYPE_H]) AC_DEFINE_UNQUOTED(HAVE_FT_BITMAP_SIZE_Y_PPEM,$HAVE_FT_BITMAP_SIZE_Y_PPEM, [FT_Bitmap_Size structure includes y_ppem field]) AC_CHECK_FUNC(FT_Load_Sfnt_Table, have_ft_load_sfnt_table=yes) AC_CHECK_FUNCS(FT_GlyphSlot_Embolden) LIBS="$temp_save_libs" CFLAGS="$temp_save_cflags" fi CAIRO_CFLAGS="$CAIRO_CFLAGS $FREETYPE_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $FREETYPE_LIBS" AM_CONDITIONAL(CAIRO_HAS_FT_FONT, test "x$use_freetype" = "xyes") if test "x$use_freetype" = "xyes"; then FT_FONT_FEATURE="#define CAIRO_HAS_FT_FONT 1" fi AC_SUBST(FT_FONT_FEATURE) dnl =========================================================================== AC_CHECK_HEADERS([pthread.h], have_pthread=yes, have_pthread=no) AM_CONDITIONAL(HAVE_PTHREAD, test "x$have_pthread" = "xyes") dnl =========================================================================== CAIRO_BACKEND_ENABLE(ps, PostScript, auto, ps, [], [ if test x"$have_ft_load_sfnt_table" != "xyes" ; then use_ps="no (PS backend requires FreeType 2.1.4 or newer)" fi ]) # The postscript module requires zlib. AC_CHECK_LIB(z, compress, [AC_CHECK_HEADER(zlib.h, [], [use_ps="no (requires zlib http://www.gzip.org/zlib/)"])], [use_ps="no (requires zlib http://www.gzip.org/zlib/)"]) AM_CONDITIONAL(CAIRO_HAS_PS_SURFACE, test "x$use_ps" = "xyes") if test "x$use_ps" = "xyes"; then PS_SURFACE_FEATURE="#define CAIRO_HAS_PS_SURFACE 1" PS_LIBS=-lz fi AC_SUBST(PS_SURFACE_FEATURE) CAIRO_LIBS="$CAIRO_LIBS $PS_LIBS" AC_SUBST(PS_LIBS) dnl =========================================================================== CAIRO_BACKEND_ENABLE(pdf, PDF, auto, pdf, [], [ if test x"$have_ft_load_sfnt_table" != "xyes" ; then use_pdf="no (PDF backend requires FreeType 2.1.4 or newer)" fi ]) test_pdf=no AM_CONDITIONAL(CAIRO_HAS_PDF_SURFACE, test "x$use_pdf" = "xyes") if test "x$use_pdf" = "xyes"; then PDF_SURFACE_FEATURE="#define CAIRO_HAS_PDF_SURFACE 1" PDF_LIBS=-lz PKG_CHECK_MODULES(POPPLER, poppler-glib >= 0.4.1 pango gtk+-2.0, [test_pdf=yes], [test_pdf=no]) if test "x$test_pdf" = "xyes"; then 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)]) else AC_MSG_WARN([PDF backend will not be tested since poppler is not available]) fi fi AC_SUBST(PDF_SURFACE_FEATURE) AM_CONDITIONAL(CAIRO_CAN_TEST_PDF_SURFACE, test "x$test_pdf" = "xyes") AC_SUBST(POPPLER_CFLAGS) AC_SUBST(POPPLER_LIBS) AM_CONDITIONAL(CAIRO_HAS_MULTI_PAGE_SURFACES, test "x$use_ps" = "xyes" -o "x$use_pdf" = "xyes") CAIRO_LIBS="$CAIRO_LIBS $PDF_LIBS" AC_SUBST(PDF_LIBS) dnl =========================================================================== CAIRO_BACKEND_ENABLE(svg, SVG, auto, svg, [], [ if test x"$have_ft_load_sfnt_table" != "xyes" ; then use_svg="no (SVG backend requires FreeType 2.1.4 or newer)" fi ]) AM_CONDITIONAL(CAIRO_HAS_SVG_SURFACE, test "x$use_svg" = "xyes") if test "x$use_svg" = "xyes"; then SVG_SURFACE_FEATURE="#define CAIRO_HAS_SVG_SURFACE 1" PKG_CHECK_MODULES(LIBRSVG, librsvg-2.0 gdk-2.0, [test_svg=yes], [test_svg=no]) if test "x$test_svg" = "xyes"; then AC_DEFINE([CAIRO_CAN_TEST_SVG_SURFACE], 1, [Define to 1 if the SVG backend can be tested (need librsvg)]) else AC_MSG_WARN([SVG backend will not be tested since a librsvg is not available]) fi fi AC_SUBST(SVG_SURFACE_FEATURE) AM_CONDITIONAL(CAIRO_CAN_TEST_SVG_SURFACE, test "x$test_svg" = "xyes") AC_SUBST(LIBRSVG_CFLAGS) AC_SUBST(LIBRSVG_LIBS) dnl =========================================================================== dnl This check should default to 'yes' once we have code to actually dnl check for the atsui font backend. CAIRO_BACKEND_ENABLE(atsui, atsui font, no, atsui, [], [ dnl There is no pkgconfig for atsui; lets do a header check AC_CHECK_HEADER(Carbon/Carbon.h, [use_atsui=yes], [use_atsui=no]) ]) AM_CONDITIONAL(CAIRO_HAS_ATSUI_FONT, test "x$use_atsui" = "xyes") if test "x$use_atsui" = "xyes"; then ATSUI_FONT_FEATURE="#define CAIRO_HAS_ATSUI_FONT 1" fi AC_SUBST(ATSUI_FONT_FEATURE) dnl =========================================================================== dnl Checks for precise integer types AC_CHECK_HEADERS([stdint.h inttypes.h sys/int_types.h]) AC_CHECK_TYPES([uint64_t, uint128_t]) dnl Use lots of warning flags with GCC WARN_CFLAGS="" if test "x$GCC" = "xyes"; then WARN_CFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes \ -Wmissing-prototypes -Wmissing-declarations \ -Wnested-externs -fno-strict-aliasing" fi AC_SUBST(WARN_CFLAGS) CAIRO_CFLAGS="$CAIRO_CFLAGS $WARN_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS" AC_SUBST(CAIRO_CFLAGS) AC_SUBST(CAIRO_LIBS) dnl =========================================================================== dnl Check for gtk-doc and docbook GTK_DOC_CHECK([1.3]) dnl =========================================================================== dnl Check for recent pkg-config which supports Requires.private case `$PKG_CONFIG --version` in [0.?|0.?.?|0.1[0-7]|0.1[0-7].?]) PKGCONFIG_REQUIRES="Requires"; ;; *) PKGCONFIG_REQUIRES="Requires.private"; ;; esac AC_SUBST(PKGCONFIG_REQUIRES) dnl =========================================================================== dnl Check for MMX MMX_CFLAGS="-mmmx -Winline --param inline-unit-growth=10000 --param large-function-growth=10000" have_mmx_intrinsics=no AC_MSG_CHECKING(For MMX/SSE intrinsics in the compiler) xserver_save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS $MMX_CFLAGS" AC_COMPILE_IFELSE([ #if defined(__GNUC__) && (__GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ < 4)) #error "Need GCC >= 3.4 for MMX intrinsics" #endif #include int main () { __m64 v = _mm_cvtsi32_si64 (1); __m64 w = _mm_slli_si64 (v, 1); v = _mm_or_si64 (v, w); return _mm_cvtsi64_si32 (v); }], have_mmx_intrinsics=yes) CFLAGS=$xserver_save_CFLAGS AC_MSG_RESULT($have_mmx_intrinsics) if test $have_mmx_intrinsics = yes ; then AC_DEFINE(USE_MMX, 1, [use MMX compiler intrinsics]) else MMX_CFLAGS= fi AC_SUBST(MMX_CFLAGS) AM_CONDITIONAL(USE_MMX, test $have_mmx_intrinsics = yes) dnl =========================================================================== AC_ARG_ENABLE(gcov, AS_HELP_STRING([--enable-gcov], [Enable gcov]), [use_gcov=$enableval], [use_gcov=no]) if test "x$use_gcov" = "xyes"; then dnl we need gcc: if test "$GCC" != "yes"; then AC_MSG_ERROR([GCC is required for --enable-gcov]) fi dnl Check if ccache is being used case `shtool path $CC` in *ccache*[)] gcc_ccache=yes;; *[)] gcc_ccache=no;; esac if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then AC_MSG_ERROR([ccache must be disabled when --enable-gcov option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.]) fi ltp_version_list="1.4" AC_CHECK_PROG(LTP, lcov, lcov) AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml) if test "$LTP"; then AC_CACHE_CHECK([for ltp version], cairo_cv_ltp_version, [ cairo_cv_ltp_version=invalid ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'` for ltp_check_version in $ltp_version_list; do if test "$ltp_version" = "$ltp_check_version"; then cairo_cv_ltp_version="$ltp_check_version (ok)" fi done ]) else ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list" AC_MSG_ERROR([$ltp_msg]) fi case $cairo_cv_ltp_version in ""|invalid[)] ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)." AC_MSG_ERROR([$ltp_msg]) LTP="exit 0;" ;; esac if test -z "$LTP_GENHTML"; then AC_MSG_ERROR([Could not find genhtml from the LTP package]) fi AC_DEFINE(HAVE_GCOV, 1, [Whether you have gcov]) dnl PHP_ADD_MAKEFILE_FRAGMENT($abs_srcdir/Makefile.gcov, $abs_srcdir) dnl Remove all optimization flags from CFLAGS changequote({,}) CAIRO_CFLAGS=`echo "$CAIRO_CFLAGS" | $SED -e 's/-O[0-9]*//g'` changequote([,]) dnl Add the special gcc flags CAIRO_CFLAGS="$CAIRO_CFLAGS -O0 -fprofile-arcs -ftest-coverage" fi dnl =========================================================================== AC_ARG_ENABLE(test-surfaces, AS_HELP_STRING([--enable-test-surfaces], [Add backends for more test suite coverage (no additional public functionality)]), [use_test_surfaces=$enableval], [use_test_surfaces=no]) AM_CONDITIONAL(CAIRO_HAS_TEST_SURFACES, test "x$use_test_surfaces" = "xyes") if test "x$use_test_surfaces" = "xyes"; then AC_DEFINE(CAIRO_HAS_TEST_SURFACES, 1, [define in the extra test surface have been built into cairo for the test suite]) fi dnl =========================================================================== AC_OUTPUT([ Makefile pixman/Makefile pixman/src/Makefile src/Makefile src/cairo-features.h test/Makefile doc/Makefile doc/public/Makefile doc/public/version.xml src/cairo.pc ]) dnl =========================================================================== echo "" echo "cairo will be compiled with the following surface backends:" echo " image: yes (always builtin)" echo " Xlib: $use_xlib" echo " Quartz: $use_quartz" echo " XCB: $use_xcb" echo " Win32: $use_win32" echo " PostScript: $use_ps" echo " PDF: $use_pdf" echo " SVG: $use_svg" echo " glitz: $use_glitz" echo " BeOS: $use_beos" echo " DirectFB: $use_directfb" echo "" echo "the following font backends:" echo " FreeType: $use_freetype" echo " Win32: $use_win32" echo " ATSUI: $use_atsui" echo "" echo "the following features:" echo " PNG functions: $use_png" echo "" echo "and the following debug options:" echo " gcov support: $use_gcov" echo " test surfaces: $use_test_surfaces" echo "" echo "using CFLAGS:" echo $CAIRO_CFLAGS echo "" if test x"$use_freetype" != "xyes" && \ test x"$use_win32" != "xyes" && \ test x"$use_atsui" != "xyes" ; then AC_MSG_ERROR([Cairo requires at least one font backend. Please install freetype and fontconfig, then try again: http://freetype.org/ http://fontconfig.org/ ]) fi WARNING_MESSAGE=' *** The @BACKEND@ backend is still under active development and *** is included in this release only as a preview. It does not *** fully work yet and incompatible changes may yet be made *** to @BACKEND@-backend specific API. ' if test x"$use_glitz" = "xyes" ; then echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/Glitz/' fi if test x"$use_xcb" = "xyes" ; then echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/XCB/' fi if test x"$use_quartz" = "xyes" ; then echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/Quartz/' fi if test x"$use_quartz" = "xyes" ; then echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/ATSUI/' fi if test x"$use_beos" = "xyes" ; then echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/BeOS/' fi if test x"$use_directfb" = "xyes" ; then echo "$WARNING_MESSAGE" | sed 's/@BACKEND@/DirectFB/' fi