[cairo-commit] 3 commits - acinclude.m4 autogen.sh build/aclocal.cairo.m4 build/aclocal.enable.m4 build/aclocal.float.m4 build/aclocal.gtk-doc.m4 build/aclocal.pkg.m4 build/configure.ac.enable build/configure.ac.system configure.ac doc/public Makefile.am src/cairo-output-stream-private.h
Behdad Esfahbod
behdad at kemper.freedesktop.org
Thu Sep 11 01:23:59 PDT 2008
Makefile.am | 2
acinclude.m4 | 261 -------------------
autogen.sh | 16 -
build/aclocal.cairo.m4 | 159 ++++++++++++
build/aclocal.enable.m4 | 439 +++++++++++++++++++++++++++++++++
build/aclocal.float.m4 | 64 ++++
build/aclocal.gtk-doc.m4 | 39 ++
build/aclocal.pkg.m4 | 155 +++++++++++
build/configure.ac.enable | 447 ----------------------------------
build/configure.ac.system | 2
configure.ac | 11
doc/public/tmpl/cairo-image.sgml | 1
doc/public/tmpl/cairo-user-fonts.sgml | 1
src/cairo-output-stream-private.h | 2
14 files changed, 863 insertions(+), 736 deletions(-)
New commits:
commit d1560bd68728c726b926d6460a466d073ed37285
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Thu Sep 11 04:23:05 2008 -0400
Mark private symbol so
diff --git a/src/cairo-output-stream-private.h b/src/cairo-output-stream-private.h
index 6c60f09..787d061 100644
--- a/src/cairo-output-stream-private.h
+++ b/src/cairo-output-stream-private.h
@@ -161,7 +161,7 @@ _cairo_memory_stream_copy (cairo_output_stream_t *base,
cairo_private int
_cairo_memory_stream_length (cairo_output_stream_t *stream);
-cairo_output_stream_t *
+cairo_private cairo_output_stream_t *
_cairo_null_stream_create (void);
/* cairo-base85-stream.c */
commit 2b4a26f0977f325df7d154e80030a152f340e000
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Thu Sep 11 04:21:29 2008 -0400
[configure.ac] Add CAIRO_BEGINEND_DECLS
diff --git a/build/aclocal.cairo.m4 b/build/aclocal.cairo.m4
index ce0c5a7..8229f93 100644
--- a/build/aclocal.cairo.m4
+++ b/build/aclocal.cairo.m4
@@ -144,3 +144,16 @@ AC_DEFUN([CAIRO_CHECK_ATOMIC_OP_NEEDS_MEMORY_BARRIER],
fi
])
+AC_DEFUN([CAIRO_BEGINEND_DECLS],
+[dnl
+AH_BOTTOM([
+#ifdef __cplusplus
+# define CAIRO_BEGIN_DECLS extern "C" {
+# define CAIRO_END_DECLS }
+#else
+# define CAIRO_BEGIN_DECLS
+# define CAIRO_END_DECLS
+#endif
+])dnl
+])
+
diff --git a/build/configure.ac.system b/build/configure.ac.system
index 2102627..519991d 100644
--- a/build/configure.ac.system
+++ b/build/configure.ac.system
@@ -2,6 +2,8 @@ dnl
dnl Non-failing checks for functions, headers, libraries, etc go here
dnl
+CAIRO_BEGINEND_DECLS
+
dnl ====================================================================
dnl Feature checks
dnl ====================================================================
diff --git a/configure.ac b/configure.ac
index 885ae0b..fbf52a5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -459,16 +459,6 @@ fi
dnl ===========================================================================
-AH_BOTTOM([
-#ifdef __cplusplus
-# define CAIRO_BEGIN_DECLS extern "C" {
-# define CAIRO_END_DECLS }
-#else
-# define CAIRO_BEGIN_DECLS
-# define CAIRO_END_DECLS
-#endif
-])
-
AC_CONFIG_FILES([
Makefile
boilerplate/Makefile
commit b7a838261bd2aace4466a725a8de08cdd4dccc9c
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Thu Sep 11 04:17:43 2008 -0400
Move m4 macros into build/aclocal.*.m4 files
diff --git a/Makefile.am b/Makefile.am
index 6b9b778..7b55262 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,5 @@
+ACLOCAL_AMFLAGS = -I build
+
DIST_SUBDIRS = src boilerplate test perf doc util
SUBDIRS = src doc
# libpng is required for our test programs
diff --git a/acinclude.m4 b/acinclude.m4
index 806e88b..1cadb9c 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1,266 +1,5 @@
dnl -*- mode: autoconf -*-
-# serial 1
-
-dnl Usage:
-dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
-AC_DEFUN([GTK_DOC_CHECK],
-[
- AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
- AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
- dnl for overriding the documentation installation directory
- AC_ARG_WITH(html-dir,
- AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
- [with_html_dir='${datadir}/gtk-doc/html'])
- HTML_DIR="$with_html_dir"
- AC_SUBST(HTML_DIR)
-
- dnl enable/disable documentation building
- AC_ARG_ENABLE(gtk-doc,
- AC_HELP_STRING([--enable-gtk-doc],
- [use gtk-doc to build documentation [default=no]]),,
- enable_gtk_doc=no)
-
- have_gtk_doc=no
- if test x$enable_gtk_doc = xyes; then
- if test -z "$PKG_CONFIG"; then
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
- fi
- if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
- have_gtk_doc=yes
- fi
-
- dnl do we want to do a version check?
-ifelse([$1],[],,
- [gtk_doc_min_version=$1
- if test "$have_gtk_doc" = yes; then
- AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
- if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- have_gtk_doc=no
- fi
- fi
-])
- if test "$have_gtk_doc" != yes; then
- enable_gtk_doc=no
- fi
- fi
-
- AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
- AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
-])
-
-# AX_C_FLOAT_WORDS_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE],
-# [ACTION-IF-UNKNOWN])
-#
-# Checks the ordering of words within a multi-word float. This check
-# is necessary because on some systems (e.g. certain ARM systems), the
-# float word ordering can be different from the byte ordering. In a
-# multi-word float context, "big-endian" implies that the word containing
-# the sign bit is found in the memory location with the lowest address.
-# This implemenation was inspired by the AC_C_BIGENDIAN macro in autoconf.
-# -------------------------------------------------------------------------
-AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
- [AC_CACHE_CHECK(whether float word ordering is bigendian,
- ax_cv_c_float_words_bigendian, [
-
-# The endianess is detected by first compiling C code that contains a special
-# double float value, then grepping the resulting object file for certain
-# strings of ascii values. The double is specially crafted to have a
-# binary representation that corresponds with a simple string. In this
-# implementation, the string "noonsees" was selected because the individual
-# word values ("noon" and "sees") are palindromes, thus making this test
-# byte-order agnostic. If grep finds the string "noonsees" in the object
-# file, the target platform stores float words in big-endian order. If grep
-# finds "seesnoon", float words are in little-endian order. If neither value
-# is found, the user is instructed to specify the ordering.
-
-ax_cv_c_float_words_bigendian=unknown
-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
-
-double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
-
-]])], [
-
-if strings - conftest.$ac_objext | grep noonsees >/dev/null ; then
- ax_cv_c_float_words_bigendian=yes
-fi
-if strings - conftest.$ac_objext | grep seesnoon >/dev/null ; then
- if test "$ax_cv_c_float_words_bigendian" = unknown; then
- ax_cv_c_float_words_bigendian=no
- else
- ax_cv_c_float_words_bigendian=unknown
- fi
-fi
-
-])])
-
-case $ax_cv_c_float_words_bigendian in
- yes)
- m4_default([$1],
- [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
- [Define to 1 if your system stores words within floats
- with the most significant word first])]) ;;
- no)
- $2 ;;
- *)
- m4_default([$3],
- [AC_MSG_ERROR([
-
-Unknown float word ordering. You need to manually preset
-ax_cv_c_float_words_bigendian=no (or yes) according to your system.
-
- ])]) ;;
-esac
-
-])# AX_C_FLOAT_WORDS_BIGENDIAN
-
-
-
-dnl ==========================================================================
-dnl
-dnl Cairo-specific macros
-dnl
-m4_pattern_forbid([CAIRO])
-m4_pattern_forbid([^cr_])
-
-dnl ==========================================================================
-
-dnl Usage:
-dnl CAIRO_BIGENDIAN
-dnl
-AC_DEFUN([CAIRO_BIGENDIAN], [
- case $host_os in
- darwin*)
- AH_VERBATIM([X_BYTE_ORDER],
-[
-/* Deal with multiple architecture compiles on Mac OS X */
-#ifdef __APPLE_CC__
-#ifdef __BIG_ENDIAN__
-#define WORDS_BIGENDIAN 1
-#define FLOAT_WORDS_BIGENDIAN 1
-#else
-#undef WORDS_BIGENDIAN
-#undef FLOAT_WORDS_BIGENDIAN
-#endif
-#endif
-])
- ;;
- *)
- AC_C_BIGENDIAN
- AX_C_FLOAT_WORDS_BIGENDIAN
- ;;
- esac
-])
-
-dnl CAIRO_CHECK_FUNCS_WITH_FLAGS(FUNCTION..., CFLAGS, LIBS
-dnl [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Like AC_CHECK_FUNCS but with additional CFLAGS and LIBS
-dnl --------------------------------------------------------------------
-AC_DEFUN([CAIRO_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 CAIRO_CONFIG_COMMANDS is like AC_CONFIG_COMMANDS, except that:
-dnl
-dnl 1) It redirects the stdout of the command to the file.
-dnl 2) It does not recreate the file if contents didn't change.
-dnl
-AC_DEFUN([CAIRO_CONFIG_COMMANDS],
-[
- AC_CONFIG_COMMANDS($1,
- [
- _config_file=$1
- _tmp_file=cairoconf.tmp
- AC_MSG_NOTICE([creating $_config_file])
- {
- $2
- } >> "$_tmp_file" ||
- AC_MSG_ERROR([failed to write to $_tmp_file])
-
- if cmp -s "$_tmp_file" "$_config_file"; then
- AC_MSG_NOTICE([$_config_file is unchanged])
- rm -f "$_tmp_file"
- else
- mv "$_tmp_file" "$_config_file" ||
- AC_MSG_ERROR([failed to update $_config_file])
- fi
- ], $3)
-])
-
-dnl check compiler flags
-AC_DEFUN([CAIRO_CC_TRY_FLAG],
-[
- AC_MSG_CHECKING([whether $CC supports $1])
-
- _save_cflags="$CFLAGS"
- CFLAGS="$CFLAGS -Werror $1"
- AC_COMPILE_IFELSE([ ], [cairo_cc_flag=yes], [cairo_cc_flag=no])
- CFLAGS="$_save_cflags"
-
- if test "x$cairo_cc_flag" = "xyes"; then
- ifelse([$2], , :, [$2])
- else
- ifelse([$3], , :, [$3])
- fi
- AC_MSG_RESULT([$cairo_cc_flag])
-])
-
-dnl Usage:
-dnl CAIRO_CHECK_NATIVE_ATOMIC_PRIMITIVES
-AC_DEFUN([CAIRO_CHECK_NATIVE_ATOMIC_PRIMITIVES],
-[
- AC_CACHE_CHECK([for native atomic primitives], cairo_cv_atomic_primitives,
- [
- cairo_cv_atomic_primitives="none"
-
- AC_TRY_LINK([int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); }], [],
- cairo_cv_atomic_primitives="Intel"
- )
- ])
- if test "x$cairo_cv_atomic_primitives" = xIntel; then
- AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1,
- [Enable if your compiler supports the Intel __sync_* atomic primitives])
- fi
-])
-
-dnl Usage:
-dnl CAIRO_CHECK_ATOMIC_OP_NEEDS_MEMORY_BARRIER
-AC_DEFUN([CAIRO_CHECK_ATOMIC_OP_NEEDS_MEMORY_BARRIER],
-[
- AC_CACHE_CHECK([whether atomic ops require a memory barrier], cairo_cv_atomic_op_needs_memory_barrier,
- [
- case $host_cpu in
- i?86) cairo_cv_atomic_op_needs_memory_barrier="no" ;;
- x86_64) cairo_cv_atomic_op_needs_memory_barrier="no" ;;
- arm*) cairo_cv_atomic_op_needs_memory_barrier="no" ;;
- *) cairo_cv_atomic_op_needs_memory_barrier="yes" ;;
- esac
- ])
- if test "x$cairo_cv_atomic_op_needs_memory_barrier" = "xyes"; then
- AC_DEFINE_UNQUOTED(ATOMIC_OP_NEEDS_MEMORY_BARRIER, 1,
- [whether memory barriers are needed around atomic operations])
- fi
-])
-
-dnl Parse Version.mk and declare m4 variables out of it
-m4_define([CAIRO_PARSE_VERSION],
- m4_translit(
- m4_bpatsubst(m4_include(cairo-version.h),
- [^.define \([a-zA-Z0-9_]*\) *\([0-9][0-9]*\)],
- [[m4_define(\1, \[\2\])]]),
- [A-Z], [a-z])
-)
-
dnl [m4_newline] didn't appear until autoconf 2.62
m4_ifdef([m4_newline],,m4_define([m4_newline],[
]))
diff --git a/autogen.sh b/autogen.sh
index 7dd9016..cf00ce9 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -15,6 +15,7 @@ cd $srcdir
PACKAGE=cairo
LIBTOOLIZE_FLAGS="--copy --force --automake"
+ACLOCAL_FLAGS="-I build"
AUTOHEADER=${AUTOHEADER-autoheader}
AUTOMAKE_FLAGS="--add-missing --gnu -Wall"
AUTOCONF=${AUTOCONF-autoconf}
@@ -143,21 +144,6 @@ ACLOCAL=`echo $AUTOMAKE | sed s/automake/aclocal/`
version_check libtool LIBTOOLIZE "$LIBTOOLIZE glibtoolize libtoolize" $libtoolize_min_vers \
"http://ftp.gnu.org/pub/gnu/libtool/libtool-${libtool_min_vers}.tar.gz" || DIE=1
-if test -n "$ACLOCAL" && test -z "$ACLOCAL_FLAGS"; then
- acdir=`$ACLOCAL --print-ac-dir`
- if [ ! -f $acdir/pkg.m4 ]; then
- echo "$ARGV0: Error: Could not find pkg-config macros."
- echo " (Looked in $acdir/pkg.m4)"
- echo " If pkg.m4 is available in /another/directory, please set"
- echo " ACLOCAL_FLAGS=\"-I /another/directory\""
- echo " Otherwise, please install pkg-config."
- echo ""
- echo "pkg-config is available from:"
- echo "http://www.freedesktop.org/software/pkgconfig/"
- DIE=1
- fi
-fi
-
if test -n "$DIE"; then
exit 1
fi
diff --git a/build/aclocal.cairo.m4 b/build/aclocal.cairo.m4
new file mode 100644
index 0000000..ce0c5a7
--- /dev/null
+++ b/build/aclocal.cairo.m4
@@ -0,0 +1,146 @@
+
+dnl ==========================================================================
+dnl
+dnl Cairo-specific macros
+dnl
+m4_pattern_forbid([CAIRO])
+m4_pattern_forbid([^cr_])
+
+dnl ==========================================================================
+
+dnl Parse Version.mk and declare m4 variables out of it
+m4_define([CAIRO_PARSE_VERSION],dnl
+ m4_translit(dnl
+ m4_bpatsubst(m4_include(cairo-version.h),
+ [^.define \([a-zA-Z0-9_]*\) *\([0-9][0-9]*\)],
+ [[m4_define(\1, \[\2\])]]),
+ [A-Z], [a-z])dnl
+)dnl
+
+dnl ==========================================================================
+
+dnl Usage:
+dnl CAIRO_BIGENDIAN
+dnl
+AC_DEFUN([CAIRO_BIGENDIAN],
+[dnl
+ case $host_os in
+ darwin*)
+ AH_VERBATIM([X_BYTE_ORDER],
+[
+/* Deal with multiple architecture compiles on Mac OS X */
+#ifdef __APPLE_CC__
+#ifdef __BIG_ENDIAN__
+#define WORDS_BIGENDIAN 1
+#define FLOAT_WORDS_BIGENDIAN 1
+#else
+#undef WORDS_BIGENDIAN
+#undef FLOAT_WORDS_BIGENDIAN
+#endif
+#endif
+])
+ ;;
+ *)
+ AC_C_BIGENDIAN
+ AX_C_FLOAT_WORDS_BIGENDIAN
+ ;;
+ esac
+])
+
+dnl CAIRO_CHECK_FUNCS_WITH_FLAGS(FUNCTION..., CFLAGS, LIBS
+dnl [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Like AC_CHECK_FUNCS but with additional CFLAGS and LIBS
+dnl --------------------------------------------------------------------
+AC_DEFUN([CAIRO_CHECK_FUNCS_WITH_FLAGS],
+[dnl
+ _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 CAIRO_CONFIG_COMMANDS is like AC_CONFIG_COMMANDS, except that:
+dnl
+dnl 1) It redirects the stdout of the command to the file.
+dnl 2) It does not recreate the file if contents didn't change.
+dnl
+AC_DEFUN([CAIRO_CONFIG_COMMANDS],
+[dnl
+ AC_CONFIG_COMMANDS($1,
+ [
+ _config_file=$1
+ _tmp_file=cairoconf.tmp
+ AC_MSG_NOTICE([creating $_config_file])
+ {
+ $2
+ } >> "$_tmp_file" ||
+ AC_MSG_ERROR([failed to write to $_tmp_file])
+
+ if cmp -s "$_tmp_file" "$_config_file"; then
+ AC_MSG_NOTICE([$_config_file is unchanged])
+ rm -f "$_tmp_file"
+ else
+ mv "$_tmp_file" "$_config_file" ||
+ AC_MSG_ERROR([failed to update $_config_file])
+ fi
+ ], $3)
+])
+
+dnl check compiler flags
+AC_DEFUN([CAIRO_CC_TRY_FLAG],
+[dnl
+ AC_MSG_CHECKING([whether $CC supports $1])
+
+ _save_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror $1"
+ AC_COMPILE_IFELSE([ ], [cairo_cc_flag=yes], [cairo_cc_flag=no])
+ CFLAGS="$_save_cflags"
+
+ if test "x$cairo_cc_flag" = "xyes"; then
+ ifelse([$2], , :, [$2])
+ else
+ ifelse([$3], , :, [$3])
+ fi
+ AC_MSG_RESULT([$cairo_cc_flag])
+])
+
+dnl Usage:
+dnl CAIRO_CHECK_NATIVE_ATOMIC_PRIMITIVES
+AC_DEFUN([CAIRO_CHECK_NATIVE_ATOMIC_PRIMITIVES],
+[dnl
+ AC_CACHE_CHECK([for native atomic primitives], cairo_cv_atomic_primitives,
+ [
+ cairo_cv_atomic_primitives="none"
+
+ AC_TRY_LINK([int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); }], [],
+ cairo_cv_atomic_primitives="Intel"
+ )
+ ])
+ if test "x$cairo_cv_atomic_primitives" = xIntel; then
+ AC_DEFINE(HAVE_INTEL_ATOMIC_PRIMITIVES, 1,
+ [Enable if your compiler supports the Intel __sync_* atomic primitives])
+ fi
+])
+
+dnl Usage:
+dnl CAIRO_CHECK_ATOMIC_OP_NEEDS_MEMORY_BARRIER
+AC_DEFUN([CAIRO_CHECK_ATOMIC_OP_NEEDS_MEMORY_BARRIER],
+[dnl
+ AC_CACHE_CHECK([whether atomic ops require a memory barrier], cairo_cv_atomic_op_needs_memory_barrier,
+ [
+ case $host_cpu in
+ i?86) cairo_cv_atomic_op_needs_memory_barrier="no" ;;
+ x86_64) cairo_cv_atomic_op_needs_memory_barrier="no" ;;
+ arm*) cairo_cv_atomic_op_needs_memory_barrier="no" ;;
+ *) cairo_cv_atomic_op_needs_memory_barrier="yes" ;;
+ esac
+ ])
+ if test "x$cairo_cv_atomic_op_needs_memory_barrier" = "xyes"; then
+ AC_DEFINE_UNQUOTED(ATOMIC_OP_NEEDS_MEMORY_BARRIER, 1,
+ [whether memory barriers are needed around atomic operations])
+ fi
+])
+
diff --git a/build/aclocal.enable.m4 b/build/aclocal.enable.m4
new file mode 100644
index 0000000..b3a0d82
--- /dev/null
+++ b/build/aclocal.enable.m4
@@ -0,0 +1,439 @@
+dnl
+dnl These are the facilities for enable/disabling various features,
+dnl and for collecting CFLAGS/LIBS and generating per feature .pc
+dnl files, assembling list of source files to compile, creating
+dnl cairo-features.h and other generated files, etc...
+dnl
+
+dnl ===========================================================================
+
+dnl
+dnl Used to force cache invalidation
+dnl
+m4_define([cr_cache_version], [6])
+
+dnl
+dnl Define a macro to enable features
+dnl - Macro: _CAIRO_ENABLE (ID, NAME, WHAT, DEFAULT, COMMANDS)
+dnl
+dnl where:
+dnl
+dnl ID is the sub-namespace in function names, eg. "ft" for cairo_ft_...
+dnl NAME is the human-readable name of the feature, eg. "FreeType font"
+dnl WHAT is the type of feature:
+dnl "surface" for surface backends
+dnl "font" for font backends
+dnl "functions" for set of functions
+dnl "" for private configurations
+dnl DEFAULT is the default state of the feature:
+dnl "no" for experimental features, eg. your favorite new backend
+dnl "yes" for recommended features, eg. png functions
+dnl "auto" for other supported features, eg. xlib surface backend
+dnl "always" for mandatory features (can't be disabled), eg. image surface backend
+dnl COMMANDS are run to check whether the feature can be enabled. Their
+dnl result may be cached, so user should not count on them being run.
+dnl They should set use_$(ID) to something other than yes if the
+dnl feature cannot be built, eg. "no (requires SomeThing)". It then
+dnl should also set $(ID)_REQUIRES/CFLAGS/LIBS/...
+dnl appropriately. Look at the macro definition for more details,
+dnl or ask if in doubt.
+dnl
+AC_DEFUN([_CAIRO_ENABLE],
+[dnl
+ dnl Sanity check ID
+ m4_if(
+ [$1],
+ m4_tolower(AS_TR_SH([$1])),
+ ,
+ [m4_fatal([invalid feature name `$1'])]
+ )dnl
+ m4_pushdef([cr_feature], [$1])dnl
+ m4_pushdef([cr_feature_name], m4_normalize([$2]))dnl
+ m4_pushdef([cr_feature_what], m4_normalize([$3]))dnl
+ m4_pushdef([cr_feature_default], m4_normalize([$4]))dnl
+ m4_pushdef([cr_feature_commands], [$5])dnl
+ m4_pushdef([cr_feature_commands_len], m4_len([$5]))dnl
+ dnl
+ m4_pushdef([cr_feature_arg], m4_translit([$1],_,-))dnl
+ dnl
+ dnl Sanity check default
+ m4_case(
+ cr_feature_default,
+ [no],,
+ [yes],,
+ [auto],,
+ [always],,
+ [m4_fatal([Invalid default value `]cr_feature_default[' for feature `]cr_feature['])]
+ )dnl
+ dnl
+ m4_if(cr_feature_default, [always],
+ [dnl
+ enable_$1=yes
+ ],[dnl
+ AC_ARG_ENABLE(cr_feature_arg,
+ AS_HELP_STRING([--enable-]cr_feature_arg[=@<:@no/auto/yes@:>@],
+ [Enable cairo's ]cr_feature_name[ feature @<:@default=]cr_feature_default[@:>@]),
+ enable_$1=$enableval, enable_$1=cr_feature_default)
+ ])dnl
+ dnl
+ AS_CASE([$enable_$1],
+ [no],[dnl
+ use_$1="no (disabled, use --enable-cr_feature_arg to enable)"
+ ],dnl
+ [yes|auto],[dnl
+ dnl Cache invalidating:
+ dnl
+ dnl To be extremely user-friendly, we discard cache results if
+ dnl any of the following conditions happens:
+ dnl
+ dnl - Global cache version changes
+ dnl This is used to force a cache invalidation for these
+ dnl macros
+ dnl
+ dnl - Set of cached variables changes
+ dnl (XXX should also do if the default value of such
+ dnl variables changes. Argh...)
+ dnl
+ dnl - Length of the COMMANDS string changes!
+ dnl (This is much more friendly to the cache than caching
+ dnl the commands string itself. Note that this still does
+ dnl not catch all valid cases where we should be
+ dnl invalidting. For example if COMMANDS uses
+ dnl variables/macros defined outside, we don't detect changes
+ dnl in those variables. Also doesn't detect in-place
+ dnl modifications like bumping verson numbers.
+ dnl Just modify COMMANDS in an obvious way to force recheck.
+ dnl Hashing sounds a bit too harsh to do here...)
+ dnl
+ dnl - If feature is requested and cached results for enabling
+ dnl feature is no. We are going to terminate with an error
+ dnl if this happens anyway, so we can be more friendly by
+ dnl assuming that user installed some missing pieces since
+ dnl last time and so we recheck. Although even in that
+ dnl case other cached values probably get in the way...
+ dnl
+ AS_IF([test "x$cairo_cv_[]$1[]_cache_version" != "x[]cr_cache_version" -o \
+ "x$cairo_cv_[]$1[]_cache_commands_len" != "x[]cr_feature_commands_len" -o \
+ "x$cairo_cv_[]$1[]_cache_vars" != "x[]_CAIRO_FEATURE_VARS"],
+ [unset cairo_cv_[]$1[]_use])
+ AS_IF([test "x$enable_$1" = xyes -a "x$cairo_cv_[]$1[]_use" != xyes],
+ [unset cairo_cv_[]$1[]_use])
+
+ AC_CACHE_CHECK([for cairo's ]cr_feature_name[ feature], cairo_cv_[]$1[]_use,
+ [dnl
+ echo
+ use_[]$1=yes
+ CAIRO_FEATURE_VARS_FOREACH(cr_var, [cr_feature[_]cr_var[=]m4_do([cr_var_default_]cr_var[_value])]m4_newline)
+ cr_feature_commands
+ cairo_cv_[]$1[]_use=$use_[]$1
+ cairo_cv_[]$1[]_cache_vars="_CAIRO_FEATURE_VARS"
+ cairo_cv_[]$1[]_cache_commands_len="cr_feature_commands_len"
+ cairo_cv_[]$1[]_cache_version="cr_cache_version"
+ CAIRO_FEATURE_VARS_FOREACH([cr_var], [[cairo_cv_]cr_feature[_]cr_var[=$]cr_feature[_]cr_var]m4_newline)
+ AC_MSG_CHECKING([whether cairo's ]cr_feature_name[ feature could be enabled])
+ ])dnl
+
+ use_[]$1=$cairo_cv_[]$1[]_use
+
+ AS_IF([test "x$enable_$1" = "xyes" -a "x$use_$1" != xyes],
+ [dnl
+ AC_MSG_ERROR(
+ m4_case(cr_feature_default,
+ [always], [mandatory],
+ [yes], [recommended],
+ , [requested]
+ ) cr_feature_name[ feature could not be enabled])
+ ])dnl
+ ],dnl
+ [dnl
+ AC_MSG_ERROR([invalid argument passed to --enable-]cr_feature_arg[: `$use_$1', should be one of @<:@no/auto/yes@:>@])
+ ])dnl
+
+ AS_IF([test "x$use_$1" = "xyes"],
+ [dnl
+ CAIRO_FEATURE_VARS_FOREACH([cr_var], [cr_feature[_]cr_var[=$cairo_cv_]cr_feature[_]cr_var]m4_newline)
+ CAIRO_ACCUMULATED_FEATURE_VARS_FOREACH([cr_var],
+ [dnl
+ CAIRO_ACCUMULATE_UNQUOTED_BEFORE(cr_var, [$]cr_feature[_]cr_var)
+ ])dnl
+ ],[dnl
+ dnl If not enabled, empty the vars so no one accidentally uses them.
+ CAIRO_FEATURE_VARS_FOREACH([cr_var], [cr_feature[_]cr_var[=$cairo_cv_]cr_feature[_]cr_var]m4_newline)
+ ])dnl
+
+ _CAIRO_FEATURE_HOOKS(cr_feature, cr_feature_name, cr_feature_default, cr_feature_what)dnl
+
+ m4_popdef([cr_feature])dnl
+ m4_popdef([cr_feature_name])dnl
+ m4_popdef([cr_feature_what])dnl
+ m4_popdef([cr_feature_default])dnl
+ m4_popdef([cr_feature_commands])dnl
+ m4_popdef([cr_feature_commands_len])dnl
+ m4_popdef([cr_feature_arg])dnl
+])
+
+
+dnl ===========================================================================
+
+m4_define([_CAIRO_FEATURE_VARS])
+
+dnl
+dnl CAIRO_FEATURE_VARS_REGISTER(VARS, DEFAULT-VALUE=[])
+dnl
+dnl Registers variables to be collected from feature-enabling code segments.
+dnl VARS should be a whitespace-separate list of variable names.
+dnl
+dnl DEFAULT-VALUE is m4 macros to set default value of VARS
+dnl
+AC_DEFUN([CAIRO_FEATURE_VARS_REGISTER],
+[dnl
+ m4_foreach_w([cr_var], [$1],
+ [m4_append_uniq([_CAIRO_FEATURE_VARS], cr_var, [ ],,
+ [m4_fatal([Feature variable `]cr_var[' already registered])])])dnl
+ m4_foreach_w([cr_var], [$1],
+ [dnl
+ m4_define([cr_var_default_]cr_var[_value], m4_default([$2],[[$ac_env_[]]cr_feature[[]_]]cr_var[[_value]]))dnl
+ ])dnl
+])
+
+dnl
+dnl CAIRO_FEATURE_VARS_FOREACH(VAR, COMMANDS)
+dnl
+dnl Run COMMANDS for each registered feature variable.
+dnl Defines VAR to the variable being processed.
+dnl
+AC_DEFUN([CAIRO_FEATURE_VARS_FOREACH],
+[dnl
+ m4_foreach_w([$1], m4_defn([_CAIRO_FEATURE_VARS]), [$2])dnl
+])
+
+
+dnl ===========================================================================
+
+m4_define([_CAIRO_ACCUMULATORS])dnl
+
+m4_define([_CAIRO_ACCUMULATORS_REGISTER],
+[dnl
+ m4_foreach_w([cr_var], [$1],
+ [m4_append_uniq([_CAIRO_ACCUMULATORS], cr_var, [ ],,
+ [m4_fatal([Accumulator `]cr_var[' already registered])])])dnl
+ m4_foreach_w([cr_var], [$1], [m4_define([cr_acc_]cr_var[_sep], [$2])])dnl
+ m4_foreach_w([cr_var], [$1], [[CAIRO_]cr_var[=$3]]m4_newline)dnl
+ m4_foreach_w([cr_var], [$1], [m4_pattern_allow([CAIRO_]cr_var)])dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATORS_REGISTER(VARS, SEPARATOR=[], INITIAL-VALUE=[])
+dnl
+dnl Registers accumulators. An accumulator is a shell variable that can
+dnl be accumulated to. The macros take care of adding a SEPARATOR between
+dnl accumulated values.
+dnl
+dnl VARS should be a whitespace-separate list of variable names. The actual
+dnl shell variable resulting for each variable is prefixed with CAIRO_.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATORS_REGISTER],
+[dnl
+ _CAIRO_ACCUMULATORS_REGISTER([$1],[$2],['$3'])dnl
+])dnl
+
+dnl
+dnl Like CAIRO_ACCUMULATORS_REGISTER but INITIAL-VALUE is left unquoted,
+dnl so it can reference other shell variables for example.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATORS_REGISTER_UNQUOTED],
+[dnl
+ _CAIRO_ACCUMULATORS_REGISTER([$1],[$2],["$3"])dnl
+])dnl
+
+m4_define([_CAIRO_ACCUMULATOR_CHECK],
+[dnl
+ m4_ifdef([cr_acc_$1_sep],,[m4_fatal([Accumulator ]$1[ not defined.])])dnl
+])dnl
+
+m4_define([_CAIRO_ACCUMULATE],
+[dnl
+ _CAIRO_ACCUMULATOR_CHECK([$1])dnl
+ m4_ifval([$2], [$3]m4_newline)dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATE(VAR, VALUE)
+dnl
+dnl Appends VALUE to accumulator VAR
+dnl
+AC_DEFUN([CAIRO_ACCUMULATE],
+[dnl
+ _CAIRO_ACCUMULATE([$1], [$2], [CAIRO_$1="${CAIRO_$1}]m4_do([cr_acc_$1_sep])["'$2'])dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATE(VAR, VALUE)
+dnl
+dnl Prepends VALUE to accumulator VAR
+dnl
+AC_DEFUN([CAIRO_ACCUMULATE_BEFORE],
+[dnl
+ _CAIRO_ACCUMULATE([$1], [$2], [CAIRO_$1='$2'"]m4_do([cr_acc_$1_sep])[${CAIRO_$1}"])dnl
+])dnl
+
+m4_define([_CAIRO_ACCUMULATE_UNQUOTED],
+[dnl
+ _CAIRO_ACCUMULATOR_CHECK([$1])dnl
+ m4_ifval([$2], [m4_bmatch([$2],[[$]],[test -n "$2" &&]) $3]m4_newline)dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATE_UNQUOTED(VAR, VALUE)
+dnl
+dnl Like CAIRO_ACCUMULATE but VALUE is left unquoted,
+dnl so it can reference other shell variables for example.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED],
+[dnl
+ _CAIRO_ACCUMULATE_UNQUOTED([$1], [$2], [CAIRO_$1="${CAIRO_$1}]m4_do([cr_acc_$1_sep])[$2"])dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATE_UNQUOTED_BEFORE(VAR, VALUE)
+dnl
+dnl Like CAIRO_ACCUMULATE_BEFORE but VALUE is left unquoted,
+dnl so it can reference other shell variables for example.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED_BEFORE],
+[dnl
+ _CAIRO_ACCUMULATE_UNQUOTED([$1], [$2], [CAIRO_$1="$2]m4_do([cr_acc_$1_sep])[${CAIRO_$1}"])dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATORS_FOREACH(VAR, COMMANDS)
+dnl
+dnl Run COMMANDS for each registered accumulator.
+dnl Defines VAR to the accumulator being processed.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATORS_FOREACH],
+[dnl
+ m4_foreach_w([$1], m4_defn([_CAIRO_ACCUMULATORS]), [$2])dnl
+])dnl
+
+
+dnl ===========================================================================
+
+m4_define([_CAIRO_ACCUMULATED_FEATURE_VARS])dnl
+
+dnl
+dnl CAIRO_ACCUMULATED_FEATURE_VARS_REGISTER(VARS, DEFAULT-VALUE=[], SEPARATOR=[], INITIAL-VALUE=[])
+dnl
+dnl Defines VARS as feature variables and accumulators. Also accumulates
+dnl (prepending, not appending) feature values for VARS.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATED_FEATURE_VARS_REGISTER],
+[dnl
+ m4_foreach_w([cr_var], [$1],
+ [m4_append_uniq([_CAIRO_ACCUMULATED_FEATURE_VARS], cr_var, [ ],,
+ [m4_fatal([Accumulated feature variable `]cr_var[' already registered])])])dnl
+ CAIRO_FEATURE_VARS_REGISTER([$1],[$2])dnl
+ CAIRO_ACCUMULATORS_REGISTER_UNQUOTED([$1],[$3],[$4])dnl
+])dnl
+
+dnl
+dnl CAIRO_ACCUMULATED_FEATURE_VARS_FOREACH(VAR, COMMANDS)
+dnl
+dnl Run COMMANDS for each registered accumulated feature variable.
+dnl Defines VAR to the variable being processed.
+dnl
+AC_DEFUN([CAIRO_ACCUMULATED_FEATURE_VARS_FOREACH],
+[dnl
+ m4_foreach_w([$1], m4_defn([_CAIRO_ACCUMULATED_FEATURE_VARS]), [$2])dnl
+])dnl
+
+dnl ===========================================================================
+
+dnl
+dnl CAIRO_FEATURE_IF_ENABLED(FEATURE=cr_feature, COMMANDS)
+dnl
+dnl Run COMMANDS if FEATURE is enabled.
+dnl
+AC_DEFUN([CAIRO_FEATURE_IF_ENABLED],
+[dnl
+ AS_IF([test "x$use_]m4_default([$1], cr_feature)[" = xyes], [$2], [$3])dnl
+])dnl
+
+m4_define([_CAIRO_FEATURE_HOOK_MATCH_SH_BOOL],
+[dnl
+ m4_case([$1],
+ [*], [$3],
+ [no], [AS_IF([test "x$2" != xyes], [:m4_newline()$3])],
+ [yes], [AS_IF([test "x$2" = xyes], [:m4_newline()$3])],
+ [m4_fatal([Invalid ENABLED value `]$1['])])dnl
+])dnl
+
+m4_define([_CAIRO_FEATURE_HOOK_MATCH_M4],
+[dnl
+ m4_case([$1],
+ [*], [$3],
+ [$2], [$3],
+ [!$2], ,
+ [m4_bmatch([$1], [^!], [$3])])dnl
+])dnl
+
+m4_define([_CAIRO_FEATURE_HOOKS])dnl
+
+dnl
+dnl CAIRO_FEATURE_HOOK_REGISTER(ENABLED, DEFAULT, WHAT, COMMANDS)
+dnl
+dnl ENABLED is the feature enabledness to match
+dnl DEFAULT is the default value of features to match
+dnl WHAT is the type of features to match
+dnl COMMANDS is commands to run for matched features.
+dnl
+dnl Runs COMMANDS for features matching ENABLED, DEFAULT, and WHAT.
+dnl Hooks are run for each feature in the order they are added.
+dnl
+dnl DEFAULT and WHAT are matched like this:
+dnl [*] matches all values
+dnl [val] matches [val]
+dnl [!val] matches anything other than [val]
+dnl
+dnl ENABLED is matched like this:
+dnl [yes] matches enabled features
+dnl [no] matches disabled features
+dnl [*] matches all features
+dnl
+dnl The following macros can be used in COMMANDS:
+dnl
+dnl cr_feature expands to the feature id, eg "ft"
+dnl cr_feature_name expands to the human-readable name of the feature, eg. "FreeType font"
+dnl cr_feature_default expands to the default state of the feature:
+dnl "no" for experimental features, eg. your favorite new backend
+dnl "yes" for recommended features, eg. png functions
+dnl "auto" for other supported features, eg. xlib surface backend
+dnl "always" for mandatory features (can't be disabled), eg. image surface backend
+dnl cr_what expands to the type of feature:
+dnl "surface" for surface backends
+dnl "font" for font backends
+dnl "functions" for set of functions
+dnl "" for private configurations
+dnl
+dnl These four values are also set as $1 to $4. To know if feature was
+dnl enabled from within COMMANDS, use CAIRO_FEATURE_IF_ENABLED:
+dnl
+dnl CAIRO_FEATURE_IF_ENABLED($1, [IF-ENABLED], [IF-DISABLED])
+dnl
+dnl or compare $use_$1 to string "yes". As in:
+dnl
+dnl AS_IF([test "x$use_$1" = "xyes"], [IF-ENABLED], [IF-DISABLED])
+dnl
+AC_DEFUN([CAIRO_FEATURE_HOOK_REGISTER],
+[dnl
+ m4_append([_CAIRO_FEATURE_HOOKS],
+ [dnl
+ _CAIRO_FEATURE_HOOK_MATCH_M4([$2], cr_feature_default,
+ [_CAIRO_FEATURE_HOOK_MATCH_M4([$3], cr_feature_what,
+ [_CAIRO_FEATURE_HOOK_MATCH_SH_BOOL([$1], [$use_]cr_feature,
+ [$4]
+ )])])dnl
+ ], m4_newline)dnl
+])dnl
+
+
diff --git a/build/aclocal.float.m4 b/build/aclocal.float.m4
new file mode 100644
index 0000000..18ec316
--- /dev/null
+++ b/build/aclocal.float.m4
@@ -0,0 +1,64 @@
+# AX_C_FLOAT_WORDS_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE],
+# [ACTION-IF-UNKNOWN])
+#
+# Checks the ordering of words within a multi-word float. This check
+# is necessary because on some systems (e.g. certain ARM systems), the
+# float word ordering can be different from the byte ordering. In a
+# multi-word float context, "big-endian" implies that the word containing
+# the sign bit is found in the memory location with the lowest address.
+# This implemenation was inspired by the AC_C_BIGENDIAN macro in autoconf.
+# -------------------------------------------------------------------------
+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
+ [AC_CACHE_CHECK(whether float word ordering is bigendian,
+ ax_cv_c_float_words_bigendian, [
+
+# The endianess is detected by first compiling C code that contains a special
+# double float value, then grepping the resulting object file for certain
+# strings of ascii values. The double is specially crafted to have a
+# binary representation that corresponds with a simple string. In this
+# implementation, the string "noonsees" was selected because the individual
+# word values ("noon" and "sees") are palindromes, thus making this test
+# byte-order agnostic. If grep finds the string "noonsees" in the object
+# file, the target platform stores float words in big-endian order. If grep
+# finds "seesnoon", float words are in little-endian order. If neither value
+# is found, the user is instructed to specify the ordering.
+
+ax_cv_c_float_words_bigendian=unknown
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+
+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
+
+]])], [
+
+if strings - conftest.$ac_objext | grep noonsees >/dev/null ; then
+ ax_cv_c_float_words_bigendian=yes
+fi
+if strings - conftest.$ac_objext | grep seesnoon >/dev/null ; then
+ if test "$ax_cv_c_float_words_bigendian" = unknown; then
+ ax_cv_c_float_words_bigendian=no
+ else
+ ax_cv_c_float_words_bigendian=unknown
+ fi
+fi
+
+])])
+
+case $ax_cv_c_float_words_bigendian in
+ yes)
+ m4_default([$1],
+ [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
+ [Define to 1 if your system stores words within floats
+ with the most significant word first])]) ;;
+ no)
+ $2 ;;
+ *)
+ m4_default([$3],
+ [AC_MSG_ERROR([
+
+Unknown float word ordering. You need to manually preset
+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
+
+ ])]) ;;
+esac
+
+])# AX_C_FLOAT_WORDS_BIGENDIAN
diff --git a/build/aclocal.gtk-doc.m4 b/build/aclocal.gtk-doc.m4
new file mode 100644
index 0000000..bfdfa1d
--- /dev/null
+++ b/build/aclocal.gtk-doc.m4
@@ -0,0 +1,39 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH([html-dir],
+ AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST([HTML_DIR])
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE([gtk-doc],
+ AS_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [[default=no]]]),,
+ [enable_gtk_doc=no])
+
+ if test x$enable_gtk_doc = xyes; then
+ ifelse([$1],[],
+ [PKG_CHECK_EXISTS([gtk-doc],,
+ AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
+ [PKG_CHECK_EXISTS([gtk-doc >= $1],,
+ AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build gtk-doc]))])
+ fi
+
+ AC_MSG_CHECKING([whether to build gtk-doc documentation])
+ AC_MSG_RESULT($enable_gtk_doc)
+
+ AC_PATH_PROGS(GTKDOC_CHECK,gtkdoc-check,)
+
+ AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+ AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+])
diff --git a/build/aclocal.pkg.m4 b/build/aclocal.pkg.m4
new file mode 100644
index 0000000..a0b9cd4
--- /dev/null
+++ b/build/aclocal.pkg.m4
@@ -0,0 +1,155 @@
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# Copyright © 2004 Scott James Remnant <scott at netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
diff --git a/build/configure.ac.enable b/build/configure.ac.enable
index afb797f..aa5d71d 100644
--- a/build/configure.ac.enable
+++ b/build/configure.ac.enable
@@ -1,450 +1,3 @@
-dnl
-dnl These are the facilities for enable/disabling various features,
-dnl and for collecting CFLAGS/LIBS and generating per feature .pc
-dnl files, assembling list of source files to compile, and creating
-dnl cairo-features.h and other generated files.
-dnl
-
-dnl ===========================================================================
-
-dnl
-dnl Used to force cache invalidation
-dnl
-m4_define([cr_cache_version], [6])
-
-dnl
-dnl Define a macro to enable features
-dnl - Macro: _CAIRO_ENABLE (ID, NAME, WHAT, DEFAULT, COMMANDS)
-dnl
-dnl where:
-dnl
-dnl ID is the sub-namespace in function names, eg. "ft" for cairo_ft_...
-dnl NAME is the human-readable name of the feature, eg. "FreeType font"
-dnl WHAT is the type of feature:
-dnl "surface" for surface backends
-dnl "font" for font backends
-dnl "functions" for set of functions
-dnl "" for private configurations
-dnl DEFAULT is the default state of the feature:
-dnl "no" for experimental features, eg. your favorite new backend
-dnl "yes" for recommended features, eg. png functions
-dnl "auto" for other supported features, eg. xlib surface backend
-dnl "always" for mandatory features (can't be disabled), eg. image surface backend
-dnl COMMANDS are run to check whether the feature can be enabled. Their
-dnl result may be cached, so user should not count on them being run.
-dnl They should set use_$(ID) to something other than yes if the
-dnl feature cannot be built, eg. "no (requires SomeThing)". It then
-dnl should also set $(ID)_REQUIRES/CFLAGS/LIBS/...
-dnl appropriately. Look at the macro definition for more details,
-dnl or ask if in doubt.
-dnl
-AC_DEFUN([_CAIRO_ENABLE],
-[dnl
- dnl Sanity check ID
- m4_if(
- [$1],
- m4_tolower(AS_TR_SH([$1])),
- ,
- [m4_fatal([invalid feature name `$1'])]
- )dnl
- m4_pushdef([cr_feature], [$1])dnl
- m4_pushdef([cr_feature_name], m4_normalize([$2]))dnl
- m4_pushdef([cr_feature_what], m4_normalize([$3]))dnl
- m4_pushdef([cr_feature_default], m4_normalize([$4]))dnl
- m4_pushdef([cr_feature_commands], [$5])dnl
- m4_pushdef([cr_feature_commands_len], m4_len([$5]))dnl
- dnl
- m4_pushdef([cr_feature_arg], m4_translit([$1],_,-))dnl
- dnl
- dnl Sanity check default
- m4_case(
- cr_feature_default,
- [no],,
- [yes],,
- [auto],,
- [always],,
- [m4_fatal([Invalid default value `]cr_feature_default[' for feature `]cr_feature['])]
- )dnl
- dnl
- m4_if(cr_feature_default, [always],
- [dnl
- enable_$1=yes
- ],[dnl
- AC_ARG_ENABLE(cr_feature_arg,
- AS_HELP_STRING([--enable-]cr_feature_arg[=@<:@no/auto/yes@:>@],
- [Enable cairo's ]cr_feature_name[ feature @<:@default=]cr_feature_default[@:>@]),
- enable_$1=$enableval, enable_$1=cr_feature_default)
- ])dnl
- dnl
- AS_CASE([$enable_$1],
- [no],[dnl
- use_$1="no (disabled, use --enable-cr_feature_arg to enable)"
- ],dnl
- [yes|auto],[dnl
- dnl Cache invalidating:
- dnl
- dnl To be extremely user-friendly, we discard cache results if
- dnl any of the following conditions happens:
- dnl
- dnl - Global cache version changes
- dnl This is used to force a cache invalidation for these
- dnl macros
- dnl
- dnl - Set of cached variables changes
- dnl (XXX should also do if the default value of such
- dnl variables changes. Argh...)
- dnl
- dnl - Length of the COMMANDS string changes!
- dnl (This is much more friendly to the cache than caching
- dnl the commands string itself. Note that this still does
- dnl not catch all valid cases where we should be
- dnl invalidting. For example if COMMANDS uses
- dnl variables/macros defined outside, we don't detect changes
- dnl in those variables. Also doesn't detect in-place
- dnl modifications like bumping verson numbers.
- dnl Just modify COMMANDS in an obvious way to force recheck.
- dnl Hashing sounds a bit too harsh to do here...)
- dnl
- dnl - If feature is requested and cached results for enabling
- dnl feature is no. We are going to terminate with an error
- dnl if this happens anyway, so we can be more friendly by
- dnl assuming that user installed some missing pieces since
- dnl last time and so we recheck. Although even in that
- dnl case other cached values probably get in the way...
- dnl
- AS_IF([test "x$cairo_cv_[]$1[]_cache_version" != "x[]cr_cache_version" -o \
- "x$cairo_cv_[]$1[]_cache_commands_len" != "x[]cr_feature_commands_len" -o \
- "x$cairo_cv_[]$1[]_cache_vars" != "x[]_CAIRO_FEATURE_VARS"],
- [unset cairo_cv_[]$1[]_use])
- AS_IF([test "x$enable_$1" = xyes -a "x$cairo_cv_[]$1[]_use" != xyes],
- [unset cairo_cv_[]$1[]_use])
-
- AC_CACHE_CHECK([for cairo's ]cr_feature_name[ feature], cairo_cv_[]$1[]_use,
- [dnl
- echo
- use_[]$1=yes
- CAIRO_FEATURE_VARS_FOREACH(cr_var, [cr_feature[_]cr_var[=]m4_do([cr_var_default_]cr_var[_value])]m4_newline)
- cr_feature_commands
- cairo_cv_[]$1[]_use=$use_[]$1
- cairo_cv_[]$1[]_cache_vars="_CAIRO_FEATURE_VARS"
- cairo_cv_[]$1[]_cache_commands_len="cr_feature_commands_len"
- cairo_cv_[]$1[]_cache_version="cr_cache_version"
- CAIRO_FEATURE_VARS_FOREACH([cr_var], [[cairo_cv_]cr_feature[_]cr_var[=$]cr_feature[_]cr_var]m4_newline)
- AC_MSG_CHECKING([whether cairo's ]cr_feature_name[ feature could be enabled])
- ])dnl
-
- use_[]$1=$cairo_cv_[]$1[]_use
-
- AS_IF([test "x$enable_$1" = "xyes" -a "x$use_$1" != xyes],
- [dnl
- AC_MSG_ERROR(
- m4_case(cr_feature_default,
- [always], [mandatory],
- [yes], [recommended],
- , [requested]
- ) cr_feature_name[ feature could not be enabled])
- ])dnl
- ],dnl
- [dnl
- AC_MSG_ERROR([invalid argument passed to --enable-]cr_feature_arg[: `$use_$1', should be one of @<:@no/auto/yes@:>@])
- ])dnl
-
- AS_IF([test "x$use_$1" = "xyes"],
- [dnl
- CAIRO_FEATURE_VARS_FOREACH([cr_var], [cr_feature[_]cr_var[=$cairo_cv_]cr_feature[_]cr_var]m4_newline)
- CAIRO_ACCUMULATED_FEATURE_VARS_FOREACH([cr_var],
- [dnl
- CAIRO_ACCUMULATE_UNQUOTED_BEFORE(cr_var, [$]cr_feature[_]cr_var)
- ])dnl
- ],[dnl
- dnl If not enabled, empty the vars so no one accidentally uses them.
- CAIRO_FEATURE_VARS_FOREACH([cr_var], [cr_feature[_]cr_var[=$cairo_cv_]cr_feature[_]cr_var]m4_newline)
- ])dnl
-
- _CAIRO_FEATURE_HOOKS(cr_feature, cr_feature_name, cr_feature_default, cr_feature_what)dnl
-
- m4_popdef([cr_feature])dnl
- m4_popdef([cr_feature_name])dnl
- m4_popdef([cr_feature_what])dnl
- m4_popdef([cr_feature_default])dnl
- m4_popdef([cr_feature_commands])dnl
- m4_popdef([cr_feature_commands_len])dnl
- m4_popdef([cr_feature_arg])dnl
-])
-
-
-dnl ===========================================================================
-
-m4_define([_CAIRO_FEATURE_VARS])
-
-dnl
-dnl CAIRO_FEATURE_VARS_REGISTER(VARS, DEFAULT-VALUE=[])
-dnl
-dnl Registers variables to be collected from feature-enabling code segments.
-dnl VARS should be a whitespace-separate list of variable names.
-dnl
-dnl DEFAULT-VALUE is m4 macros to set default value of VARS
-dnl
-AC_DEFUN([CAIRO_FEATURE_VARS_REGISTER],
-[dnl
- m4_foreach_w([cr_var], [$1],
- [m4_append_uniq([_CAIRO_FEATURE_VARS], cr_var, [ ],,
- [m4_fatal([Feature variable `]cr_var[' already registered])])])dnl
- m4_foreach_w([cr_var], [$1],
- [dnl
- m4_define([cr_var_default_]cr_var[_value], m4_default([$2],[[$ac_env_[]]cr_feature[[]_]]cr_var[[_value]]))dnl
- ])dnl
-])
-
-dnl
-dnl CAIRO_FEATURE_VARS_FOREACH(VAR, COMMANDS)
-dnl
-dnl Run COMMANDS for each registered feature variable.
-dnl Defines VAR to the variable being processed.
-dnl
-AC_DEFUN([CAIRO_FEATURE_VARS_FOREACH],
-[dnl
- m4_foreach_w([$1], m4_defn([_CAIRO_FEATURE_VARS]), [$2])dnl
-])
-
-
-dnl ===========================================================================
-
-m4_define([_CAIRO_ACCUMULATORS])dnl
-
-m4_define([_CAIRO_ACCUMULATORS_REGISTER],
-[dnl
- m4_foreach_w([cr_var], [$1],
- [m4_append_uniq([_CAIRO_ACCUMULATORS], cr_var, [ ],,
- [m4_fatal([Accumulator `]cr_var[' already registered])])])dnl
- m4_foreach_w([cr_var], [$1], [m4_define([cr_acc_]cr_var[_sep], [$2])])dnl
- m4_foreach_w([cr_var], [$1], [[CAIRO_]cr_var[=$3]]m4_newline)dnl
- m4_foreach_w([cr_var], [$1], [m4_pattern_allow([CAIRO_]cr_var)])dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATORS_REGISTER(VARS, SEPARATOR=[], INITIAL-VALUE=[])
-dnl
-dnl Registers accumulators. An accumulator is a shell variable that can
-dnl be accumulated to. The macros take care of adding a SEPARATOR between
-dnl accumulated values.
-dnl
-dnl VARS should be a whitespace-separate list of variable names. The actual
-dnl shell variable resulting for each variable is prefixed with CAIRO_.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATORS_REGISTER],
-[dnl
- _CAIRO_ACCUMULATORS_REGISTER([$1],[$2],['$3'])dnl
-])dnl
-
-dnl
-dnl Like CAIRO_ACCUMULATORS_REGISTER but INITIAL-VALUE is left unquoted,
-dnl so it can reference other shell variables for example.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATORS_REGISTER_UNQUOTED],
-[dnl
- _CAIRO_ACCUMULATORS_REGISTER([$1],[$2],["$3"])dnl
-])dnl
-
-m4_define([_CAIRO_ACCUMULATOR_CHECK],
-[dnl
- m4_ifdef([cr_acc_$1_sep],,[m4_fatal([Accumulator ]$1[ not defined.])])dnl
-])dnl
-
-m4_define([_CAIRO_ACCUMULATE],
-[dnl
- _CAIRO_ACCUMULATOR_CHECK([$1])dnl
- m4_ifval([$2], [$3]m4_newline)dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATE(VAR, VALUE)
-dnl
-dnl Appends VALUE to accumulator VAR
-dnl
-AC_DEFUN([CAIRO_ACCUMULATE],
-[dnl
- _CAIRO_ACCUMULATE([$1], [$2], [CAIRO_$1="${CAIRO_$1}]m4_do([cr_acc_$1_sep])["'$2'])dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATE(VAR, VALUE)
-dnl
-dnl Prepends VALUE to accumulator VAR
-dnl
-AC_DEFUN([CAIRO_ACCUMULATE_BEFORE],
-[dnl
- _CAIRO_ACCUMULATE([$1], [$2], [CAIRO_$1='$2'"]m4_do([cr_acc_$1_sep])[${CAIRO_$1}"])dnl
-])dnl
-
-m4_define([_CAIRO_ACCUMULATE_UNQUOTED],
-[dnl
- _CAIRO_ACCUMULATOR_CHECK([$1])dnl
- m4_ifval([$2], [m4_bmatch([$2],[[$]],[test -n "$2" &&]) $3]m4_newline)dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATE_UNQUOTED(VAR, VALUE)
-dnl
-dnl Like CAIRO_ACCUMULATE but VALUE is left unquoted,
-dnl so it can reference other shell variables for example.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED],
-[dnl
- _CAIRO_ACCUMULATE_UNQUOTED([$1], [$2], [CAIRO_$1="${CAIRO_$1}]m4_do([cr_acc_$1_sep])[$2"])dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATE_UNQUOTED_BEFORE(VAR, VALUE)
-dnl
-dnl Like CAIRO_ACCUMULATE_BEFORE but VALUE is left unquoted,
-dnl so it can reference other shell variables for example.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATE_UNQUOTED_BEFORE],
-[dnl
- _CAIRO_ACCUMULATE_UNQUOTED([$1], [$2], [CAIRO_$1="$2]m4_do([cr_acc_$1_sep])[${CAIRO_$1}"])dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATORS_FOREACH(VAR, COMMANDS)
-dnl
-dnl Run COMMANDS for each registered accumulator.
-dnl Defines VAR to the accumulator being processed.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATORS_FOREACH],
-[dnl
- m4_foreach_w([$1], m4_defn([_CAIRO_ACCUMULATORS]), [$2])dnl
-])dnl
-
-
-dnl ===========================================================================
-
-m4_define([_CAIRO_ACCUMULATED_FEATURE_VARS])dnl
-
-dnl
-dnl CAIRO_ACCUMULATED_FEATURE_VARS_REGISTER(VARS, DEFAULT-VALUE=[], SEPARATOR=[], INITIAL-VALUE=[])
-dnl
-dnl Defines VARS as feature variables and accumulators. Also accumulates
-dnl (prepending, not appending) feature values for VARS.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATED_FEATURE_VARS_REGISTER],
-[dnl
- m4_foreach_w([cr_var], [$1],
- [m4_append_uniq([_CAIRO_ACCUMULATED_FEATURE_VARS], cr_var, [ ],,
- [m4_fatal([Accumulated feature variable `]cr_var[' already registered])])])dnl
- CAIRO_FEATURE_VARS_REGISTER([$1],[$2])dnl
- CAIRO_ACCUMULATORS_REGISTER_UNQUOTED([$1],[$3],[$4])dnl
-])dnl
-
-dnl
-dnl CAIRO_ACCUMULATED_FEATURE_VARS_FOREACH(VAR, COMMANDS)
-dnl
-dnl Run COMMANDS for each registered accumulated feature variable.
-dnl Defines VAR to the variable being processed.
-dnl
-AC_DEFUN([CAIRO_ACCUMULATED_FEATURE_VARS_FOREACH],
-[dnl
- m4_foreach_w([$1], m4_defn([_CAIRO_ACCUMULATED_FEATURE_VARS]), [$2])dnl
-])dnl
-
-dnl ===========================================================================
-
-dnl
-dnl CAIRO_FEATURE_IF_ENABLED(FEATURE=cr_feature, COMMANDS)
-dnl
-dnl Run COMMANDS if FEATURE is enabled.
-dnl
-AC_DEFUN([CAIRO_FEATURE_IF_ENABLED],
-[dnl
- AS_IF([test "x$use_]m4_default([$1], cr_feature)[" = xyes], [$2], [$3])dnl
-])dnl
-
-m4_define([_CAIRO_FEATURE_HOOK_MATCH_SH_BOOL],
-[dnl
- m4_case([$1],
- [*], [$3],
- [no], [AS_IF([test "x$2" != xyes], [:m4_newline()$3])],
- [yes], [AS_IF([test "x$2" = xyes], [:m4_newline()$3])],
- [m4_fatal([Invalid ENABLED value `]$1['])])dnl
-])dnl
-
-m4_define([_CAIRO_FEATURE_HOOK_MATCH_M4],
-[dnl
- m4_case([$1],
- [*], [$3],
- [$2], [$3],
- [!$2], ,
- [m4_bmatch([$1], [^!], [$3])])dnl
-])dnl
-
-m4_define([_CAIRO_FEATURE_HOOKS])dnl
-
-dnl
-dnl CAIRO_FEATURE_HOOK_REGISTER(ENABLED, DEFAULT, WHAT, COMMANDS)
-dnl
-dnl ENABLED is the feature enabledness to match
-dnl DEFAULT is the default value of features to match
-dnl WHAT is the type of features to match
-dnl COMMANDS is commands to run for matched features.
-dnl
-dnl Runs COMMANDS for features matching ENABLED, DEFAULT, and WHAT.
-dnl Hooks are run for each feature in the order they are added.
-dnl
-dnl DEFAULT and WHAT are matched like this:
-dnl [*] matches all values
-dnl [val] matches [val]
-dnl [!val] matches anything other than [val]
-dnl
-dnl ENABLED is matched like this:
-dnl [yes] matches enabled features
-dnl [no] matches disabled features
-dnl [*] matches all features
-dnl
-dnl The following macros can be used in COMMANDS:
-dnl
-dnl cr_feature expands to the feature id, eg "ft"
-dnl cr_feature_name expands to the human-readable name of the feature, eg. "FreeType font"
-dnl cr_feature_default expands to the default state of the feature:
-dnl "no" for experimental features, eg. your favorite new backend
-dnl "yes" for recommended features, eg. png functions
-dnl "auto" for other supported features, eg. xlib surface backend
-dnl "always" for mandatory features (can't be disabled), eg. image surface backend
-dnl cr_what expands to the type of feature:
-dnl "surface" for surface backends
-dnl "font" for font backends
-dnl "functions" for set of functions
-dnl "" for private configurations
-dnl
-dnl These four values are also set as $1 to $4. To know if feature was
-dnl enabled from within COMMANDS, use CAIRO_FEATURE_IF_ENABLED:
-dnl
-dnl CAIRO_FEATURE_IF_ENABLED($1, [IF-ENABLED], [IF-DISABLED])
-dnl
-dnl or compare $use_$1 to string "yes". As in:
-dnl
-dnl AS_IF([test "x$use_$1" = "xyes"], [IF-ENABLED], [IF-DISABLED])
-dnl
-AC_DEFUN([CAIRO_FEATURE_HOOK_REGISTER],
-[dnl
- m4_append([_CAIRO_FEATURE_HOOKS],
- [dnl
- _CAIRO_FEATURE_HOOK_MATCH_M4([$2], cr_feature_default,
- [_CAIRO_FEATURE_HOOK_MATCH_M4([$3], cr_feature_what,
- [_CAIRO_FEATURE_HOOK_MATCH_SH_BOOL([$1], [$use_]cr_feature,
- [$4]
- )])])dnl
- ], m4_newline)dnl
-])dnl
-
-
-
-dnl ===========================================================================
-dnl
-dnl Cairo-specific configuration facilities
-dnl
-dnl ===========================================================================
-
-
dnl
dnl Define macros to enable various features.
diff --git a/configure.ac b/configure.ac
index ec4d3eb..885ae0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,6 +6,7 @@ AC_INIT([cairo],
AC_CONFIG_SRCDIR(src/cairo.h)
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_AUX_DIR(build)
+AC_CONFIG_MACRO_DIR(build)
AM_INIT_AUTOMAKE([1.8 gnu -Wall no-define])
dnl ===========================================================================
diff --git a/doc/public/tmpl/cairo-image.sgml b/doc/public/tmpl/cairo-image.sgml
index 6ac615b..0cfcd87 100644
--- a/doc/public/tmpl/cairo-image.sgml
+++ b/doc/public/tmpl/cairo-image.sgml
@@ -31,7 +31,6 @@ This macro was added for completeness in cairo 1.8.
@Since: 1.8
-
<!-- ##### ENUM cairo_format_t ##### -->
<para>
diff --git a/doc/public/tmpl/cairo-user-fonts.sgml b/doc/public/tmpl/cairo-user-fonts.sgml
index 14b3257..c8f3534 100644
--- a/doc/public/tmpl/cairo-user-fonts.sgml
+++ b/doc/public/tmpl/cairo-user-fonts.sgml
@@ -33,7 +33,6 @@ this feature (1.8 and later).
@Since: 1.8
-
<!-- ##### USER_FUNCTION cairo_user_scaled_font_init_func_t ##### -->
<para>
More information about the cairo-commit
mailing list