📄 configure.in
字号:
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, 2)m4_define(cairo_version_micro, 0)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=11# Increment any time the source changes; set to# 0 if you increment CURRENTLT_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=9dnl ===========================================================================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)AM_MAINTAINER_MODEAC_PROG_CCAC_PROG_CPPAM_PROG_LIBTOOLAC_STDC_HEADERSAC_C_BIGENDIANdnl ===========================================================================dnl === Local macrosdnl ===========================================================================# _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_LIBMLIBS="$LIBS $LIBM"dnl ===========================================================================PKG_PROG_PKG_CONFIGdnl ===========================================================================dnldnl Define a macro to enable backends.dnl - Macro: CAIRO_BACKEND_ENABLE (NAMESPACE, NAME, ARG, FEATURE_NAME, DEFAULT, COMMANDS)dnldnl where:dnldnl NAMESPACE is the sub-namespace in function names, eg. "ft" for cairo_ft_...dnl NAME is the human-readable name of the backend, eg. "FreeType font"dnl ARG is what enables the backend, eg. "freetype" for --enable-freetypednl FEATURE_NAME is what's used in cairo-features.h, eg. FT_FONT for CAIRO_HAS_FT_FONTdnl DEFAULT is the default state of the backend:dnl "no" for experimental backends, eg. your favorite new backenddnl "yes" for mandatory backends, eg. pngdnl "auto" for other supported backends, eg. xlibdnl REQUIRES is the list of pkg-config modules that should be Require'd in thednl backend-specific .pc file.dnl COMMANDS are run to check whether the backend can be enabled. Theirdnl result may be cached, so user should not count on them being run.dnl They should set use_$(NAMESPACE) to something other than yes if thednl backend cannot be built, eg. "no (requires SomeThing)"dnlAC_DEFUN([CAIRO_BACKEND_ENABLE], [AC_ARG_ENABLE([$3], AS_HELP_STRING([--enable-$3=@<:@no/auto/yes@:>@], [Enable cairo's $2 backend @<:@default=$5@:>@]), enable_$1=$enableval, enable_$1=$5) if test "x$enable_$1" = xno; then use_$1="no (disabled, use --enable-$3 to enable)" else AC_CACHE_CHECK([for cairo's $2 backend], cairo_cv_backend_[]$1[]_use, [echo use_[]$1=yes $1[]_REQUIRES="" $1[]_CFLAGS="" $1[]_LIBS="" $1[]_NONPKGCONFIG_CFLAGS="" $1[]_NONPKGCONFIG_LIBS="" $6 cairo_cv_backend_[]$1[]_use=$use_[]$1 cairo_cv_backend_[]$1[]_requires=$[]$1[]_REQUIRES cairo_cv_backend_[]$1[]_cflags=$[]$1[]_CFLAGS cairo_cv_backend_[]$1[]_libs=$[]$1[]_LIBS cairo_cv_backend_[]$1[]_nonpkgconfig_cflags=$[]$1[]_NONPKGCONFIG_CFLAGS cairo_cv_backend_[]$1[]_nonpkgconfig_libs=$[]$1[]_NONPKGCONFIG_LIBS AC_MSG_CHECKING([whether cairo's $2 backend could be enabled])]) # split the backend spec into its components use_[]$1=$cairo_cv_backend_[]$1[]_use $1[]_REQUIRES=$cairo_cv_backend_[]$1[]_requires $1[]_CFLAGS=$cairo_cv_backend_[]$1[]_cflags $1[]_LIBS=$cairo_cv_backend_[]$1[]_libs $1[]_NONPKGCONFIG_CFLAGS=$cairo_cv_backend_[]$1[]_nonpkgconfig_cflags $1[]_NONPKGCONFIG_LIBS=$cairo_cv_backend_[]$1[]_nonpkgconfig_libs case $enable_[]$1 in yes) AS_IF([test "x$use_[]$1" = xyes],,[ AC_MSG_ERROR([requested $2 backend could not be enabled]) ]) ;; auto) ;; *) AC_MSG_ERROR([invalid argument passed to --enable-$3: $use_$1, should be one of @<:@no/auto/yes@:>@]) ;; esac if test "x$use_[]$1" = xyes; then CAIRO_FEATURES="$CAIRO_FEATURES $4" CAIRO_REQUIRES="$CAIRO_REQUIRES $$1_REQUIRES" CAIRO_CFLAGS="$CAIRO_CFLAGS $$1_CFLAGS $$1_NONPKGCONFIG_CFLAGS" CAIRO_LIBS="$CAIRO_LIBS $$1_LIBS $$1_NONPKGCONFIG_LIBS" outfile=`echo src/cairo-$1.pc | sed -e s/_/-/g` AC_MSG_NOTICE([creating $outfile]) mkdir -p src AS_IF([sed \ -e "s,@backend_name@,$1,g" \ -e "s,@Backend_Name@,$2,g" \ -e "s,@BACKEND_REQUIRES@,$$1_REQUIRES,g" \ -e "s%@BACKEND_NONPKGCONFIG_LIBS@%$$1_NONPKGCONFIG_LIBS%g" \ -e "s,@BACKEND_NONPKGCONFIG_CFLAGS@,$$1_NONPKGCONFIG_CFLAGS,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 > $outfile],,[ rm -f "$outfile" AC_MSG_ERROR([failed creating $outfile]) ]) fi fi AM_CONDITIONAL(CAIRO_HAS_$4, test "x$use_$1" = xyes) ])CAIRO_FEATURES=""CAIRO_REQUIRES=""CAIRO_CFLAGS=""CAIRO_LIBS=""dnl ===========================================================================CAIRO_BACKEND_ENABLE(xlib, Xlib, xlib, XLIB_SURFACE, auto, [ AC_PATH_XTRA if test "x$no_x" = xyes; then use_xlib="no (requires Xlib)" else xlib_LIBS="$X_PRE_LIBS $X_LIBS -lX11 $X_EXTRA_LIBS" xlib_CFLAGS=$X_CFLAGS fi])if test "x$use_xlib" = xyes; then _CHECK_FUNCS_WITH_FLAGS(XrmFinalize, $xlib_CFLAGS, $xlib_LIBS)fiCAIRO_BACKEND_ENABLE(xlib_xrender, Xlib Xrender, xlib-xrender, XLIB_XRENDER_SURFACE, auto, [ use_xlib_xrender=$use_xlib if test "x$use_xlib_xrender" = xyes; then dnl Check for Xrender header files if the Xrender package is not installed: xlib_xrender_REQUIRES="xrender >= 0.6" PKG_CHECK_MODULES(xlib_xrender, $xlib_xrender_REQUIRES, , [xlib_xrender_REQUIRES="" AC_CHECK_HEADER(X11/extensions/Xrender.h, [xlib_xrender_LIBS="-lXrender"], [use_xlib_xrender="no (requires Xrender http://freedesktop.org/Software/xlibs)"])]) xlib_xrender_CFLAGS="$xlib_CFLAGS $xlib_xrender_CFLAGS" xlib_xrender_LIBS="$xlib_LIBS $xlib_xrender_LIBS" fi])dnl ===========================================================================CAIRO_BACKEND_ENABLE(quartz, Quartz, quartz, QUARTZ_SURFACE, no, [ dnl There is no pkgconfig for quartz; lets do a header check AC_CHECK_HEADER(Carbon/Carbon.h, , [use_quartz="no (Carbon headers not found)"]) quartz_LIBS="-Xlinker -framework -Xlinker Carbon"])dnl ===========================================================================CAIRO_BACKEND_ENABLE(xcb, XCB, xcb, XCB_SURFACE, no, [ xcb_REQUIRES="xcb xcb-render" PKG_CHECK_MODULES(xcb, $xcb_REQUIRES, , [ use_xcb="no (requires XCB http://xcb.freedesktop.org)"])])dnl ===========================================================================CAIRO_BACKEND_ENABLE(win32, Microsoft Windows, win32, WIN32_SURFACE, auto, [ case "$host" in *-*-mingw*|*-*-cygwin*) : ;; *) use_win32="no (requires a Win32 platform)" ;; esac win32_LIBS="-lgdi32 -lmsimg32"])CAIRO_BACKEND_ENABLE(win32_font, Microsoft Windows font, win32-font, WIN32_FONT, auto, [ use_win32_font=$use_win32])dnl ===========================================================================CAIRO_BACKEND_ENABLE(beos, BeOS/Zeta, beos, BEOS_SURFACE, no, [ case "$host" in *-*-beos) dnl Add libbe and libzeta if available AC_CHECK_LIB(be,main,beos_LIBS="$beos_LIBS -lbe") AC_CHECK_LIB(zeta,main,beos_LIBS="$beos_LIBS -lzeta") ;; *) use_beos="no (requires a BeOS platform)" ;; esac])if test "x$use_beos" = "xyes"; then AC_PROG_CXXfidnl ===========================================================================CAIRO_BACKEND_ENABLE(png, PNG, png, PNG_FUNCTIONS, yes, [ 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 PKG_CHECK_MODULES(png, $png_REQUIRES) else AC_MSG_WARN([Could not find libpng in the pkg-config search path]) fi ])if test "x$use_png" = "xyes"; then :else AC_MSG_WARN([*** To run the tests, cairo must be built with png support ***])fidnl ===========================================================================GLITZ_MIN_VERSION=0.5.1CAIRO_BACKEND_ENABLE(glitz, glitz, glitz, GLITZ_SURFACE, no, [ glitz_REQUIRES="glitz >= $GLITZ_MIN_VERSION" PKG_CHECK_MODULES(glitz, $glitz_REQUIRES, , [ use_glitz="no (requires glitz http://freedesktop.org/Software/glitz)"])])if test "x$use_glitz" = "xyes";then PKG_CHECK_MODULES(GLITZ_AGL, glitz-agl >= $GLITZ_MIN_VERSION, [have_glitz_agl=yes], [have_glitz_agl=no; echo $MYSTUFF_PKG_ERRORS]) PKG_CHECK_MODULES(GLITZ_EGL, glitz-egl >= $GLITZ_MIN_VERSION, [have_glitz_egl=yes], [have_glitz_egl=no; echo $MYSTUFF_PKG_ERRORS]) PKG_CHECK_MODULES(GLITZ_GLX, glitz-glx >= $GLITZ_MIN_VERSION, [have_glitz_glx=yes], [have_glitz_glx=no; echo $MYSTUFF_PKG_ERRORS]) PKG_CHECK_MODULES(GLITZ_WGL, glitz-wgl >= $GLITZ_MIN_VERSION, [have_glitz_wgl=yes], [have_glitz_wgl=no; echo $MYSTUFF_PKG_ERRORS]) 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]) fifiAM_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")dnl ===========================================================================CAIRO_BACKEND_ENABLE(directfb, directfb, directfb, DIRECTFB_SURFACE, no, [ directfb_REQUIRES=directfb PKG_CHECK_MODULES(directfb, $directfb_REQUIRES, , [use_directfb="no (requires directfb http://www.directfb.org)"])])dnl ===========================================================================# 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 onlyFREETYPE_MIN_RELEASE=2.1.0# libtool-specific version - this is what is checkedFREETYPE_MIN_VERSION=8.0.2CAIRO_BACKEND_ENABLE(ft, FreeType font, freetype, FT_FONT, auto, [ ft_REQUIRES="fontconfig" PKG_CHECK_MODULES(FONTCONFIG, $ft_REQUIRES, [_CHECK_FUNCS_WITH_FLAGS(FcFini, $ft_CFLAGS, $ft_LIBS)], [use_ft="no (requires fontconfig"]) if test "x$use_ft" = "xyes"; then PKG_CHECK_MODULES(FREETYPE, freetype2 >= $FREETYPE_MIN_VERSION, [freetype_pkgconfig=yes], [freetype_pkgconfig=no]) if test "x$freetype_pkgconfig" = "xyes"; then ft_REQUIRES="freetype2 >= $FREETYPE_MIN_VERSION $ft_REQUIRES" else if test -z "$FREETYPE_CONFIG"; then AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) fi if test "x$FREETYPE_CONFIG" = "xno" ; then use_ft='no (freetype-config not found in path or $FREETYPE_CONFIG)' 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) use_ft="no ($FREETYPE_VERSION found; version $FREETYPE_MIN_VERSION from release $FREETYPE_MIN_RELEASE required)" else AC_MSG_RESULT($FREETYPE_VERSION - OK) ft_NONPKGCONFIG_CFLAGS=`$FREETYPE_CONFIG --cflags` ft_NONPKGCONFIG_LIBS=`$FREETYPE_CONFIG --libs`
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -